[FFmpeg-trac] #6677(avcodec:open): mpeg2 decoder always output some redundant dummy frames for interlace videos
FFmpeg
trac at avcodec.org
Thu Sep 21 19:20:02 EEST 2017
#6677: mpeg2 decoder always output some redundant dummy frames for interlace
videos
-------------------------------------+-------------------------------------
Reporter: lizhong1008 | Owner:
Type: defect | Status: open
Priority: important | Component: avcodec
Version: git-master | Resolution:
Keywords: mpeg2video | Blocked By:
regression | Reproduced by developer: 1
Blocking: |
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Changes (by cehoyos):
* keywords: mpeg2 decoder => mpeg2video regression
* priority: normal => important
* status: new => open
* reproduced: 0 => 1
Old description:
> Summary of the bug:
> If a mpeg2 video is a field video, ffmpeg will always insert a dummy
> frame when decoding the first key filed picture. And the dummy frame will
> be output later.
> Take the attachment file (tcela-8-fp-dp.bits.mpeg2) as example, this clip
> has 4 frames (8 fields), but 5 frames will be output after decoding, the
> first output frame is a redundant dummy frame.
>
> How to reproduce:
> ffmpeg -i /root/Videos/yami_mpeg2/tcela-8-fp-dp.bits.mpeg2 -pix_fmt
> yuv420p /root/Videos/tcela-8-fp-dp.bits.mpeg_sw_720x480.yuv
> ffmpeg version N-87349-g0426e77108 Copyright (c) 2000-2017 the FFmpeg
> developers
> built with gcc 6.3.0 (Ubuntu 6.3.0-12ubuntu2) 20170406
> configuration: --prefix=/opt/X11R7/ --enable-vaapi --enable-libx264
> --enable-libx265 --enable-gpl --disable-optimizations --enable-debug=3
> libavutil 55. 75.100 / 55. 75.100
> libavcodec 57.106.101 / 57.106.101
> libavformat 57. 82.101 / 57. 82.101
> libavdevice 57. 8.101 / 57. 8.101
> libavfilter 6.105.100 / 6.105.100
> libswscale 4. 7.103 / 4. 7.103
> libswresample 2. 8.100 / 2. 8.100
> libpostproc 54. 6.100 / 54. 6.100
> [mpegvideo @ 0x557bd94c37e0] Estimating duration from bitrate, this may
> be inaccurate
> Input #0, mpegvideo, from '/root/Videos/yami_mpeg2/tcela-8-fp-
> dp.bits.mpeg2':
> Duration: 00:00:00.15, bitrate: 15000 kb/s
> Stream #0:0: Video: mpeg2video (Main), yuv420p(tv, bottom first),
> 720x480 [SAR 8:9 DAR 4:3], 15000 kb/s, 30 fps, 30 tbr, 1200k tbn, 60 tbc
> Stream mapping:
> Stream #0:0 -> #0:0 (mpeg2video (native) -> rawvideo (native))
> Press [q] to stop, [?] for help
> Output #0, rawvideo, to '/root/Videos/tcela-8-fp-
> dp.bits.mpeg_sw_720x480.yuv':
> Metadata:
> encoder : Lavf57.82.101
> Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 720x480
> [SAR 8:9 DAR 4:3], q=2-31, 124416 kb/s, 30 fps, 30 tbn, 30 tbc
> Metadata:
> encoder : Lavc57.106.101 rawvideo
> frame= 5 fps=0.0 q=-0.0 Lsize= 2531kB time=00:00:00.16
> bitrate=124415.8kbits/s speed=18.1x
> video:2531kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
> muxing overhead: 0.000000%
New description:
Summary of the bug:
If a mpeg2 video is a field video, ffmpeg will always insert a dummy frame
when decoding the first key filed picture. And the dummy frame will be
output later.
Take the attachment file (tcela-8-fp-dp.bits.mpeg2) as example, this clip
has 4 frames (8 fields), but 5 frames will be output after decoding, the
first output frame is a redundant dummy frame.
How to reproduce:
{{{
ffmpeg -i /root/Videos/yami_mpeg2/tcela-8-fp-dp.bits.mpeg2 -pix_fmt
yuv420p /root/Videos/tcela-8-fp-dp.bits.mpeg_sw_720x480.yuv
ffmpeg version N-87349-g0426e77108 Copyright (c) 2000-2017 the FFmpeg
developers
built with gcc 6.3.0 (Ubuntu 6.3.0-12ubuntu2) 20170406
configuration: --prefix=/opt/X11R7/ --enable-vaapi --enable-libx264
--enable-libx265 --enable-gpl --disable-optimizations --enable-debug=3
libavutil 55. 75.100 / 55. 75.100
libavcodec 57.106.101 / 57.106.101
libavformat 57. 82.101 / 57. 82.101
libavdevice 57. 8.101 / 57. 8.101
libavfilter 6.105.100 / 6.105.100
libswscale 4. 7.103 / 4. 7.103
libswresample 2. 8.100 / 2. 8.100
libpostproc 54. 6.100 / 54. 6.100
[mpegvideo @ 0x557bd94c37e0] Estimating duration from bitrate, this may be
inaccurate
Input #0, mpegvideo, from '/root/Videos/yami_mpeg2/tcela-8-fp-
dp.bits.mpeg2':
Duration: 00:00:00.15, bitrate: 15000 kb/s
Stream #0:0: Video: mpeg2video (Main), yuv420p(tv, bottom first),
720x480 [SAR 8:9 DAR 4:3], 15000 kb/s, 30 fps, 30 tbr, 1200k tbn, 60 tbc
Stream mapping:
Stream #0:0 -> #0:0 (mpeg2video (native) -> rawvideo (native))
Press [q] to stop, [?] for help
Output #0, rawvideo, to '/root/Videos/tcela-8-fp-
dp.bits.mpeg_sw_720x480.yuv':
Metadata:
encoder : Lavf57.82.101
Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 720x480
[SAR 8:9 DAR 4:3], q=2-31, 124416 kb/s, 30 fps, 30 tbn, 30 tbc
Metadata:
encoder : Lavc57.106.101 rawvideo
frame= 5 fps=0.0 q=-0.0 Lsize= 2531kB time=00:00:00.16
bitrate=124415.8kbits/s speed=18.1x
video:2531kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 0.000000%
}}}
--
Comment:
Regression since 99e07a4453732058df90885f80b3db3b4f37cb3c, I wonder if
there is a relation with #3690 (which shows another commit but also grey
frames).
--
Ticket URL: <https://trac.ffmpeg.org/ticket/6677#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list