[FFmpeg-trac] #3343(avfilter:new): Support 9-16 bit pixel formats in vf_pad
FFmpeg
trac at avcodec.org
Thu Jan 23 22:04:30 CET 2014
#3343: Support 9-16 bit pixel formats in vf_pad
----------------------------------+---------------------------------------
Reporter: abc123 | Type: enhancement
Status: new | Priority: normal
Component: avfilter | Version: unspecified
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
----------------------------------+---------------------------------------
Summary of the bug:
libavfilter drawutils does not support bit depths other than 8, as
remarked in the code:
{{{
int ff_draw_init(FFDrawContext *draw, enum AVPixelFormat format, unsigned
flags)
{
...
/* for now, only 8-bits formats */
if (c->depth_minus1 != 8 - 1)
return AVERROR(ENOSYS);
...
}
}}}
Since vf_pad is implemented using drawutils, it is not possible to pad
10-bit images such as DPX.
How to reproduce:
{{{
% ffmpeg -v debug -i my10bitfile.xxx -vf pad=x:x:x:x -f rawvideo /dev/null
ffmpeg version 2.1.2 Copyright (c) 2000-2013 the FFmpeg developers
built on Jan 17 2014 14:49:11 with gcc 4.6 (Ubuntu/Linaro
4.6.3-1ubuntu5)
configuration: --disable-doc --arch=x86 --target-os=linux --enable-
runtime-cpudetect --disable-ffserver --disable-ffplay --disable-avdevice
--disable-static --enable-shared --enable-libx264 --enable-libvorbis
--enable-libfreetype --enable-libopenjpeg --enable-gpl --enable-nonfree
libavutil 52. 48.101 / 52. 48.101
libavcodec 55. 39.101 / 55. 39.101
libavformat 55. 19.104 / 55. 19.104
libavfilter 3. 90.100 / 3. 90.100
libswscale 2. 5.101 / 2. 5.101
libswresample 0. 17.104 / 0. 17.104
libpostproc 52. 3.100 / 52. 3.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with
argument 'debug'.
Reading option '-i' ... matched as input file with argument
'1015623_23976_4096_2160_primary_77011_000001.dpx'.
Reading option '-vf' ... matched as option 'vf' (set video filters) with
argument 'pad=5120:2160:0:0'.
Reading option '-f' ... matched as option 'f' (force format) with argument
'rawvideo'.
Reading option '/dev/null' ... matched as output file.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument debug.
Successfully parsed a group of options.
Parsing a group of options: input file 1.dpx.
Successfully parsed a group of options.
Opening an input file: 1.dpx.
[AVIOContext @ 0x89bc040] Statistics: 35391488 bytes read, 0 seeks
[image2 @ 0x89bad80] Probe buffer size limit of 5000000 bytes reached
Input #0, image2, from '1.dpx':
Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
Stream #0:0, 1, 1/25: Video: dpx, gbrp10le, 4096x2160, 1/25, 25 tbr,
25 tbn, 25 tbc
Successfully opened the file.
Parsing a group of options: output file /dev/null.
Applying option vf (set video filters) with argument pad=5120:2160:0:0.
Applying option f (force format) with argument rawvideo.
Successfully parsed a group of options.
Opening an output file: /dev/null.
File '/dev/null' already exists. Overwrite ? [y/N] y
Successfully opened the file.
detected 4 logical cores
[Parsed_pad_0 @ 0x89a95c0] Setting 'width' to value '5120'
[Parsed_pad_0 @ 0x89a95c0] Setting 'height' to value '2160'
[Parsed_pad_0 @ 0x89a95c0] Setting 'x' to value '0'
[Parsed_pad_0 @ 0x89a95c0] Setting 'y' to value '0'
[graph 0 input from stream 0:0 @ 0x89a9940] Setting 'video_size' to value
'4096x2160'
[graph 0 input from stream 0:0 @ 0x89a9940] Setting 'pix_fmt' to value
'86'
[graph 0 input from stream 0:0 @ 0x89a9940] Setting 'time_base' to value
'1/25'
[graph 0 input from stream 0:0 @ 0x89a9940] Setting 'pixel_aspect' to
value '0/1'
[graph 0 input from stream 0:0 @ 0x89a9940] Setting 'sws_param' to value
'flags=2'
[graph 0 input from stream 0:0 @ 0x89a9940] Setting 'frame_rate' to value
'25/1'
[graph 0 input from stream 0:0 @ 0x89a9940] w:4096 h:2160 pixfmt:gbrp10le
tb:1/25 fr:25/1 sar:0/1 sws_param:flags=2
[auto-inserted scaler 0 @ 0x89aa3e0] Setting 'flags' to value '0x4'
[auto-inserted scaler 0 @ 0x89aa3e0] w:iw h:ih flags:'0x4' interl:0
-> [Parsed_pad_0 @ 0x89a95c0] auto-inserting filter 'auto-inserted scaler
0' between the filter 'graph 0 input from stream 0:0' and the filter
'Parsed_pad_0'
-> [AVFilterGraph @ 0x89a9080] query_formats: 3 queried, 1 merged, 1
already done, 0 delayed
-> [auto-inserted scaler 0 @ 0x89aa3e0] picking rgb24 out of 27
ref:gbrp10le alpha:0
-> [swscaler @ 0x89aefc0] Forcing full internal H chroma due to input
having non subsampled chroma
-> [auto-inserted scaler 0 @ 0x89aa3e0] w:4096 h:2160 fmt:gbrp10le sar:0/1
-> w:4096 h:2160 fmt:rgb24 sar:0/1 flags:0x4
[Parsed_pad_0 @ 0x89a95c0] w:4096 h:2160 -> w:5120 h:2160 x:0 y:0
color:0x000000FF
Output #0, rawvideo, to '/dev/null':
Metadata:
encoder : Lavf55.19.104
Stream #0:0, 0, 1/90000: Video: rawvideo (RGB[24] / 0x18424752),
rgb24, 5120x2160, 1/25, q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (dpx -> rawvideo)
Press [q] to stop, [?] for help
[output stream 0:0 @ 0x89a9b80] 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= 32400kB time=00:00:00.04
bitrate=6635520.0kbits/s
video:32400kB audio:0kB subtitle:0 global headers:0kB muxing overhead
0.000000%
1 frames successfully decoded, 0 decoding errors
[AVIOContext @ 0x89bc5c0] Statistics: 0 seeks, 1013 writeouts
}}}
Patches should be submitted to the ffmpeg-devel mailing list and not this
bug tracker.
We can pay a bounty for an appropriate fix that allows padding in high
depth.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/3343>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list