[vlc-commits] d3d11_deinterlace: fix decoder config mismatching
Steve Lhomme
git at videolan.org
Tue Aug 29 14:23:18 CEST 2017
vlc | branch: master | Steve Lhomme <robUx4 at videolabs.io> | Tue Aug 29 10:06:10 2017 +0200| [2801db6f37e09f71b356990c87e5c7b399cce4a2] | committer: Jean-Baptiste Kempf
d3d11_deinterlace: fix decoder config mismatching
This is similar to what is done in DXVA2 already.
Fix #18632
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2801db6f37e09f71b356990c87e5c7b399cce4a2
---
modules/video_output/win32/d3d11_deinterlace.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/modules/video_output/win32/d3d11_deinterlace.c b/modules/video_output/win32/d3d11_deinterlace.c
index 4d19b6152f..a41c69bead 100644
--- a/modules/video_output/win32/d3d11_deinterlace.c
+++ b/modules/video_output/win32/d3d11_deinterlace.c
@@ -386,9 +386,9 @@ static int Open(vlc_object_t *obj)
if (strcmp(p_mode->psz_mode, psz_mode))
msg_Dbg(filter, "using %s deinterlacing mode", p_mode->psz_mode);
+ D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS rateCaps;
for (UINT type = 0; type < processorCaps.RateConversionCapsCount; ++type)
{
- D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS rateCaps;
ID3D11VideoProcessorEnumerator_GetVideoProcessorRateConversionCaps(processorEnumerator, type, &rateCaps);
if (!(rateCaps.ProcessorCaps & p_mode->i_mode))
continue;
@@ -405,7 +405,6 @@ static int Open(vlc_object_t *obj)
msg_Dbg(filter, "mode %s not available, trying bob", psz_mode);
for (UINT type = 0; type < processorCaps.RateConversionCapsCount; ++type)
{
- D3D11_VIDEO_PROCESSOR_RATE_CONVERSION_CAPS rateCaps;
ID3D11VideoProcessorEnumerator_GetVideoProcessorRateConversionCaps(processorEnumerator, type, &rateCaps);
if (!(rateCaps.ProcessorCaps & D3D11_VIDEO_PROCESSOR_PROCESSOR_CAPS_DEINTERLACE_BOB))
continue;
@@ -466,6 +465,10 @@ static int Open(vlc_object_t *obj)
InitDeinterlacingContext( &sys->context );
sys->context.settings = p_mode->settings;
+ sys->context.settings.b_use_frame_history = rateCaps.PastFrames != 0 ||
+ rateCaps.FutureFrames != 0;
+ if (sys->context.settings.b_use_frame_history != p_mode->settings.b_use_frame_history)
+ msg_Dbg(filter, "deinterlacing not using frame history as requested");
if (sys->context.settings.b_double_rate)
sys->context.pf_render_ordered = RenderPic;
else
More information about the vlc-commits
mailing list