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
--- 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)
{