-
Notifications
You must be signed in to change notification settings - Fork 10
Description
Describe the Bug
Hello there,
I've built Intel's VSR from the reisr4nas branch of ffmpeg cartwheel, and can likewise confirm that it works as expected; at least in GPU modes where OpenCL is available.
However, the same cannot be said of the out-of-the-box ASM modes with software-based encoding via libx264 and libx265, as documented on the wiki.
Of note is that this was built against Intel's Integrated Performance Primitives (IPP) standalone installation on Ubuntu 22.04LTS environment.
These trivial examples simply fail/exit with no output(s) on the console:
With `libx264:
ffmpeg -init_hw_device qsv=hw \
-init_hw_device opencl=cl@hw \
-filter_hw_device cl \
-noautorotate -i "bbb.mp4" \
-vf "raisr=filterfolder=/filters_2x/filters_highres:asm=opencl" \
-c:v libx264 -pix_fmt yuv420p -x264-params "scenecut=0" -maxrate:v 5000k -bufsize:v 1250k \
-keyint_min 120 -g:v 120 -preset:v faster -tune:v fastdecode -bf:v 0 \
-flags +global_header+cgop -f mp4 -y libx264_highres.mp4With `libx265:
ffmpeg -init_hw_device qsv=hw \
-init_hw_device opencl=cl@hw \
-filter_hw_device cl \
-noautorotate -i "bbb.mp4" \
-vf "raisr=filterfolder=/filters_2x/filters_highres:asm=opencl" \
-c:v libx265 -pix_fmt yuv420p -x265-params "scenecut=0" -maxrate:v 5000k -bufsize:v 1250k \
-keyint_min 120 -g:v 120 -preset:v faster -tune:v fastdecode -bf:v 0 \
-flags +global_header+cgop -f mp4 -y libx265_highres.mp4Now, if an OpenCL hardware context is provided as with the trivial example below for libx264, and asm=opencl is set, the filter runs/executes as expected:
ffmpeg -init_hw_device qsv=hw \
-init_hw_device opencl=cl@hw \
-filter_hw_device cl \
-noautorotate -i "bbb.mp4" \
-vf "raisr=filterfolder=/filters_2x/filters_highres:asm=opencl" \
-c:v libx264 -pix_fmt yuv420p -x264-params "scenecut=0" -maxrate:v 5000k -bufsize:v 1250k \
-keyint_min 120 -g:v 120 -preset:v faster -tune:v fastdecode -bf:v 0 \
-flags +global_header+cgop -f mp4 -y libx264_highres.mp4However, attempting the same with libx265 fails with the error:
[libx265 @ 0x556433417c80] Unknown picture type encountered.
[vost#0:0/libx265 @ 0x5564333c5d40] Error submitting video frame to the encoder
[vost#0:0/libx265 @ 0x5564333c5d40] Error encoding a frame: Generic error in an external library
[vost#0:0/libx265 @ 0x5564333c5d40] Task finished with error code: -542398533 (Generic error in an external library)
[vost#0:0/libx265 @ 0x5564333c5d40] Terminating thread with return code -542398533 (Generic error in an external library)
[out#0/mp4 @ 0x5564333fb8c0] video:0KiB audio:135KiB subtitle:0KiB other streams:0KiB global headers:3KiB muxing overhead: 1.210572%
frame= 0 fps=0.0 q=0.0 Lsize= 137KiB time=N/A bitrate=N/A dup=2 drop=0 speed=N/A
x265 [info]: frame I: 1, Avg QP:35.82 kb/s: 923.52
encoded 1 frames in 2.38s (0.42 fps), 923.52 kb/s, Avg QP:35.82Regardless of the OpenCL device type/context created.
In brief: The filter is virtually unusable with the software-based libx264 and libx265 encoders, as-is, out of the box.
Expected Behavior
The raisr filter should work in software mode as advertised, and with the native ASM modes, as compiled.
Only the OpenCL modes work, and again, only in GPU mode.
Screenshots
If applicable, add screenshots to help explain your problem.
Environment (please complete the following information):
- OS: Ubuntu 22.04LTS
- Version: Tested against the master git tip and on the last release point of Intel's VSR.
Additional Context
As described above in the runtime issues.