From patchwork Wed Mar 21 20:36:38 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sasi Inguva X-Patchwork-Id: 8078 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.1.70 with SMTP id c67csp29539jad; Wed, 21 Mar 2018 13:43:41 -0700 (PDT) X-Google-Smtp-Source: AG47ELtGffSJ0dFFbks+gQGZmW750yFjxKEGOLayvK2nU0BCU3sbh/3hbrk7nH5Z1dx3UzrHACLh X-Received: by 10.28.47.212 with SMTP id v203mr3672548wmv.156.1521665021615; Wed, 21 Mar 2018 13:43:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1521665021; cv=none; d=google.com; s=arc-20160816; b=vulo3rxkp0RMQVnwYAdu8niEoEk0csjQuzxd4gKoqUbkIPo/USVn+wmhRpCNCMBlwi a5jHFMM1hE9rp2qA2jrNHL3qld+qjNVsyQ/We1ejSVuTKV9SvsQ2oYhT9+haSHmy1o2f /3d67p98dC34UwpA32YsKZR/PicHCaiFggrh7/MW2MbC7nnXEYBSFJ7u5TGh1zW6cIsg HA22Z6H7HDT4V5TubGbimil6WVGAXKxLolZL5XXH8NeaHq7vhPoNMi/tzaLUwRSZPwOj tG9g4qNUKm8yXFFaD2wpmW4dqqg+bmJGdy8+tSyCSns0TRX4i2XaKU144gDTbcBTH9fU cPbQ== 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=F0zZv11XAOtGNsCBpLEeC80lfnwx3Cr7+WvahtMISZA=; b=WpxpyEGLlnvHlLpv0ZpsYNaOF4m4Hw8SiEguV6SjKrZIimWa02KKPr7oiDbuChvW7A ZwNGbRUMy74WHXiyx8uVefCktIddQEwmr6HqGaMnEJ1nF5PX45uPM91gAaG8ZD9C+QBe T0KAoMxbtw6op7sR4ZI5qZCQJQ86yJuE8W1SFxlsWIi7cgRgyEV3RLPBZY6lOilplKWQ M8+MsqbomcZ02YCKOGRwNfFg9d49mcyUXVrBqzkxRbofleESQpVi4kYtf2ybY9r0oDgA L++DKnwEi0YBeoM1Tuh5bv+rLjSIAikxiCl7k5IIKqhIKx4BmYh++wF1SCPSSMMWbLiW UpNg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20161025 header.b=Kge+gBkJ; 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 s3si3655238wra.67.2018.03.21.13.43.41; Wed, 21 Mar 2018 13:43:41 -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=@google.com header.s=20161025 header.b=Kge+gBkJ; 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 DFD56680877; Wed, 21 Mar 2018 22:43:24 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg0-f66.google.com (mail-pg0-f66.google.com [74.125.83.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0E82B6802D7 for ; Wed, 21 Mar 2018 22:43:18 +0200 (EET) Received: by mail-pg0-f66.google.com with SMTP id t12so627881pgp.13 for ; Wed, 21 Mar 2018 13:43:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=9AJuRkfdqNq7dNOxOwtS8InenRrwcih+9Q5E1PysqVQ=; b=Kge+gBkJuy7ihp9wRCT4LPvNLwExf9GrWxwVQLBDumlS6dZlSZpbn8K+DFTpPe9Ce5 eT8A9cRuP6Z4U9pE9aOxaLizrRjp3E9D3NA4t1pzpDZBwTLCdBP4toahltpzqP+1K/Ju +Cj0Q/C6mTpV+j6GKrQhrGNlvshFV6s1FssrzSiNAgz99GCQcuY2hlDGeGpLAzS/wPDQ e1sLENM6Mf0jQjbBrxDfbvYqaFVcFquFiGHtXUdQbi9K6hf0WXcU2wpX1hHHiABW6f9p 64djHgXiZXNqnb3Vs/1ut/l+ua6dMiVnju0+5xNCjTwtPi8qcD1hUzsgw4CjI2vHWmzc 1Vew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=9AJuRkfdqNq7dNOxOwtS8InenRrwcih+9Q5E1PysqVQ=; b=RcPv9GxogkEgmhZnnKTdBCb/w0Ti1k7u2aN30lP/+PspbKUTaaQE9PKrw+G/1WXb4A i4McM6rxAI/xrSpQX5/PgMRWbcqgwvtt252309vJ125zKSliuHE4j+Tvw0djcyT4t8xT IrlAT26UsfI2gwPAeik4X+o/AaO3nPYROnPXTHYp3qKglKdPXj3p7c/ZZwXpxGQXvs+x yZczcyz5UGrOddr4P7wV/ak/y3cHRz0KBe496LHZuktqaaFU5kV1EYdovbnbzIkG8RE4 TfbLg+jhMPRWFmV4HlJYO8m7U6Ai2tbbRcRGLJE4Z0cl5hr6RcVgjhFpkU56FOdoGZpY j0Vw== X-Gm-Message-State: AElRT7GMQ+qGSJUGsFyGRnTJ+Wiihj+EVT39X+APmrQwsZ0CjV+xNsFN 3lz8K6tIF7Ej94MG4a79OjYxIeietEI= X-Received: by 10.99.105.70 with SMTP id e67mr725972pgc.342.1521664625334; Wed, 21 Mar 2018 13:37:05 -0700 (PDT) Received: from isasi.mtv.corp.google.com ([2620:0:1000:4001:9a31:e971:b584:8af7]) by smtp.gmail.com with ESMTPSA id z6sm9311125pfe.9.2018.03.21.13.37.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 21 Mar 2018 13:37:04 -0700 (PDT) From: Sasi Inguva X-Google-Original-From: Sasi Inguva To: ffmpeg-devel@ffmpeg.org Date: Wed, 21 Mar 2018 13:36:38 -0700 Message-Id: <20180321203638.210830-1-isasi@isasi.mtv.corp.google.com> X-Mailer: git-send-email 2.17.0.rc0.231.g781580f067-goog In-Reply-To: References: Subject: [FFmpeg-devel] [PATCH] lavf/utils.c: Don't compute start_time from DISCARD packets for video. 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: Sasi Inguva MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Sasi Inguva --- libavformat/utils.c | 4 +++- tests/fate/mov.mak | 10 +++++++- tests/ref/fate/mov-neg-firstpts-discard | 3 +++ .../ref/fate/mov-neg-firstpts-discard-frames | 24 +++++++++++++++++++ 4 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 tests/ref/fate/mov-neg-firstpts-discard create mode 100644 tests/ref/fate/mov-neg-firstpts-discard-frames diff --git a/libavformat/utils.c b/libavformat/utils.c index 4d0b56c2a8..f13c8208b1 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -1158,7 +1158,9 @@ static void update_initial_timestamps(AVFormatContext *s, int stream_index, } if (st->start_time == AV_NOPTS_VALUE) { - st->start_time = pts; + if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO || !(pkt->flags & AV_PKT_FLAG_DISCARD)) { + st->start_time = pts; + } if (st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO && st->codecpar->sample_rate) st->start_time += av_rescale_q(st->skip_samples, (AVRational){1, st->codecpar->sample_rate}, st->time_base); } diff --git a/tests/fate/mov.mak b/tests/fate/mov.mak index 64f92e9488..84ca20bb9f 100644 --- a/tests/fate/mov.mak +++ b/tests/fate/mov.mak @@ -13,8 +13,10 @@ FATE_MOV = fate-mov-3elist \ fate-mov-elst-ends-betn-b-and-i \ fate-mov-frag-overlap \ fate-mov-bbi-elst-starts-b \ + fate-mov-neg-firstpts-discard-frames \ -FATE_MOV_FFPROBE = fate-mov-aac-2048-priming \ +FATE_MOV_FFPROBE = fate-mov-neg-firstpts-discard \ + fate-mov-aac-2048-priming \ fate-mov-zombie \ fate-mov-init-nonkeyframe \ fate-mov-displaymatrix \ @@ -72,6 +74,12 @@ fate-mov-frag-overlap: CMD = framemd5 -i $(TARGET_SAMPLES)/mov/frag_overlap.mp4 # GOP structure : B B I in presentation order. fate-mov-bbi-elst-starts-b: CMD = framemd5 -flags +bitexact -acodec aac_fixed -i $(TARGET_SAMPLES)/h264/twofields_packet.mp4 +# Makes sure that the stream start_time is not negative when the first packet is a DISCARD packet with negative timestamp. +fate-mov-neg-firstpts-discard: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_entries stream=start_time -bitexact $(TARGET_SAMPLES)/mov/mov_neg_first_pts_discard.mov + +# Makes sure that expected frames are generated for mov_neg_first_pts_discard.mov with -vsync 1 +fate-mov-neg-firstpts-discard-frames: CMD = framemd5 -flags +bitexact -i $(TARGET_SAMPLES)/mov/mov_neg_first_pts_discard.mov -vsync 1 + fate-mov-aac-2048-priming: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_packets -print_format compact $(TARGET_SAMPLES)/mov/aac-2048-priming.mov fate-mov-zombie: CMD = run ffprobe$(PROGSSUF)$(EXESUF) -show_streams -show_packets -show_frames -bitexact -print_format compact $(TARGET_SAMPLES)/mov/white_zombie_scrunch-part.mov diff --git a/tests/ref/fate/mov-neg-firstpts-discard b/tests/ref/fate/mov-neg-firstpts-discard new file mode 100644 index 0000000000..7c982d3ffe --- /dev/null +++ b/tests/ref/fate/mov-neg-firstpts-discard @@ -0,0 +1,3 @@ +[STREAM] +start_time=N/A +[/STREAM] diff --git a/tests/ref/fate/mov-neg-firstpts-discard-frames b/tests/ref/fate/mov-neg-firstpts-discard-frames new file mode 100644 index 0000000000..81b59b384b --- /dev/null +++ b/tests/ref/fate/mov-neg-firstpts-discard-frames @@ -0,0 +1,24 @@ +#format: frame checksums +#version: 2 +#hash: MD5 +#tb 0: 1/30 +#media_type 0: video +#codec_id 0: rawvideo +#dimensions 0: 320x240 +#sar 0: 1/1 +#stream#, dts, pts, duration, size, hash +0, 0, 0, 1, 115200, 1e55263b359b4c99c3463655a1120f11 +0, 1, 1, 1, 115200, ce33efea81064e7c23deb57dc4c21995 +0, 2, 2, 1, 115200, 42234f25d6191ab13c3676a7937c921b +0, 3, 3, 1, 115200, eab2ccb227c66cba4c9feb8cdbf28ef8 +0, 4, 4, 1, 115200, c8816e0b151b2c892163e35086918520 +0, 5, 5, 1, 115200, c633f5604c8651165d551ee88fb4cd92 +0, 6, 6, 1, 115200, 5f3f8530d720fef3ac4c937e7f488ea7 +0, 7, 7, 1, 115200, be24a583909ca92008b642f39be02685 +0, 8, 8, 1, 115200, 83872a6e5c3369fe76f684de31bd9a36 +0, 9, 9, 1, 115200, 4629d6eb656883b337e8e0b381f2db8d +0, 10, 10, 1, 115200, f6bec55bc026440d23a44b948900e785 +0, 11, 11, 1, 115200, 7e12e8113916305c79e5d08354acc9ae +0, 12, 12, 1, 115200, d315c0093536642d340ea50de3b2bfbb +0, 13, 13, 1, 115200, 3d12b24aaed72bfada4a1a3e5e02945a +0, 14, 14, 1, 115200, 070d6b8935c11304d8f9520c4401a130