[FFmpeg-trac] #5995(undetermined:new): Blockiness and ringing in prores4444 encoded video with alpha

FFmpeg trac at avcodec.org
Mon Dec 5 08:48:43 EET 2016


#5995: Blockiness and ringing in prores4444 encoded video with alpha
-------------------------------------+-------------------------------------
             Reporter:  stib         |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:
  undetermined                       |  unspecified
             Keywords:               |               Blocked By:
  prores,alpha                       |  Reproduced by developer:  0
             Blocking:               |
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug:
 '''How to reproduce:'''
 Transcode a file with an alpha channel to ProRes4444 using prores_ks
 encoder
 {{{
 % ffmpeg -i 'input.mov'  -c:v prores_ks -profile:v 4 -quant_mat 'hq'
 -pix_fmt yuva444p10le 'output.mov'
 }}}

 {{{
 ffmpeg version N-82664-g801b5c1 Copyright (c) 2000-2016 the FFmpeg
 developers
   built with gcc 5.4.0 (GCC)
   configuration: --enable-gpl --enable-version3 --disable-w32threads
 --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-
 bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv
 --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca
 --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc
 --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb
 --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg
 --enable-libopus --enable-librtmp --enable-libschroedinger --enable-
 libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-
 libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis
 --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264
 --enable-libx265 --enable-libxavs --enable-libxvid --enable-lzma --enable-
 decklink --enable-zlib
   libavutil      55. 41.101 / 55. 41.101
   libavcodec     57. 66.108 / 57. 66.108
   libavformat    57. 58.101 / 57. 58.101
   libavdevice    57.  2.100 / 57.  2.100
   libavfilter     6. 67.100 /  6. 67.100
   libswscale      4.  3.101 /  4.  3.101
   libswresample   2.  4.100 /  2.  4.100
   libpostproc    54.  2.100 / 54.  2.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '.\alpha test.mov':
   Metadata:
     major_brand     : qt
     minor_version   : 537199360
     compatible_brands: qt
     creation_time   : 2016-12-12T03:17:14.000000Z
   Duration: 00:00:10.00, start: 0.000000, bitrate: 406275 kb/s
     Stream #0:0(eng): Video: qtrle (rle  / 0x20656C72), bgra(progressive),
 1920x1080, 405436 kb/s, SAR 1:1 DAR 16:9, 25 fps, 25 tbr, 25 tbn, 25 tbc
 (default)
     Metadata:
       creation_time   : 2016-12-12T03:17:14.000000Z
       handler_name    : Apple Alias Data Handler
       encoder         : Animation
       timecode        : 00:00:00:00
     Stream #0:1(eng): Data: none (tmcd / 0x64636D74), 0 kb/s (default)
     Metadata:
       creation_time   : 2016-12-12T03:17:14.000000Z
       handler_name    : Apple Alias Data Handler
       timecode        : 00:00:00:00
 File 'prorestest2.mov' already exists. Overwrite ? [y/N] y
 Output #0, mov, to 'prorestest2.mov':
   Metadata:
     major_brand     : qt
     minor_version   : 537199360
     compatible_brands: qt
     encoder         : Lavf57.58.101
     Stream #0:0(eng): Video: prores (prores_ks) (ap4h / 0x68347061),
 yuva444p10le, 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 25 fps,
 12800 tbn, 25 tbc (default)
     Metadata:
       creation_time   : 2016-12-12T03:17:14.000000Z
       handler_name    : Apple Alias Data Handler
       timecode        : 00:00:00:00
       encoder         : Lavc57.66.108 prores_ks
 Stream mapping:
   Stream #0:0 -> #0:0 (qtrle (native) -> prores (prores_ks))
 Press [q] to stop, [?] for help
 frame=  250 fps=5.5 q=-0.0 Lsize=  186122kB time=00:00:09.96
 bitrate=153082.2kbits/s speed=0.218x
 video:186119kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 0.001761%
 }}}

 '''Expected'''
 Something similar to the original. This is a png from the test file, which
 was created with Adobe AFter Effects, encoded as QTRLE bgra-8 in a .mov
 container:
 [[Image(https://i.stack.imgur.com/KpMMP.png)]]

 '''Observed'''
 Blockiness, ringing and noise, particularly in areas with partial alpha.
 This is a png saved from the transcoded result, which was created using
 the command above. The artefacts appear in areas where the alpha channel
 is partially transparent, although the alpha channel itself seems to be
 ok. The problem is worse when the '''-alpha_bits''' encoding option is set
 to '''16''':
 [[Image(https://i.stack.imgur.com/XUbk5.png)]]

 The effect is most noticeable when viewing one channel against black. This
 is a screenshot of the Red channel video playing in DJV View:
 [[Image(https://i.stack.imgur.com/Ngh3m.png)]]

 And here is the Alpha channel:
 [[Image(https://imgur.com/a/ncWHK)]]

 The machine used to encode was running windows7 x64

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


More information about the FFmpeg-trac mailing list