diff options
Diffstat (limited to 'dom/media/platforms/wmf/WMF.h')
-rw-r--r-- | dom/media/platforms/wmf/WMF.h | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/dom/media/platforms/wmf/WMF.h b/dom/media/platforms/wmf/WMF.h new file mode 100644 index 000000000..5ede0d361 --- /dev/null +++ b/dom/media/platforms/wmf/WMF.h @@ -0,0 +1,104 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim:set ts=2 sw=2 sts=2 et cindent: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef WMF_H_ +#define WMF_H_ + +#if WINVER < _WIN32_WINNT_WIN7 +#error \ +You must include WMF.h before including mozilla headers, \ +otherwise mozconfig.h will be included \ +and that sets WINVER to WinXP, \ +which makes Windows Media Foundation unavailable. +#endif + +#pragma push_macro("WINVER") +#undef WINVER +#define WINVER _WIN32_WINNT_WIN7 + +#include <windows.h> +#include <mfapi.h> +#include <mfidl.h> +#include <mfreadwrite.h> +#include <mfobjects.h> +#include <ks.h> +#include <stdio.h> +#include <mferror.h> +#include <propvarutil.h> +#include <wmcodecdsp.h> +#include <d3d9.h> +#include <dxva2api.h> +#include <wmcodecdsp.h> +#include <codecapi.h> + +// The Windows headers helpfully declare min and max macros, which don't +// compile in the prescence of std::min and std::max and unified builds. +// So undef them here. +#ifdef min +#undef min +#endif +#ifdef max +#undef max +#endif + +// Some SDK versions don't define the AAC decoder CLSID. +#ifndef CLSID_CMSAACDecMFT +extern "C" const CLSID CLSID_CMSAACDecMFT; +#define WMF_MUST_DEFINE_AAC_MFT_CLSID +#endif + +namespace mozilla { +namespace wmf { + +// If successful, loads all required WMF DLLs and calls the WMF MFStartup() +// function. +HRESULT MFStartup(); + +// Calls the WMF MFShutdown() function. Call this once for every time +// wmf::MFStartup() succeeds. Note: does not unload the WMF DLLs loaded by +// MFStartup(); leaves them in memory to save I/O at next MFStartup() call. +HRESULT MFShutdown(); + +// All functions below are wrappers around the corresponding WMF function, +// and automatically locate and call the corresponding function in the WMF DLLs. + +HRESULT MFCreateMediaType(IMFMediaType **aOutMFType); + +HRESULT MFGetStrideForBitmapInfoHeader(DWORD aFormat, + DWORD aWidth, + LONG *aOutStride); + +HRESULT MFGetService(IUnknown *punkObject, + REFGUID guidService, + REFIID riid, + LPVOID *ppvObject); + +HRESULT DXVA2CreateDirect3DDeviceManager9(UINT *pResetToken, + IDirect3DDeviceManager9 **ppDXVAManager); + + +HRESULT MFCreateDXGIDeviceManager(UINT *pResetToken, IMFDXGIDeviceManager **ppDXVAManager); + +HRESULT MFCreateSample(IMFSample **ppIMFSample); + +HRESULT MFCreateAlignedMemoryBuffer(DWORD cbMaxLength, + DWORD fAlignmentFlags, + IMFMediaBuffer **ppBuffer); + +HRESULT MFCreateDXGISurfaceBuffer(REFIID riid, + IUnknown *punkSurface, + UINT uSubresourceIndex, + BOOL fButtomUpWhenLinear, + IMFMediaBuffer **ppBuffer); + +} // end namespace wmf +} // end namespace mozilla + + + +#pragma pop_macro("WINVER") + +#endif |