Bug 1394589: Load AMD VP9 decoder using CLSID. r?cpearce draft
authorJean-Yves Avenard <jyavenard@mozilla.com>
Wed, 30 Aug 2017 15:13:33 +0200
changeset 655892 cc744889c9a17f531d03dacdf86ab56082e1dcb5
parent 655891 62ccd4647ebb5a2cc3de62d6a7011b2781d7d646
child 728935 4ff235ea9364927a76f84aeab52ba7933579701d
push id76982
push userbmo:jyavenard@mozilla.com
push dateWed, 30 Aug 2017 13:14:28 +0000
reviewerscpearce
bugs1394589
milestone57.0a1
Bug 1394589: Load AMD VP9 decoder using CLSID. r?cpearce MozReview-Commit-ID: xrUywFk4bu
dom/media/platforms/wmf/WMFVideoMFTManager.cpp
--- a/dom/media/platforms/wmf/WMFVideoMFTManager.cpp
+++ b/dom/media/platforms/wmf/WMFVideoMFTManager.cpp
@@ -522,26 +522,32 @@ WMFVideoMFTManager::ValidateVideoInfo()
 }
 
 already_AddRefed<MFTDecoder>
 WMFVideoMFTManager::LoadAMDVP9Decoder()
 {
   MOZ_ASSERT(mStreamType == VP9);
 
   RefPtr<MFTDecoder> decoder = new MFTDecoder();
-  // Check if we can load the AMD VP9 decoder.
+
+  HRESULT hr = decoder->Create(CLSID_AMDWebmMfVp9Dec);
+  if (SUCCEEDED(hr)) {
+    return decoder.forget();
+  }
+
+  // Check if we can load the AMD VP9 decoder using the path name.
   nsString path = GetProgramW6432Path();
   path.Append(kAMDVPXDecoderDLLPath);
   path.Append(kAMDVP9DecoderDLLName);
   HMODULE decoderDLL = ::LoadLibraryEx(path.get(), NULL,
                                        LOAD_WITH_ALTERED_SEARCH_PATH);
   if (!decoderDLL) {
     return nullptr;
   }
-  HRESULT hr = decoder->Create(decoderDLL, CLSID_AMDWebmMfVp9Dec);
+  hr = decoder->Create(decoderDLL, CLSID_AMDWebmMfVp9Dec);
   NS_ENSURE_TRUE(SUCCEEDED(hr), nullptr);
   return decoder.forget();
 }
 
 bool
 WMFVideoMFTManager::Init()
 {
   if (!ValidateVideoInfo()) {