mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2026-03-13 09:00:40 +08:00
avfilter: add d3d12 deinterlace filter deinterlace_d3d12
This commit introduces a video filter `deinterlace_d3d12` that provides
hardware-accelerated deinterlacing using the D3D12 Video Processor.
The filter supports:
- bob and custom (motion-adaptive)deinterlace modes
- frame-rate and field-rate output
- automatic interlace detection
Sample command lines:
1. Software decode with hwupload:
ffmpeg -init_hw_device d3d12va=d3d12 -i interlaced.ts \
-vf "format=nv12,hwupload,deinterlace_d3d12=mode=default,hwdownload,format=nv12" \
-c:v libx264 output.mp4
2. Full hardware pipeline:
ffmpeg -hwaccel d3d12va -hwaccel_output_format d3d12 -i interlaced.ts \
-vf "deinterlace_d3d12=mode=custom:rate=field" \
-c:v h264_d3d12va output.mp4
Signed-off-by: younengxiao <steven.xiao@amd.com>
This commit is contained in:
@@ -25,6 +25,7 @@ version <next>:
|
||||
- Vulkan compute codec optimizations
|
||||
- swscale Vulkan support
|
||||
- LCEVC metadata bitstream filter
|
||||
- Add vf_deinterlace_d3d12 filter
|
||||
|
||||
|
||||
version 8.0:
|
||||
|
||||
3
configure
vendored
3
configure
vendored
@@ -2701,6 +2701,7 @@ CONFIG_EXTRA="
|
||||
celp_math
|
||||
d3d12_intra_refresh
|
||||
d3d12_motion_estimator
|
||||
d3d12_video_process_reference_info
|
||||
d3d12va_encode
|
||||
d3d12va_me_precision_eighth_pixel
|
||||
deflate_wrapper
|
||||
@@ -3523,6 +3524,7 @@ gfxcapture_filter_deps="cxx17 threads d3d11va IGraphicsCaptureItemInterop __x_AB
|
||||
gfxcapture_filter_extralibs="-lstdc++"
|
||||
scale_d3d11_filter_deps="d3d11va"
|
||||
scale_d3d12_filter_deps="d3d12va ID3D12VideoProcessor"
|
||||
deinterlace_d3d12_filter_deps="d3d12va ID3D12VideoProcessor"
|
||||
mestimate_d3d12_filter_deps="d3d12va ID3D12VideoMotionEstimator d3d12_motion_estimator"
|
||||
|
||||
amf_deps_any="libdl LoadLibrary"
|
||||
@@ -7074,6 +7076,7 @@ test_code cc "windows.h d3d12video.h" "D3D12_VIDEO_ENCODER_CODEC c = D3D12_VIDEO
|
||||
test_code cc "windows.h d3d12video.h" "D3D12_FEATURE_DATA_VIDEO_ENCODER_INTRA_REFRESH_MODE check = { 0 };" && enable d3d12_intra_refresh
|
||||
test_code cc "windows.h d3d12video.h" "D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE m = D3D12_VIDEO_ENCODER_MOTION_ESTIMATION_PRECISION_MODE_EIGHTH_PIXEL; (void)m;" && enable d3d12va_me_precision_eighth_pixel
|
||||
test_code cc "windows.h d3d12video.h" "D3D12_FEATURE_DATA_VIDEO_MOTION_ESTIMATOR check = { 0 };" && enable d3d12_motion_estimator
|
||||
test_code cc "windows.h d3d12video.h" "D3D12_FEATURE_DATA_VIDEO_PROCESS_REFERENCE_INFO check = { 0 };" && enable d3d12_video_process_reference_info
|
||||
check_type "windows.h" "DPI_AWARENESS_CONTEXT" -D_WIN32_WINNT=0x0A00
|
||||
check_type "windows.h security.h schnlsp.h" SecPkgContext_KeyingMaterialInfo -DSECURITY_WIN32
|
||||
check_type "d3d9.h dxva2api.h" DXVA2_ConfigPictureDecode -D_WIN32_WINNT=0x0602
|
||||
|
||||
@@ -276,6 +276,7 @@ OBJS-$(CONFIG_DECONVOLVE_FILTER) += vf_convolve.o framesync.o
|
||||
OBJS-$(CONFIG_DEDOT_FILTER) += vf_dedot.o
|
||||
OBJS-$(CONFIG_DEFLATE_FILTER) += vf_neighbor.o
|
||||
OBJS-$(CONFIG_DEFLICKER_FILTER) += vf_deflicker.o
|
||||
OBJS-$(CONFIG_DEINTERLACE_D3D12_FILTER) += vf_deinterlace_d3d12.o
|
||||
OBJS-$(CONFIG_DEINTERLACE_QSV_FILTER) += vf_vpp_qsv.o
|
||||
OBJS-$(CONFIG_DEINTERLACE_VAAPI_FILTER) += vf_deinterlace_vaapi.o vaapi_vpp.o
|
||||
OBJS-$(CONFIG_DEJUDDER_FILTER) += vf_dejudder.o
|
||||
|
||||
@@ -252,6 +252,7 @@ extern const FFFilter ff_vf_dedot;
|
||||
extern const FFFilter ff_vf_deflate;
|
||||
extern const FFFilter ff_vf_deflicker;
|
||||
extern const FFFilter ff_vf_deinterlace_qsv;
|
||||
extern const FFFilter ff_vf_deinterlace_d3d12;
|
||||
extern const FFFilter ff_vf_deinterlace_vaapi;
|
||||
extern const FFFilter ff_vf_dejudder;
|
||||
extern const FFFilter ff_vf_delogo;
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
#include "version_major.h"
|
||||
|
||||
#define LIBAVFILTER_VERSION_MINOR 12
|
||||
#define LIBAVFILTER_VERSION_MINOR 13
|
||||
#define LIBAVFILTER_VERSION_MICRO 100
|
||||
|
||||
|
||||
|
||||
1125
libavfilter/vf_deinterlace_d3d12.c
Normal file
1125
libavfilter/vf_deinterlace_d3d12.c
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user