[FFmpeg-trac] #1705(undetermined:new): Wrong pixel format for overlay

FFmpeg trac at avcodec.org
Fri Aug 31 09:59:12 CEST 2012


#1705: Wrong pixel format for overlay
-------------------------------------+-------------------------------------
             Reporter:  jwjwjw       |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:
  undetermined                       |  unspecified
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug:

 The overlay filter uses an intermediate yuv420p pixel format regardless of
 the input format, format of the overlay, and intended output format. This
 can be demonstrated by using an RGBA overlay graphic in a small-ish font
 with a saturated colour on top of an RGB24 input file which is output also
 using RGB24. The resulting file shows the telltale signs of 4:2:0
 chrominance loss despite using RGB in all stages of the chain.

 Both commands below produce the same output:

 ffmpeg -i background.png -i overlay.png -filter_complex "overlay=0:0"
 -pix_fmt rgb24 output.png

 ffmpeg -i background.png -vf "movie=overlay.png [movie]; [in] [movie]
 overlay=0:0 [out]" -pix_fmt rgb24 output.png

 How to reproduce:
 {{{
 ffmpeg -i background.png -vf "movie=overlay.png [movie]; [in] [movie]
 overlay=0:0 [out]" -pix_fmt rgb24 output.png
 ffmpeg version N-43973-g028b6d2b Copyright (c) 2000-2012 the FFmpeg
 developers
   built on Aug 31 2012 06:26:09 with gcc 4.4.5 (Debian 4.4.5-8)
   configuration: --enable-libdc1394 --prefix=/usr --extra-cflags='-Wall -g
 ' --enable-shared --enable-libmp3lame --enable-gpl --enable-libvorbis
 --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc
 --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-
 amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex
 --enable-nonfree --disable-stripping --enable-avfilter --enable-
 libschroedinger --disable-encoder=libschroedinger --enable-version3
 --enable-libopenjpeg --enable-libvpx --extra-libs=-lgcrypt --disable-
 altivec --disable-armv5te --disable-armv6 --disable-vis
   libavutil      51. 70.100 / 51. 70.100
   libavcodec     54. 54.100 / 54. 54.100
   libavformat    54. 25.104 / 54. 25.104
   libavdevice    54.  2.100 / 54.  2.100
   libavfilter     3. 14.100 /  3. 14.100
   libswscale      2.  1.101 /  2.  1.101
   libswresample   0. 15.100 /  0. 15.100
   libpostproc    52.  0.100 / 52.  0.100
 [AVIOContext @ 0x1ad77c0] Statistics: 4205 bytes read, 0 seeks
 Input #0, image2, from 'background.png':
   Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
     Stream #0:0, 1, 1/25: Video: png, rgb24, 640x360, 25 tbr, 25 tbn, 25
 tbc
 [AVIOContext @ 0x1acca60] Statistics: 5980 bytes read, 0 seeks
 [Parsed_movie_0 @ 0x1acfe00] seek_point:0 format_name:(null)
 file_name:overlay.png stream_index:-1
 [buffer @ 0x1acccc0] Setting entry with key 'video_size' to value
 '640x360'
 [buffer @ 0x1acccc0] Setting entry with key 'pix_fmt' to value '28'
 [buffer @ 0x1acccc0] Setting entry with key 'time_base' to value '1/25'
 [buffer @ 0x1acccc0] Setting entry with key 'pixel_aspect' to value '0/1'
 [buffer @ 0x1acccc0] Setting entry with key 'sws_param' to value 'flags=2'
 [buffer @ 0x1acccc0] Setting entry with key 'frame_rate' to value '25/1'
 [graph 0 input from stream 0:0 @ 0x1accec0] w:640 h:360 pixfmt:rgba
 tb:1/25 fr:25/1 sar:0/1 sws_param:flags=2
 [Parsed_overlay_1 @ 0x1accf80] auto-inserting filter 'auto-inserted scaler
 0' between the filter 'graph 0 input from stream 0:0' and the filter
 'Parsed_overlay_1'
 [Parsed_overlay_1 @ 0x1accf80] auto-inserting filter 'auto-inserted scaler
 1' between the filter 'Parsed_movie_0' and the filter 'Parsed_overlay_1'
 [format @ 0x1ad78c0] auto-inserting filter 'auto-inserted scaler 2'
 between the filter 'Parsed_overlay_1' and the filter 'format'
 [auto-inserted scaler 0 @ 0x1ad6b40] w:640 h:360 fmt:rgba sar:0/1 -> w:640
 h:360 fmt:yuv420p sar:0/1 flags:0x4
 [auto-inserted scaler 1 @ 0x1ad97c0] w:640 h:360 fmt:rgba sar:1/1 -> w:640
 h:360 fmt:yuva420p sar:1/1 flags:0x4
 [Parsed_overlay_1 @ 0x1accf80] main w:640 h:360 fmt:yuv420p overlay x:0
 y:0 w:640 h:360 fmt:yuva420p
 [Parsed_overlay_1 @ 0x1accf80] main_tb:1/25 overlay_tb:1/25 -> tb:1/25
 exact:1
 [auto-inserted scaler 2 @ 0x1ad8620] w:640 h:360 fmt:yuv420p sar:0/1 ->
 w:640 h:360 fmt:rgb24 sar:0/1 flags:0x4
 Output #0, image2, to 'output.png':
   Metadata:
     encoder         : Lavf54.25.104
     Stream #0:0, 0, 1/90000: Video: png, rgb24, 640x360, q=2-31, 200 kb/s,
 90k tbn, 25 tbc
 Stream mapping:
   Stream #0:0 -> #0:0 (png -> png)
 Press [q] to stop, [?] for help
 [output stream 0:0 @ 0x1ad6fc0] EOF on sink link output stream
 0:0:default.
 No more output streams to write to, finishing.
 frame=    1 fps=0.0 q=0.0 Lsize=       0kB time=00:00:00.04 bitrate=
 0.0kbits/s

 video:2kB audio:0kB subtitle:0 global headers:0kB muxing overhead
 -100.000000%
 }}}

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


More information about the FFmpeg-trac mailing list