[FFmpeg-trac] #3178(undetermined:new): AVFrame.best_effort_timestamp and/or AVFrame.pkt_dts gives wrong output

FFmpeg trac at avcodec.org
Thu Nov 28 12:09:40 CET 2013


#3178: AVFrame.best_effort_timestamp and/or AVFrame.pkt_dts gives wrong output
-------------------------------------+-------------------------------------
             Reporter:  gjdfgh       |                    Owner:
                 Type:  defect       |                   Status:  new
             Priority:  normal       |                Component:
              Version:  unspecified  |  undetermined
             Keywords:               |               Resolution:
             Blocking:               |               Blocked By:
Analyzed by developer:  0            |  Reproduced by developer:  0
-------------------------------------+-------------------------------------

Old description:

> The test file can be found in http://www.cccp-
> project.net/beta/test_files/ under the filename given in the log. As you
> can see, the first timestamp is 42 instead of 0. This is because pkt_dts
> returns the second packet's timestamp, instead of the first packet's.
> Apparently, pkt_dts is supposed to follow the codec delay (and in the
> case, the codec delay is 1), and the first packet's dts is supposed to be
> negative. However, this is not how it works for vfw-muxed MKV (this file;
> has DTS starting with 0), mpeg4 in AVI files (have DTS starting with 0),
> and mpeg4 in OGM (has DTS starting ewith 0, and PTS incorrectly set to
> DTS).
>
> Log follows. It has the patch "[PATCH] ffprobe: output
> best_effort_timestamp" from ffmpeg-devel applied to print the
> best_effort_timestamp. If you want "full uncut console output", please
> increase TRAC's ticket description limit to at least 566 KB.
>
> {{{
> ffprobe version N-58486-g52bbc4f Copyright (c) 2007-2013 the FFmpeg
> developers
>   built on Nov 28 2013 11:37:00 with gcc 4.8 (Debian 4.8.2-5)
>   configuration: --prefix=/tmp/ffmpeg-bin
>   libavutil      52. 55.100 / 52. 55.100
>   libavcodec     55. 44.100 / 55. 44.100
>   libavformat    55. 21.102 / 55. 21.102
>   libavdevice    55.  5.101 / 55.  5.101
>   libavfilter     3. 91.100 /  3. 91.100
>   libswscale      2.  5.101 /  2.  5.101
>   libswresample   0. 17.104 /  0. 17.104
> Input #0, matroska,webm, from '/tmp/[CCCP]_Mega_Lossless_Audio_Test.mkv':
>   Metadata:
>     title           : Macross Plus - Episode 4 Intro
>     creation_time   : 2006-08-03 02:20:28
>   Duration: 00:00:56.22, start: 0.000000, bitrate: 15003 kb/s
>     Stream #0:0(eng): Video: mpeg4 (Advanced Simple Profile) (XVID /
> 0x44495658), yuv420p, 672x464 [SAR 1:1 DAR 42:29], SAR 58:63 DAR 4:3,
> 23.98 fps, 23.98 tbr, 1k tbn, 23.98 tbc (default)
>     Metadata:
>       title           : Macross Plus - Episode 4 Intro
>     Stream #0:1(eng): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
> (default)
>     Metadata:
>       title           : AC3 6ch Audio
>     Stream #0:2(jpn): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
>     Metadata:
>       title           : AC3 2ch Audio
>     Stream #0:3(eng): Audio: flac, 48000 Hz, 5.1(side), s16
>     Metadata:
>       title           : FLAC 6ch Audio
>     Stream #0:4(jpn): Audio: flac, 48000 Hz, stereo, s16
>     Metadata:
>       title           : FLAC 2ch Audio
>     Stream #0:5(eng): Audio: tta, 48000 Hz, 5.1, s16
>     Metadata:
>       title           : TTA 6ch Audio
>     Stream #0:6(jpn): Audio: tta, 48000 Hz, stereo, s16
>     Metadata:
>       title           : TTA 2ch Audio
>     Stream #0:7(eng): Audio: wavpack, 48000 Hz, 5.1, s16p
>     Metadata:
>       title           : WV Lossy 6ch Audio
>     Stream #0:8(jpn): Audio: wavpack, 48000 Hz, stereo, s16p
>     Metadata:
>       title           : WV Lossy 2ch Audio
>     Stream #0:9(eng): Audio: wavpack, 48000 Hz, 5.1, s16p
>     Metadata:
>       title           : WV Hybrid 6ch Audio
>     Stream #0:10(jpn): Audio: wavpack, 48000 Hz, stereo, s16p
>     Metadata:
>       title           : WV Hybrid 2ch Audio
>     Stream #0:11(eng): Audio: wavpack, 48000 Hz, 5.1, s16p
>     Metadata:
>       title           : WV Lossless 6ch Audio
>     Stream #0:12(jpn): Audio: wavpack, 48000 Hz, stereo, s16p
>     Metadata:
>       title           : WV Lossless 2ch Audio
>     Stream #0:13(eng): Subtitle: subrip (default)
>     Metadata:
>       title           : English Subtitles (SRT)
>     Stream #0:14(eng): Subtitle: subrip
>     Metadata:
>       title           : Closed Captions (SRT)
> [mpeg4 @ 0x91779a0] Video uses a non-standard and wasteful way to store
> B-frames ('packed B-frames'). Consider using a tool like VirtualDub or
> avidemux to fix it.
> [FRAME]
> media_type=video
> key_frame=1
> pkt_pts=N/A
> pkt_pts_time=N/A
> pkt_dts=42
> pkt_dts_time=0.042000
> best_effort_timestamp=42
> best_effort_timestamp_time=0.042000
> pkt_duration=41
> pkt_duration_time=0.041000
> pkt_pos=7412
> pkt_size=16700
> width=672
> height=464
> pix_fmt=yuv420p
> sample_aspect_ratio=58:63
> pict_type=I
> coded_picture_number=0
> display_picture_number=0
> interlaced_frame=0
> top_field_first=0
> repeat_pict=0
> [/FRAME]
> }}}

New description:

 The test file can be found in http://www.cccp-project.net/beta/test_files/
 under the filename given in the log. As you can see, the first timestamp
 is 42 instead of 0. This is because pkt_dts returns the second packet's
 timestamp, instead of the first packet's. Apparently, pkt_dts is supposed
 to follow the codec delay (and in the case, the codec delay is 1), and the
 first packet's dts is supposed to be negative. However, this is not how it
 works for vfw-muxed MKV (this file; has DTS starting with 0), mpeg4 in AVI
 files (have DTS starting with 0), and mpeg4 in OGM (has DTS starting ewith
 0, and PTS incorrectly set to DTS).

 Log follows. It has the patch "[PATCH] ffprobe: output
 best_effort_timestamp" from ffmpeg-devel applied to print the
 best_effort_timestamp. If you want "full uncut console output", please
 increase TRAC's ticket description limit to at least 566 KB.

 {{{
 $ ./ffprobe /tmp/\[CCCP\]_Mega_Lossless_Audio_Test.mkv  -select_streams 0
 -show_frames
 ffprobe version N-58486-g52bbc4f Copyright (c) 2007-2013 the FFmpeg
 developers
   built on Nov 28 2013 11:37:00 with gcc 4.8 (Debian 4.8.2-5)
   configuration: --prefix=/tmp/ffmpeg-bin
   libavutil      52. 55.100 / 52. 55.100
   libavcodec     55. 44.100 / 55. 44.100
   libavformat    55. 21.102 / 55. 21.102
   libavdevice    55.  5.101 / 55.  5.101
   libavfilter     3. 91.100 /  3. 91.100
   libswscale      2.  5.101 /  2.  5.101
   libswresample   0. 17.104 /  0. 17.104
 Input #0, matroska,webm, from '/tmp/[CCCP]_Mega_Lossless_Audio_Test.mkv':
   Metadata:
     title           : Macross Plus - Episode 4 Intro
     creation_time   : 2006-08-03 02:20:28
   Duration: 00:00:56.22, start: 0.000000, bitrate: 15003 kb/s
     Stream #0:0(eng): Video: mpeg4 (Advanced Simple Profile) (XVID /
 0x44495658), yuv420p, 672x464 [SAR 1:1 DAR 42:29], SAR 58:63 DAR 4:3,
 23.98 fps, 23.98 tbr, 1k tbn, 23.98 tbc (default)
     Metadata:
       title           : Macross Plus - Episode 4 Intro
     Stream #0:1(eng): Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
 (default)
     Metadata:
       title           : AC3 6ch Audio
     Stream #0:2(jpn): Audio: ac3, 48000 Hz, stereo, fltp, 192 kb/s
     Metadata:
       title           : AC3 2ch Audio
     Stream #0:3(eng): Audio: flac, 48000 Hz, 5.1(side), s16
     Metadata:
       title           : FLAC 6ch Audio
     Stream #0:4(jpn): Audio: flac, 48000 Hz, stereo, s16
     Metadata:
       title           : FLAC 2ch Audio
     Stream #0:5(eng): Audio: tta, 48000 Hz, 5.1, s16
     Metadata:
       title           : TTA 6ch Audio
     Stream #0:6(jpn): Audio: tta, 48000 Hz, stereo, s16
     Metadata:
       title           : TTA 2ch Audio
     Stream #0:7(eng): Audio: wavpack, 48000 Hz, 5.1, s16p
     Metadata:
       title           : WV Lossy 6ch Audio
     Stream #0:8(jpn): Audio: wavpack, 48000 Hz, stereo, s16p
     Metadata:
       title           : WV Lossy 2ch Audio
     Stream #0:9(eng): Audio: wavpack, 48000 Hz, 5.1, s16p
     Metadata:
       title           : WV Hybrid 6ch Audio
     Stream #0:10(jpn): Audio: wavpack, 48000 Hz, stereo, s16p
     Metadata:
       title           : WV Hybrid 2ch Audio
     Stream #0:11(eng): Audio: wavpack, 48000 Hz, 5.1, s16p
     Metadata:
       title           : WV Lossless 6ch Audio
     Stream #0:12(jpn): Audio: wavpack, 48000 Hz, stereo, s16p
     Metadata:
       title           : WV Lossless 2ch Audio
     Stream #0:13(eng): Subtitle: subrip (default)
     Metadata:
       title           : English Subtitles (SRT)
     Stream #0:14(eng): Subtitle: subrip
     Metadata:
       title           : Closed Captions (SRT)
 [mpeg4 @ 0x91779a0] Video uses a non-standard and wasteful way to store
 B-frames ('packed B-frames'). Consider using a tool like VirtualDub or
 avidemux to fix it.
 [FRAME]
 media_type=video
 key_frame=1
 pkt_pts=N/A
 pkt_pts_time=N/A
 pkt_dts=42
 pkt_dts_time=0.042000
 best_effort_timestamp=42
 best_effort_timestamp_time=0.042000
 pkt_duration=41
 pkt_duration_time=0.041000
 pkt_pos=7412
 pkt_size=16700
 width=672
 height=464
 pix_fmt=yuv420p
 sample_aspect_ratio=58:63
 pict_type=I
 coded_picture_number=0
 display_picture_number=0
 interlaced_frame=0
 top_field_first=0
 repeat_pict=0
 [/FRAME]
 }}}

--

Comment (by ubitux):

 (Added command)

--
Ticket URL: <https://trac.ffmpeg.org/ticket/3178#comment:2>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list