-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Description
Description of the feature or enhancement you'd like to see in HandBrake
I've implemented a Hardware scaling filter using D3D11 VideoProcessBlt method on FFmpeg and also enabled support for PIX_FMT_D3D11 frames in the MediaFoundation Encoder. The following FFmpeg CLIs work fine
./ffmpeg.exe -hwaccel d3d11va -hwaccel_output_format d3d11 -hide_banner -i bbb_sunflower_2160p_30fps_normal.mp4 -hw_encoding 1 -c:v h264_mf -vframes 100 -loglevel verbose sample.mp4 -y
./ffmpeg.exe -hwaccel d3d11va -hwaccel_output_format d3d11 -hide_banner -i bbb_sunflower_2160p_30fps_normal.mp4 -hw_encoding 1 -c:v h264_mf -vf "scale_d3d11=width=1920:height=1080" -vframes 100 -loglevel verbose sample.mp4 -y
But on integration with HandBrake to enable full hardware pipeline for MF encoders, the output generated is broken - output bitstream's framerate is very low (expected 30fps, obtained random values ranging between 0.01 to 1.5fps) - some frames are corrupted. On un-silencing the ffmpeg logs in decavcodec.c, following error messages from FFmpeg are logged
decode_receive_frame_internal failed = Invalid data found when processing input
Static surface pool size exceeded
get_buffer() failed
thread_get_buffer() failed
decode_slice_headec error
no frame!
Code changes with FFmpeg patch: https://github.com/HandBrake/HandBrake/compare/master...dashsantosh-mcw:HandBrake:d3d11-scaling?expand=1
Any insights on this issue and how to fix this would be appreciated!
What Operating System are you running?
Windows 11
What version of HandBrake are you running?
No response
Where did you download HandBrake from?
No response
Activity Log, Crash Log or any other details
No response