From patchwork Mon Apr 9 01:27:25 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: misty@brew.sh X-Patchwork-Id: 8359 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp1932469jad; Sun, 8 Apr 2018 18:27:52 -0700 (PDT) X-Google-Smtp-Source: AIpwx48VFQGDfPAUNsvhIrIqJOFluxgvzK3RrQuNStRI9D9gXkKuaLy+xrYK7s5AQBLZjwTxzvdG X-Received: by 10.223.144.227 with SMTP id i90mr24242271wri.100.1523237272318; Sun, 08 Apr 2018 18:27:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1523237272; cv=none; d=google.com; s=arc-20160816; b=sOYShPEP2rqtD0EUZDHq7FwThUoAemhg4pB82fxoOES5F76GaarWWLL+2gKG7Zu7+M Ejbu9GD+WUvAGB1DT14Q1vc4ZxPwnSNpFcIUbDOLg/PPwgTdjxrOwLRepvtp9Lr8u9Jz KZdqFlD0w+bmwAPbBoSRIipw57EQtsoEQ3RhN50+GpYtWHJpL3P0KHwfSFukcEMjlC7W aXDRooBWJT+PPOGxF7mpd/UvSpnelrdJzSv4AY7yVh+jzbsSlHeBtixeIOAhqHDwANWS RWZ5fZrG8hSGfvqiOynHWVzA3m5mUm9JT0fCUy4qoEnLVCvPozxqlTm4NnqgYy+6ilb6 H26w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=EBqm+id8pxWYzjQn5BHz6JfbNMH4URT83uMGREKpsGs=; b=ojlLqBL3rfBulbfYBj/sa0cc+sNplEqCnNrfnOWhzhDUsi4uYC8/ugDer73t61ksHa kg27VQBeqf5LJRlyhsgNYeR0KwP/GSApEJY9D9aT6y093DQaLoUiCVROshOvSmZKvLRg a8ciJn/nyrfP4wkaRZSa2e6jrxNNYnjylPy5yvu6zsRaomuyVlzUkbtYnfHV9nBa2wE6 QNbWyWMgFOm+/6xUPFJPUAowsy/dXD/X9Gght7uQ1UovWT8HiezxMn4CLP/8GveoiLF+ ql4fgfSyaZM8EXewWZNY9e6OT+FuNSbZLfFaszSiviovtNJlVB6yCeDZb7R8j+3mCx85 rjPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=Xt9vlf5w; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 30si10335154wrl.63.2018.04.08.18.27.51; Sun, 08 Apr 2018 18:27:52 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=Xt9vlf5w; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5CDD6689E8B; Mon, 9 Apr 2018 04:27:18 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf0-f180.google.com (mail-pf0-f180.google.com [209.85.192.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E992F689223 for ; Mon, 9 Apr 2018 04:27:11 +0300 (EEST) Received: by mail-pf0-f180.google.com with SMTP id p6so1266593pfn.4 for ; Sun, 08 Apr 2018 18:27:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=3XK4pExrxegYwq+DWG2wFf2zKZflDTnTjMpTEKS/LXk=; b=Xt9vlf5wV+2CpaOn/D0T3EHbmp6YbS3tY1uIXRdDLMyTsoShK3m0gZmxN/ps/o/h26 9N1Syk7UW/VVpMZ/kIyd13aeHkaGoh0TL7w74Ht1PGOwGxO9OglTH4d1bkYlRJ3NavYV 0J1IvSTYXSWnVODmRAgltf1TcsU6gtX8iCAllmo4tyDYlUEmm1EWaZCzjMuykU20OGTK oEyK6LwlyWZJoRr8PbQYbfAY23iB862/sT4dOtlKJvMIqkUVyGbfQV3BCVOcaCKsuCoK lWo14zGRPWsldyDPPstY+MAOEJf61qAY05F+YzLulON7gnvyQBFMg+3Z6VU9c3/c8ygR PeyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=3XK4pExrxegYwq+DWG2wFf2zKZflDTnTjMpTEKS/LXk=; b=DPhtYFY7AsqCh1qQr11vn1IsSqYfZ+pqm27E267JQbWIhnoSKPRhDfgyiV8QL3Rm6t 6PsG1totZk7oGzTTnODYQO9PI3630xFVj/r+llTMPPilcigAC0V1F7ofpzaIUNEFuR2O ywFxcqonoX5d6IJwNlS7ZgN4/1q2go7F64ejzbVmLSjeqJSJ4+b42BCWq3QCG9FcTZwJ UyinGFCn8JJEdYlR06jAJpWkMP52N3Nh4STFyLARIJfA8poYs5bZSnR3Pkl8t1aUWBNG kns5qFBdfI1m+tTyZX16ccBd7PEx7YIblId2Dz9rbfcrH4jUkKez3LygCTfcfd2G6QFa lQ0A== X-Gm-Message-State: AElRT7H4lf5yRPx2nr6E40fDyrh2h6+km3r2e/t6iWvuUMqU1styUPlW huWiej7aKoNOCRMpftwD/R6qIpP2 X-Received: by 10.99.55.1 with SMTP id e1mr23697149pga.237.1523237253381; Sun, 08 Apr 2018 18:27:33 -0700 (PDT) Received: from Hyun-ae.hitronhub.home (S0106f0f24947ab63.vc.shawcable.net. [70.79.35.154]) by smtp.gmail.com with ESMTPSA id k1sm25316774pff.14.2018.04.08.18.27.32 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 08 Apr 2018 18:27:32 -0700 (PDT) From: misty@brew.sh To: ffmpeg-devel@ffmpeg.org Date: Sun, 8 Apr 2018 18:27:25 -0700 Message-Id: <20180409012725.90395-2-misty@brew.sh> X-Mailer: git-send-email 2.17.0 In-Reply-To: <20180409012725.90395-1-misty@brew.sh> References: <20180322025536.98508-2-misty@brew.sh> <20180409012725.90395-1-misty@brew.sh> Subject: [FFmpeg-devel] [PATCH 1/1] Sega FILM: set dts and duration when demuxing X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Misty De Meo MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Misty De Meo --- libavformat/segafilm.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/libavformat/segafilm.c b/libavformat/segafilm.c index 4c0cca0140..e72c26b144 100644 --- a/libavformat/segafilm.c +++ b/libavformat/segafilm.c @@ -270,6 +270,8 @@ static int film_read_packet(AVFormatContext *s, FilmDemuxContext *film = s->priv_data; AVIOContext *pb = s->pb; film_sample *sample; + film_sample *next_sample = NULL; + int next_sample_id; int ret = 0; if (film->current_sample >= film->sample_count) @@ -277,6 +279,20 @@ static int film_read_packet(AVFormatContext *s, sample = &film->sample_table[film->current_sample]; + /* Find the next sample from the same stream, assuming there is one; + * this is used to calculate the duration below */ + next_sample_id = film->current_sample + 1; + while (next_sample == NULL) { + if (next_sample_id >= film->sample_count) + break; + + next_sample = &film->sample_table[next_sample_id]; + if (next_sample->stream != sample->stream) { + next_sample = NULL; + next_sample_id++; + } + } + /* position the stream (will probably be there anyway) */ avio_seek(pb, sample->sample_offset, SEEK_SET); @@ -285,8 +301,11 @@ static int film_read_packet(AVFormatContext *s, ret = AVERROR(EIO); pkt->stream_index = sample->stream; + pkt->dts = sample->pts; pkt->pts = sample->pts; pkt->flags |= sample->keyframe ? AV_PKT_FLAG_KEY : 0; + if (next_sample != NULL) + pkt->duration = next_sample->pts - sample->pts; film->current_sample++;