diff mbox

[FFmpeg-devel] lavf/utils.c: Don't compute start_time from DISCARD packets for video.

Message ID 20180321203346.209944-1-isasi@isasi.mtv.corp.google.com
State Superseded
Headers show

Commit Message

Sasi Inguva March 21, 2018, 8:33 p.m. UTC
Signed-off-by: Sasi Inguva <isasi@isasi.mtv.corp.google.com>
---
 libavformat/utils.c |  4 +++-
 tests/fate/mov.mak  | 10 +++++++++-
 2 files changed, 12 insertions(+), 2 deletions(-)

Comments

Sasi Inguva March 21, 2018, 8:35 p.m. UTC | #1
Attaching fate sample.

On Wed, Mar 21, 2018 at 1:33 PM, Sasi Inguva <isasi@google.com> wrote:

> Signed-off-by: Sasi Inguva <isasi@isasi.mtv.corp.google.com>
> ---
>  libavformat/utils.c |  4 +++-
>  tests/fate/mov.mak  | 10 +++++++++-
>  2 files changed, 12 insertions(+), 2 deletions(-)
>
> 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
> --
> 2.17.0.rc0.231.g781580f067-goog
>
>
Michael Niedermayer March 21, 2018, 9:55 p.m. UTC | #2
On Wed, Mar 21, 2018 at 01:35:05PM -0700, Sasi Inguva wrote:
> Attaching fate sample.

sample uploded

thx

[...]
Sasi Inguva March 23, 2018, 8:11 p.m. UTC | #3
friendly ping

On Wed, Mar 21, 2018 at 2:55 PM, Michael Niedermayer <michaelni@gmx.at>
wrote:

> On Wed, Mar 21, 2018 at 01:35:05PM -0700, Sasi Inguva wrote:
> > Attaching fate sample.
>
> sample uploded
>
> thx
>
> [...]
>
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> Take away the freedom of one citizen and you will be jailed, take away
> the freedom of all citizens and you will be congratulated by your peers
> in Parliament.
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
>
diff mbox

Patch

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