[FFmpeg-trac] #9173(ffmpeg:new): Underestimated required buffer size (prores 8K)

FFmpeg trac at avcodec.org
Wed Apr 7 17:14:21 EEST 2021


#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


More information about the FFmpeg-trac mailing list