[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