Steve Lhomme pushed to branch master at VideoLAN / VLC


Commits:
77067e69 by Steve Lhomme at 2024-01-14T12:56:23+00:00
mft: call IMFShutdown::Shutdown on exit

It is mandatory for asynchronous MFTs [1].

[1] 
https://learn.microsoft.com/en-us/windows/win32/api/mfidl/nn-mfidl-imfshutdown

- - - - -


1 changed file:

- modules/codec/mft.cpp


Changes:

=====================================
modules/codec/mft.cpp
=====================================
@@ -50,6 +50,7 @@ extern "C" {
 #include <mferror.h>
 #include <mfobjects.h>
 #include <codecapi.h>
+#include <mfidl.h>
 
 
 #if !defined(CODECAPI_AVDecVideoAcceleration_H264) // MINGW < 8
@@ -190,6 +191,16 @@ public:
         return hr;
     }
 
+    /// Required for Async MFTs
+    HRESULT shutdownStream()
+    {
+        ComPtr<IMFShutdown> shutdownObj;
+        HRESULT hr = mft.As(&shutdownObj);
+        if (FAILED(hr))
+            return hr;
+        return shutdownObj->Shutdown();
+    }
+
 private:
     bool streamStarted = false;
     std::atomic<size_t>  refcount{1};
@@ -1657,6 +1668,8 @@ static void DestroyMFT(decoder_t *p_dec)
 
         // make sure don't have any input pending
         p_sys->flushStream();
+
+        p_sys->shutdownStream();
     }
 
     auto *vidsys = dynamic_cast<mft_dec_video*>(p_sys);
@@ -2215,6 +2228,8 @@ static void EncoderClose(encoder_t *p_enc)
 
         // make sure don't have any input pending
         p_sys->flushStream();
+
+        p_sys->shutdownStream();
     }
 
     p_sys->Release();



View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/commit/77067e69388d256e98cfe73f3408f6be0234bc0a

-- 
View it on GitLab: 
https://code.videolan.org/videolan/vlc/-/commit/77067e69388d256e98cfe73f3408f6be0234bc0a
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance
_______________________________________________
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to