#9173: Underestimated required buffer size (prores 8K)
-------------------------------------+-------------------------------------
Reporter: 0kajuna0 | Type: defect
Status: new | Priority: important
Component: ffmpeg | Version: git-
Keywords: prores, 8k, | master
png, | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
Summary of the bug: While trying to encode an 8k PNG stream with prores,
ffmpeg crashes with "Underestimated required buffer size". This seems to
only happen if the PNG stream contains complex images. It seems to be fine
if the PNGs are mostly alpha.
This is not an issue with version 4.2.3. Seems to first appear with 4.3.
Tested with multiple Windows machines.
How to reproduce:
{{{
% Error: Command failed: ffmpeg -v 9 -loglevel 99 -probesize 472M -f
image2pipe -framerate 24000/1001 -i - -c:v prores_ks -y C:\prorestest.MOV
ffmpeg version 2021-03-31-git-61ea0e3191-full_build-www.gyan.dev Copyright
(c) 2000-2021 the FFmpeg developers
built with gcc 10.2.0 (Rev6, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-
w32threads --disable-autodetect --enable-fontconfig --enable-iconv
--enable-gnutls --enable-libxml2 --enable-gmp --enable-lzma --enable-
libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh
--enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca
--enable-sdl2 --enable-libdav1d --enable-libzvbi --enable-librav1e
--enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265
--enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx
--enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi
--enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf
--enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec
--enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-
libglslang --enable-vulkan --enable-opencl --enable-libcdio --enable-
libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb
--enable-libmp3lame --enable-libshine --enable-libtheora --enable-
libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm
--enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-
libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-
libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint
libavutil 56. 72.100 / 56. 72.100
libavcodec 58.135.100 / 58.135.100
libavformat 58. 77.100 / 58. 77.100
libavdevice 58. 14.100 / 58. 14.100
libavfilter 7.111.100 / 7.111.100
libswscale 5. 10.100 / 5. 10.100
libswresample 3. 10.100 / 3. 10.100
libpostproc 55. 10.100 / 55. 10.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with
argument '9'.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging
level) with argument '99'.
Reading option '-probesize' ... matched as AVOption 'probesize' with
argument '472M'.
Reading option '-f' ... matched as option 'f' (force format) with argument
'image2pipe'.
Reading option '-framerate' ... matched as AVOption 'framerate' with
argument '24000/1001
'.
Reading option '-i' ... matched as input url with argument '-'.
Reading option '-c:v' ... matched as option 'c' (codec name) with argument
'prores_ks'.
Reading option '-y' ... matched as option 'y' (overwrite output files)
with argument '1'.
Reading option 'C:\prorestest.MOV' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument 9.
Applying option y (overwrite output files) with argument 1.
Successfully parsed a group of options.
Parsing a group of options: input url -.
Applying option f (force format) with argument image2pipe.
Successfully parsed a group of options.
Opening an input file: -.
[image2pipe @ 000001defaaa1a00] Opening 'pipe:' for reading
[pipe @ 000001defaaa2a00] Setting default whitelist 'crypto,data'
[image2pipe @ 000001defaaa1a00] Before avformat_find_stream_info() pos: 0
bytes read:65536 seeks:0 nb_streams:1
[image2pipe @ 000001defaaa1a00] Probe buffer size limit of 472000000 bytes
reached
[image2pipe @ 000001defaaa1a00] stream 0: start_time: NOPTS duration:
NOPTS
[image2pipe @ 000001defaaa1a00] format: start_time: NOPTS duration: NOPTS
(estimate from bit rate) bitrate=0 kb/s
[image2pipe @ 000001defaaa1a00] After avformat_find_stream_info() pos:
473280512 bytes read:473345153 seeks:0 frames:110
Input #0, image2pipe, from 'pipe:':
Duration: N/A, bitrate: N/A
Stream #0:0, 110, 1001/24000: Video: png, 1 reference frame, rgba(pc),
7680x3840, 0/1, 23.98 fps, 23.98 tbr, 23.98 tbn, 23.98 tbc
Successfully opened the file.
Parsing a group of options: output url C:\prorestest.MOV.
Applying option c:v (codec name) with argument prores_ks.
Successfully parsed a group of options.
Opening an output file: C:\prorestest.MOV.
[file @ 000001defaae64c0] Setting default whitelist 'file,crypto,data'
Successfully opened the file.
detected 8 logical cores
Stream mapping:
Stream #0:0 -> #0:0 (png (native) -> prores (prores_ks))
cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
if it occurs once at the start per stream)
Last message repeated 8 times
[graph 0 input from stream 0:0 @ 000001defaaa5940] Setting 'video_size' to
value '7680x3840'
[graph 0 input from stream 0:0 @ 000001defaaa5940] Setting 'pix_fmt' to
value '26'
[graph 0 input from stream 0:0 @ 000001defaaa5940] Setting 'time_base' to
value '1001/24000'
[graph 0 input from stream 0:0 @ 000001defaaa5940] Setting 'pixel_aspect'
to value '0/1'
[graph 0 input from stream 0:0 @ 000001defaaa5940] Setting 'frame_rate' to
value '24000/1001'
[graph 0 input from stream 0:0 @ 000001defaaa5940] w:7680 h:3840
pixfmt:rgba tb:1001/24000 fr:24000/1001 sar:0/1
[format @ 000001defaab1640] Setting 'pix_fmts' to value
'yuv422p10le|yuv444p10le|yuva444p10le'
[auto_scaler_0 @ 000001defaad4100] Setting 'flags' to value 'bicubic'
[auto_scaler_0 @ 000001defaad4100] w:iw h:ih flags:'bicubic' interl:0
[format @ 000001defaab1640] auto-inserting filter 'auto_scaler_0' between
the filter 'Parsed_null_0' and the filter 'format'
[AVFilterGraph @ 000001defaac6b00] query_formats: 4 queried, 2 merged, 1
already done, 0 delayed
[auto_scaler_0 @ 000001defaad4100] picking yuva444p10le out of 3 ref:rgba
alpha:1
[auto_scaler_0 @ 000001defaad4100] w:7680 h:3840 fmt:rgba sar:0/1 ->
w:7680 h:3840 fmt:yuva444p10le sar:0/1 flags:0x4
[prores_ks @ 000001defacd8a40] Autoselected 4:4:4:4 profile because of the
used input colorspace. It can be overridden through -profile option.
[prores_ks @ 000001defacd8a40] profile 4, 14400 slices, interlacing: no,
28500 bits per MB
[prores_ks @ 000001defacd8a40] frame size upper bound: 476932518
[prores_ks @ 000001defab5eac0] Autoselected 4:4:4:4 profile because of the
used input colorspace. It can be overridden through -profile option.
[prores_ks @ 000001defab5eac0] profile 4, 14400 slices, interlacing: no,
28500 bits per MB
[prores_ks @ 000001defab5eac0] frame size upper bound: 476932518
[prores_ks @ 000001defab67080] Autoselected 4:4:4:4 profile because of the
used input colorspace. It can be overridden through -profile option.
[prores_ks @ 000001defab67080] profile 4, 14400 slices, interlacing: no,
28500 bits per MB
[prores_ks @ 000001defab67080] frame size upper bound: 476932518
[prores_ks @ 000001defab64780] Autoselected 4:4:4:4 profile because of the
used input colorspace. It can be overridden through -profile option.
[prores_ks @ 000001defab64780] profile 4, 14400 slices, interlacing: no,
28500 bits per MB
[prores_ks @ 000001defab64780] frame size upper bound: 476932518
[prores_ks @ 000001defab65e40] Autoselected 4:4:4:4 profile because of the
used input colorspace. It can be overridden through -profile option.
[prores_ks @ 000001defab65e40] profile 4, 14400 slices, interlacing: no,
28500 bits per MB
[prores_ks @ 000001defab65e40] frame size upper bound: 476932518
[prores_ks @ 000001defab64c00] Autoselected 4:4:4:4 profile because of the
used input colorspace. It can be overridden through -profile option.
[prores_ks @ 000001defab64c00] profile 4, 14400 slices, interlacing: no,
28500 bits per MB
[prores_ks @ 000001defab64c00] frame size upper bound: 476932518
[prores_ks @ 000001defab67500] Autoselected 4:4:4:4 profile because of the
used input colorspace. It can be overridden through -profile option.
[prores_ks @ 000001defab67500] profile 4, 14400 slices, interlacing: no,
28500 bits per MB
[prores_ks @ 000001defab67500] frame size upper bound: 476932518
[prores_ks @ 000001defab66c00] Autoselected 4:4:4:4 profile because of the
used input colorspace. It can be overridden through -profile option.
[prores_ks @ 000001defab66c00] profile 4, 14400 slices, interlacing: no,
28500 bits per MB
[prores_ks @ 000001defab66c00] frame size upper bound: 476932518
[prores_ks @ 000001defaae4ac0] Autoselected 4:4:4:4 profile because of the
used input colorspace. It can be overridden through -profile option.
[prores_ks @ 000001defaae4ac0] profile 4, 14400 slices, interlacing: no,
28500 bits per MB
[prores_ks @ 000001defaae4ac0] frame size upper bound: 476932518
Output #0, mov, to 'C:\prorestest.MOV':
Metadata:
encoder : Lavf58.77.100
Stream #0:0, 0, 1/24000: Video: prores, 1 reference frame (ap4h /
0x68347061), yuva444p10le(tv, progressive), 7680x3840 (0x0), 0/1, q=2-31,
200 kb/s, 23.98 fps, 24k tbn
Metadata:
encoder : Lavc58.135.100 prores_ks
Clipping frame in rate conversion by 0.000008
frame= 1 fps=0.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A
speed= 0x
cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless
if it occurs once at the start per stream)
frame= 2 fps=0.0 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A
speed= 0x
cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless
if it occurs once at the start per stream)
Last message repeated 1 times
frame= 4 fps=2.5 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A
speed= 0x
cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless
if it occurs once at the start per stream)
Last message repeated 1 times
frame= 6 fps=2.5 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A
speed= 0x
cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless
if it occurs once at the start per stream)
Last message repeated 1 times
frame= 8 fps=2.4 q=0.0 size= 0kB time=00:00:00.00 bitrate=N/A
speed= 0x
cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless
if it occurs once at the start per stream)
[prores_ks @ 000001defacd8a40] Underestimated required buffer size.
Video encoding failed
[AVIOContext @ 000001defaae65c0] Statistics: 0 seeks, 1 writeouts
[prores_ks @ 000001defab5eac0] Underestimated required buffer size.
[prores_ks @ 000001defab64780] Underestimated required buffer size.
[prores_ks @ 000001defab67080] Underestimated required buffer size.
[prores_ks @ 000001defab65e40] Underestimated required buffer size.
[prores_ks @ 000001defab64c00] Underestimated required buffer size.
[prores_ks @ 000001defab66c00] Underestimated required buffer size.
[prores_ks @ 000001defab67500] Underestimated required buffer size.
[prores_ks @ 000001defacd8a40] Underestimated required buffer size.
[AVIOContext @ 000001defaab2c40] Statistics: 473345153 bytes read, 0 seeks
Conversion failed!
}}}
--
Ticket URL: <https://trac.ffmpeg.org/ticket/9173>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
_______________________________________________
FFmpeg-trac mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-trac
To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".