Bug 1259212 - Minor WMFVideoMFTManager refactor of output type creation - r?mattwoodrow draft
authorGerald Squelart <gsquelart@mozilla.com>
Fri, 21 Oct 2016 16:15:56 +1100
changeset 428504 274b0bc74522b5307c4ffc97ecfa6374dd49e649
parent 428503 5905ebd75f9529c92110290fc1d0cd9d88551f93
child 428505 e76b5fb2c78d4fa2d60febd3955a48072b031b7c
push id33314
push usergsquelart@mozilla.com
push dateMon, 24 Oct 2016 02:23:32 +0000
reviewersmattwoodrow
bugs1259212
milestone52.0a1
Bug 1259212 - Minor WMFVideoMFTManager refactor of output type creation - r?mattwoodrow No significant code change intended. This will make the next patch easier to review. MozReview-Commit-ID: A5ehQGjvbuZ
dom/media/platforms/wmf/WMFVideoMFTManager.cpp
--- a/dom/media/platforms/wmf/WMFVideoMFTManager.cpp
+++ b/dom/media/platforms/wmf/WMFVideoMFTManager.cpp
@@ -71,17 +71,17 @@ const CLSID CLSID_WebmMfVp9Dec =
 {
   0x7ab4bd2,
   0x1979,
   0x4fcd,
   {0xa6, 0x97, 0xdf, 0x9a, 0xd1, 0x5b, 0x34, 0xfe}
 };
 
 namespace mozilla {
-  
+
 LayersBackend
 GetCompositorBackendType(layers::KnowsCompositor* aKnowsCompositor)
 {
   if (aKnowsCompositor) {
     return aKnowsCompositor->GetCompositorBackendType();
   }
   return LayersBackend::LAYERS_NONE;
 }
@@ -433,16 +433,30 @@ WMFVideoMFTManager::Init()
     } else {
       mDXVAFailureReason.Append(NS_LITERAL_CSTRING("Using D3D9 API"));
     }
   }
 
   return success;
 }
 
+static
+HRESULT
+ConstructOutputType(bool aUseHwAccel, IMFMediaType** aOutputType)
+{
+  HRESULT hr = wmf::MFCreateMediaType(aOutputType);
+  NS_ENSURE_TRUE(SUCCEEDED(hr), hr);
+  hr = (*aOutputType)->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Video);
+  NS_ENSURE_TRUE(SUCCEEDED(hr), hr);
+  GUID outputSubType = aUseHwAccel ? MFVideoFormat_NV12 : MFVideoFormat_YV12;
+  hr = (*aOutputType)->SetGUID(MF_MT_SUBTYPE, outputSubType);
+  NS_ENSURE_TRUE(SUCCEEDED(hr), hr);
+  return S_OK;
+}
+
 bool
 WMFVideoMFTManager::InitInternal(bool aForceD3D9)
 {
   mUseHwAccel = false; // default value; changed if D3D setup succeeds.
   bool useDxva = InitializeDXVA(aForceD3D9 ||
                                 mStreamType == VP8 || mStreamType == VP9);
 
   RefPtr<MFTDecoder> decoder(new MFTDecoder());
@@ -514,24 +528,17 @@ WMFVideoMFTManager::SetDecoderMediaTypes
 
   hr = inputType->SetGUID(MF_MT_SUBTYPE, GetMediaSubtypeGUID());
   NS_ENSURE_TRUE(SUCCEEDED(hr), hr);
 
   hr = inputType->SetUINT32(MF_MT_INTERLACE_MODE, MFVideoInterlace_MixedInterlaceOrProgressive);
   NS_ENSURE_TRUE(SUCCEEDED(hr), hr);
 
   RefPtr<IMFMediaType> outputType;
-  hr = wmf::MFCreateMediaType(getter_AddRefs(outputType));
-  NS_ENSURE_TRUE(SUCCEEDED(hr), hr);
-
-  hr = outputType->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Video);
-  NS_ENSURE_TRUE(SUCCEEDED(hr), hr);
-
-  GUID outputSubType = mUseHwAccel ? MFVideoFormat_NV12 : MFVideoFormat_YV12;
-  hr = outputType->SetGUID(MF_MT_SUBTYPE, outputSubType);
+  hr = ConstructOutputType(mUseHwAccel, getter_AddRefs(outputType));
   NS_ENSURE_TRUE(SUCCEEDED(hr), hr);
 
   return mDecoder->SetMediaTypes(inputType, outputType);
 }
 
 HRESULT
 WMFVideoMFTManager::Input(MediaRawData* aSample)
 {