[FFmpeg-trac] #4168(ffmpeg:new): defect : mpeg2 interlaced yuv420 chroma incorrectly decoded

FFmpeg trac at avcodec.org
Mon Dec 8 16:21:04 CET 2014


#4168: defect : mpeg2 interlaced yuv420 chroma incorrectly decoded
-------------------------------------+-------------------------------------
             Reporter:  clam         |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:  ffmpeg       |                  Version:  git-
             Keywords:  mpeg2 vob    |  master
  chroma interlaced                  |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug:
 When using an interlaced mpeg2 source, the yuv420 chroma is interpreted as
 progressive chroma instead of interlaced chroma.

 This bug is present when decoding the following mpeg2 formats : VOB, MPEG-
 PS, MPEG-TS.

 avcodec seems to decode interlaced videos using yuv420p pixel format, but
 it should instead default to any 422 format in this case (or a yuv420i
 format, but it looks to be unavailable in ffmpeg).

 In addition, -pxl_fmt seems to be ineffective to force the input decode
 (ffmpeg fires an error : 'Option pixel_format not found'). Looks like it's
 unsupported by the mpeg2video decoder.

 => the bottomline is that yuv420 chroma coding is different in progressive
 and interlaced. In the latter pixel format, odd and even lines don't share
 the same chroma data.

 This bug generates such chroma artifacts that the quality of the video is
 greatly degraded when it needs to be deinterlaced/scaled/transcoded after
 the ffmpeg conversion.


 How to reproduce:

 To be able to easily check for the bug, the odd and even fields should
 have a heavy chroma variation but a light luma variation (ie same
 luminosity but different colors). Blue and Red are the best candidates.
 The bug is not dependant of the output pixel_format. Here I output a
 prores422 file but it's the same with a rawvideo avi.

 NOTE : the mpeg2 files I used were correctly detected as interlaced by any
 other video converter/analyzer.

 {{{
 D:\>d:\ffmpeg\bin\ffmpeg -f mpeg -i bug.vob -c:v prores test.mov
 ffmpeg version N-68289-g208c03a Copyright (c) 2000-2014 the FFmpeg
 developers
   built on Dec  7 2014 22:13:45 with gcc 4.9.2 (GCC)
   configuration: --enable-gpl --enable-version3 --disable-w32threads
 --enable-av
 isynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls
 --enab
 le-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-
 libcaca --
 enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc
 --enable-lib
 modplug --enable-libmp3lame --enable-libopencore-amrnb --enable-
 libopencore-amrw
 b --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-
 libschroedinge
 r --enable-libsoxr --enable-libspeex --enable-libtheora --enable-
 libtwolame --en
 able-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-
 libvorbis
  --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264
 --enable-
 libx265 --enable-libxavs --enable-libxvid --enable-decklink --enable-zlib
   libavutil      54. 15.100 / 54. 15.100
   libavcodec     56. 14.100 / 56. 14.100
   libavformat    56. 15.102 / 56. 15.102
   libavdevice    56.  3.100 / 56.  3.100
   libavfilter     5.  2.103 /  5.  2.103
   libswscale      3.  1.101 /  3.  1.101
   libswresample   1.  1.100 /  1.  1.100
   libpostproc    53.  3.100 / 53.  3.100
 Guessed Channel Layout for  Input Stream #0.2 : stereo
 Input #0, mpeg, from 'bug.vob':
   Duration: 00:04:11.26, start: 275.223311, bitrate: 9343 kb/s
     Stream #0:0[0x1bf]: Data: dvd_nav_packet
     Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, smpte170m),
 720x48
 0 [SAR 32:27 DAR 16:9], max. 9800 kb/s, 29.97 fps, 29.97 tbr, 90k tbn,
 59.94 tbc

     Stream #0:2[0xa0]: Audio: pcm_dvd, 48000 Hz, 2 channels, s16, 1536
 kb/s
 [prores @ 0000000004422980] encoding with ProRes standard (apcn) profile
 [prores @ 0000000004425160] encoding with ProRes standard (apcn) profile
 [prores @ 0000000004427c00] encoding with ProRes standard (apcn) profile
 [prores @ 0000000004428660] encoding with ProRes standard (apcn) profile
 [prores @ 00000000043d9cc0] encoding with ProRes standard (apcn) profile
 Output #0, mov, to 'test.mov':
   Metadata:
     encoder         : Lavf56.15.102
     Stream #0:0: Video: prores (apcn) (apcn / 0x6E637061), yuv422p10le,
 720x480
 [SAR 32:27 DAR 16:9], q=2-31, 200 kb/s, 29.97 fps, 30k tbn, 29.97 tbc
     Metadata:
       encoder         : Lavc56.14.100 prores
     Stream #0:1: Audio: aac (libvo_aacenc) (mp4a / 0x6134706D), 48000 Hz,
 stereo
 , s16, 128 kb/s
     Metadata:
       encoder         : Lavc56.14.100 libvo_aacenc
 Stream mapping:
   Stream #0:1 -> #0:0 (mpeg2video (native) -> prores (native))
   Stream #0:2 -> #0:1 (pcm_dvd (native) -> aac (libvo_aacenc))
 Press [q] to stop, [?] for help
 frame=   97 fps=0.0 q=0.0 size=   13010kB time=00:00:03.10
 bitrate=34345.1kbits/
 frame=  183 fps=182 q=0.0 size=   26269kB time=00:00:05.97
 bitrate=36030.6kbits/
 frame=  271 fps=180 q=0.0 size=   39098kB time=00:00:08.90
 bitrate=35951.6kbits/
 frame=  365 fps=181 q=0.0 size=   53793kB time=00:00:12.04
 bitrate=36584.3kbits/
 frame=  457 fps=182 q=0.0 size=   67180kB time=00:00:15.11
 bitrate=36410.0kbits/
 frame=  550 fps=182 q=0.0 size=   81079kB time=00:00:18.21
 bitrate=36458.0kbits/
 frame=  638 fps=181 q=0.0 size=   94735kB time=00:00:21.15
 bitrate=36685.7kbits/
 frame=  727 fps=181 q=0.0 size=  107704kB time=00:00:24.12
 bitrate=36573.9kbits/
 frame=  816 fps=180 q=0.0 size=  120764kB time=00:00:27.09
 bitrate=36514.0kbits/
 frame=  902 fps=179 q=0.0 size=  133535kB time=00:00:29.96
 bitrate=36508.6kbits/
 frame= 1000 fps=181 q=0.0 size=  148139kB time=00:00:33.23
 bitrate=36516.4kbits/
 frame= 1091 fps=181 q=0.0 size=  161676kB time=00:00:36.26
 bitrate=36516.9kbits/
 frame= 1185 fps=181 q=0.0 size=  175265kB time=00:00:39.40
 bitrate=36435.3kbits/
 frame= 1277 fps=181 q=0.0 size=  189336kB time=00:00:42.47
 bitrate=36516.0kbits/
 frame= 1360 fps=180 q=0.0 size=  201932kB time=00:00:45.24
 bitrate=36561.4kbits/
 frame= 1451 fps=180 q=0.0 size=  215693kB time=00:00:48.28
 bitrate=36597.0kbits/
 frame= 1524 fps=178 q=0.0 size=  227089kB time=00:00:50.71
 bitrate=36680.1kbits/
 frame= 1609 fps=178 q=0.0 size=  239458kB time=00:00:53.55
 bitrate=36629.5kbits/
 frame= 1701 fps=178 q=0.0 size=  253563kB time=00:00:56.62
 bitrate=36684.4kbits/
 frame= 1797 fps=179 q=0.0 size=  267792kB time=00:00:59.82
 bitrate=36668.6kbits/
 frame= 1894 fps=179 q=0.0 size=  283124kB time=00:01:03.06
 bitrate=36778.3kbits/
 frame= 1974 fps=178 q=0.0 size=  295109kB time=00:01:05.73
 bitrate=36778.5kbits/
 frame= 2064 fps=179 q=0.0 size=  307805kB time=00:01:08.73
 bitrate=36684.8kbits/
 frame= 2159 fps=179 q=0.0 size=  321994kB time=00:01:11.90
 bitrate=36684.1kbits/
 frame= 2256 fps=180 q=0.0 size=  336902kB time=00:01:15.14
 bitrate=36729.2kbits/
 frame= 2340 fps=179 q=0.0 size=  349615kB time=00:01:17.94
 bitrate=36744.7kbits/
 frame= 2431 fps=179 q=0.0 size=  363557kB time=00:01:20.98
 bitrate=36777.3kbits/
 frame= 2525 fps=179 q=0.0 size=  377814kB time=00:01:24.11
 bitrate=36794.4kbits/
 frame= 2613 fps=179 q=0.0 size=  390721kB time=00:01:27.05
 bitrate=36768.0kbits/
 frame= 2703 fps=179 q=0.0 size=  403783kB time=00:01:30.05
 bitrate=36730.1kbits/
 frame= 2796 fps=179 q=0.0 size=  417759kB time=00:01:33.15
 bitrate=36735.7kbits/
 frame= 2889 fps=180 q=0.0 size=  431245kB time=00:01:36.26
 bitrate=36699.1kbits/
 frame= 2985 fps=180 q=0.0 size=  446408kB time=00:01:39.46
 bitrate=36766.0kbits/
 frame= 3074 fps=180 q=0.0 size=  459475kB time=00:01:42.43
 bitrate=36745.2kbits/
 frame= 3166 fps=180 q=0.0 size=  473415kB time=00:01:45.50
 bitrate=36758.4kbits/
 frame= 3253 fps=180 q=0.0 size=  486306kB time=00:01:48.40
 bitrate=36748.3kbits/
 frame= 3358 fps=181 q=0.0 size=  501818kB time=00:01:51.91
 bitrate=36733.3kbits/
 frame= 3455 fps=181 q=0.0 size=  516493kB time=00:01:55.14
 bitrate=36744.9kbits/
 frame= 3549 fps=181 q=0.0 size=  530794kB time=00:01:58.28
 bitrate=36761.0kbits/
 frame= 3626 fps=180 q=0.0 size=  542060kB time=00:02:00.85
 bitrate=36743.1kbits/
 frame= 3704 fps=180 q=0.0 size=  554200kB time=00:02:03.45
 bitrate=36774.1kbits/
 frame= 3799 fps=180 q=0.0 size=  568720kB time=00:02:06.62
 bitrate=36792.9kbits/
 frame= 3891 fps=180 q=0.0 size=  582481kB time=00:02:09.69
 bitrate=36791.2kbits/
 frame= 3987 fps=180 q=0.0 size=  597045kB time=00:02:12.89
 bitrate=36802.2kbits/
 frame= 4080 fps=180 q=0.0 size=  611511kB time=00:02:16.00
 bitrate=36833.9kbits/
 frame= 4174 fps=180 q=0.0 size=  626288kB time=00:02:19.13
 bitrate=36873.5kbits/
 frame= 4258 fps=180 q=0.0 size=  638807kB time=00:02:21.94
 bitrate=36868.0kbits/
 frame= 4355 fps=180 q=0.0 size=  653064kB time=00:02:25.17
 bitrate=36850.5kbits/
 frame= 4452 fps=181 q=0.0 size=  667183kB time=00:02:28.41
 bitrate=36826.3kbits/
 frame= 4544 fps=181 q=0.0 size=  681130kB time=00:02:31.48
 bitrate=36834.2kbits/
 frame= 4640 fps=181 q=0.0 size=  696691kB time=00:02:34.68
 bitrate=36895.6kbits/
 frame= 4740 fps=181 q=0.0 size=  711711kB time=00:02:38.02
 bitrate=36895.2kbits/
 frame= 4834 fps=182 q=0.0 size=  726141kB time=00:02:41.16
 bitrate=36910.6kbits/
 frame= 4927 fps=182 q=0.0 size=  740218kB time=00:02:44.26
 bitrate=36915.3kbits/
 frame= 5009 fps=181 q=0.0 size=  752402kB time=00:02:47.00
 bitrate=36908.2kbits/
 frame= 5096 fps=181 q=0.0 size=  765328kB time=00:02:49.90
 bitrate=36900.8kbits/
 frame= 5192 fps=181 q=0.0 size=  779951kB time=00:02:53.10
 bitrate=36910.0kbits/
 frame= 5284 fps=181 q=0.0 size=  793501kB time=00:02:56.17
 bitrate=36897.0kbits/
 frame= 5379 fps=181 q=0.0 size=  807537kB time=00:02:59.34
 bitrate=36886.0kbits/
 frame= 5476 fps=182 q=0.0 size=  822034kB time=00:03:02.58
 bitrate=36882.6kbits/
 frame= 5567 fps=182 q=0.0 size=  835906kB time=00:03:05.61
 bitrate=36891.4kbits/
 frame= 5661 fps=182 q=0.0 size=  850075kB time=00:03:08.75
 bitrate=36893.4kbits/
 frame= 5761 fps=182 q=0.0 size=  864883kB time=00:03:12.09
 bitrate=36884.0kbits/
 frame= 5851 fps=182 q=0.0 size=  878796kB time=00:03:15.09
 bitrate=36900.5kbits/
 frame= 5951 fps=182 q=0.0 size=  894506kB time=00:03:18.43
 bitrate=36928.6kbits/
 frame= 6041 fps=182 q=0.0 size=  908028kB time=00:03:21.43
 bitrate=36927.9kbits/
 frame= 6134 fps=182 q=0.0 size=  922440kB time=00:03:24.53
 bitrate=36944.9kbits/
 frame= 6230 fps=182 q=0.0 size=  936754kB time=00:03:27.74
 bitrate=36939.7kbits/
 frame= 6319 fps=182 q=0.0 size=  949922kB time=00:03:30.71
 bitrate=36931.1kbits/
 frame= 6413 fps=182 q=0.0 size=  964988kB time=00:03:33.84
 bitrate=36966.5kbits/
 frame= 6500 fps=182 q=0.0 size=  977558kB time=00:03:36.74
 bitrate=36946.5kbits/
 frame= 6591 fps=182 q=0.0 size=  991774kB time=00:03:39.78
 bitrate=36966.0kbits/
 frame= 6690 fps=182 q=0.0 size= 1007205kB time=00:03:43.08
 bitrate=36985.3kbits/
 frame= 6787 fps=183 q=0.0 size= 1021390kB time=00:03:46.32
 bitrate=36969.8kbits/
 frame= 6886 fps=183 q=0.0 size= 1036841kB time=00:03:49.62
 bitrate=36989.2kbits/
 frame= 6977 fps=183 q=0.0 size= 1050526kB time=00:03:52.66
 bitrate=36988.3kbits/
 frame= 7059 fps=183 q=0.0 size= 1062827kB time=00:03:55.40
 bitrate=36986.4kbits/
 frame= 7142 fps=182 q=0.0 size= 1075130kB time=00:03:58.17
 bitrate=36979.6kbits/
 frame= 7236 fps=182 q=0.0 size= 1089818kB time=00:04:01.30
 bitrate=36997.5kbits/
 frame= 7332 fps=183 q=0.0 size= 1102861kB time=00:04:04.51
 bitrate=36949.8kbits/
 frame= 7430 fps=183 q=0.0 size= 1118039kB time=00:04:07.78
 bitrate=36964.0kbits/
 frame= 7536 fps=183 q=0.0 size= 1134283kB time=00:04:11.31
 bitrate=36973.3kbits/
 frame= 7538 fps=183 q=0.0 Lsize= 1136081kB time=00:04:11.51
 bitrate=37002.4kbits
 /s dup=8 drop=0
 video:1131858kB audio:3927kB subtitle:0kB other streams:0kB global
 headers:0kB m
 uxing overhead: 0.026072%

 D:\>
 }}}


 Patches should be submitted to the ffmpeg-devel mailing list and not this
 bug tracker.

--
Ticket URL: <https://trac.ffmpeg.org/ticket/4168>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list