Opened 7 years ago
Closed 7 years ago
#7120 closed defect (fixed)
Intel QSV: "QSV requires a fixed frame pool size" message is given on encoder initialization failure
Reported by: | Dennis E. Mungai | Owned by: | |
---|---|---|---|
Priority: | minor | Component: | avcodec |
Version: | unspecified | Keywords: | qsv |
Cc: | Blocked By: | ||
Blocking: | Reproduced by developer: | no | |
Analyzed by developer: | no |
Description
Summary of the bug:
Initializing the h264_qsv encoder halts with the error above.
How to reproduce:
Using a sample from the Jellyfish UHD clip collection, I ran FFmpeg as shown:
ffmpeg -stream_loop -1 -loglevel debug -threads 4 -init_hw_device qsv=qsv:MFX_IMPL_hw_any -hwaccel qsv -filter_hw_device qsv -i ~/samples/jellyfish-40-mbps-hd-h264.mkv -vf 'format=nv12,hwupload,scale_qsv=1920:1080' -b:v 1000k -c:v h264_qsv -rdo 1 -pic_timing_sei 1 -recovery_point_sei 1 -profile:v high -aud 1 -f matroska -y ~/test_output/hammer.mkv
Output:
Platform information:
- FFmpeg version:
ffmpeg -version ffmpeg version N-90590-g197a4e8fee Copyright (c) 2000-2018 the FFmpeg developers built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.9) 20160609 configuration: --pkg-config-flags=--static --prefix=/home/bob/bin --bindir=/home/bob/bin --extra-cflags=-I/home/bob/bin/include --extra-ldflags=-L/home/bob/bin/lib --extra-cflags=-I/opt/intel/mediasdk/include --extra-ldflags=-L/opt/intel/mediasdk/lib --extra-ldflags=-L/opt/intel/mediasdk/plugins --enable-libmfx --enable-vaapi --disable-debug --enable-libvorbis --enable-libvpx --enable-libdrm --enable-gpl --cpu=native --enable-libfdk-aac --enable-libx264 --enable-libx265 --extra-libs=-lpthread --enable-nonfree libavutil 56. 12.100 / 56. 12.100 libavcodec 58. 17.100 / 58. 17.100 libavformat 58. 10.100 / 58. 10.100 libavdevice 58. 2.100 / 58. 2.100 libavfilter 7. 14.100 / 7. 14.100 libswscale 5. 0.102 / 5. 0.102 libswresample 3. 0.101 / 3. 0.101 libpostproc 55. 0.100 / 55. 0.100
- FFmpeg build configuration:
configuration: --pkg-config-flags=--static --prefix=/home/bob/bin --bindir=/home/bob/bin --extra-cflags=-I/home/bob/bin/include --extra-ldflags=-L/home/bob/bin/lib --extra-cflags=-I/opt/intel/mediasdk/include --extra-ldflags=-L/opt/intel/mediasdk/lib --extra-ldflags=-L/opt/intel/mediasdk/plugins --enable-libmfx --enable-vaapi --disable-debug --enable-libvorbis --enable-libvpx --enable-libdrm --enable-gpl --cpu=native --enable-libfdk-aac --enable-libx264 --enable-libx265 --extra-libs=-lpthread --enable-nonfree
Change History (6)
comment:1 by , 7 years ago
comment:2 by , 7 years ago
Use -extra_hw_frames
to set an initial pool size.
There are ideas about making this happen automatically, but the problem is that we don't have enough negotiation between components to know how big the pool should be - if it's feeding into a scaler then probably 2 or 3 frames are sufficient, but if it's feeding into an encoder with lookahead enabled then you might need over 100. As such, it's currently under user control.
comment:3 by , 7 years ago
Alright, thanks.
Should that option (-extra_hw_frames) be passed as an option to FFmpeg directly, or as an argument to the encoder (h264_qsv), or as a video filter argument?
comment:4 by , 7 years ago
In this case you want it as a filter argument to hwupload: hwupload=extra_hw_frames=1234
(replace with suitable value, probably something like 10 works for you here).
comment:6 by , 7 years ago
Priority: | normal → minor |
---|---|
Resolution: | → fixed |
Status: | new → closed |
Error log: