1 /* This Source Code Form is subject to the terms of the Mozilla Public
2 * License, v. 2.0. If a copy of the MPL was not distributed with this
3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 #include "WMFClearKeyOutputPolicy.h"
10 #include "WMFClearKeyUtils.h"
14 using Microsoft::WRL::ComPtr
;
15 using Microsoft::WRL::MakeAndInitialize
;
17 HRESULT
WMFClearKeyOutputPolicy::RuntimeClassInitialize(
18 MFPOLICYMANAGER_ACTION aAction
) {
19 ENTRY_LOG_ARGS("aAction=%d", aAction
);
20 if (aAction
!= PEACTION_PLAY
&& aAction
!= PEACTION_EXTRACT
&&
21 aAction
!= PEACTION_NO
) {
22 return MF_E_UNEXPECTED
;
28 STDMETHODIMP
WMFClearKeyOutputPolicy::GenerateRequiredSchemas(
29 DWORD aAttributes
, GUID aGuidOutputSubtype
,
30 GUID
* aGuidProtectionSchemasSupported
,
31 DWORD aProtectionSchemasSupportedCount
,
32 IMFCollection
** aRequiredProtectionSchemas
) {
34 // We don't require an OTA (output trust authority) to enforce for testing.
35 // However, we still need to return an empty collection on success.
36 ComPtr
<IMFCollection
> collection
;
37 RETURN_IF_FAILED(MFCreateCollection(&collection
));
38 *aRequiredProtectionSchemas
= collection
.Detach();
42 STDMETHODIMP
WMFClearKeyOutputPolicy::GetOriginatorID(GUID
* aGuidOriginatorId
) {
44 *aGuidOriginatorId
= GUID_NULL
;
48 STDMETHODIMP
WMFClearKeyOutputPolicy::GetMinimumGRLVersion(
49 DWORD
* aMinimumGrlVersion
) {
51 *aMinimumGrlVersion
= 0;
55 // IMFAttributes inherited by IMFOutputPolicy
56 STDMETHODIMP
WMFClearKeyOutputPolicy::GetItem(REFGUID aGuidKey
,
57 PROPVARIANT
* aValue
) {
61 STDMETHODIMP
WMFClearKeyOutputPolicy::GetItemType(REFGUID aGuidKey
,
62 MF_ATTRIBUTE_TYPE
* aType
) {
66 STDMETHODIMP
WMFClearKeyOutputPolicy::CompareItem(REFGUID aGuidKey
,
67 REFPROPVARIANT aValue
,
72 STDMETHODIMP
WMFClearKeyOutputPolicy::Compare(IMFAttributes
* aAttributes
,
73 MF_ATTRIBUTES_MATCH_TYPE aType
,
78 STDMETHODIMP
WMFClearKeyOutputPolicy::GetUINT32(REFGUID aGuidKey
,
83 STDMETHODIMP
WMFClearKeyOutputPolicy::GetUINT64(REFGUID aGuidKey
,
88 STDMETHODIMP
WMFClearKeyOutputPolicy::GetDouble(REFGUID aGuidKey
,
93 STDMETHODIMP
WMFClearKeyOutputPolicy::GetGUID(REFGUID aGuidKey
,
98 STDMETHODIMP
WMFClearKeyOutputPolicy::GetStringLength(REFGUID aGuidKey
,
99 UINT32
* aPcchLength
) {
103 STDMETHODIMP
WMFClearKeyOutputPolicy::GetString(REFGUID aGuidKey
,
106 UINT32
* aPcchLength
) {
110 STDMETHODIMP
WMFClearKeyOutputPolicy::GetAllocatedString(REFGUID aGuidKey
,
112 UINT32
* aPcchLength
) {
116 STDMETHODIMP
WMFClearKeyOutputPolicy::GetBlobSize(REFGUID aGuidKey
,
117 UINT32
* aPcbBlobSize
) {
121 STDMETHODIMP
WMFClearKeyOutputPolicy::GetBlob(REFGUID aGuidKey
, UINT8
* pBuf
,
123 UINT32
* aPcbBlobSize
) {
127 STDMETHODIMP
WMFClearKeyOutputPolicy::GetAllocatedBlob(REFGUID aGuidKey
,
133 STDMETHODIMP
WMFClearKeyOutputPolicy::GetUnknown(REFGUID aGuidKey
, REFIID aRiid
,
138 STDMETHODIMP
WMFClearKeyOutputPolicy::SetItem(REFGUID aGuidKey
,
139 REFPROPVARIANT aValue
) {
143 STDMETHODIMP
WMFClearKeyOutputPolicy::DeleteItem(REFGUID aGuidKey
) {
147 STDMETHODIMP
WMFClearKeyOutputPolicy::DeleteAllItems() { return E_NOTIMPL
; }
149 STDMETHODIMP
WMFClearKeyOutputPolicy::SetUINT32(REFGUID aGuidKey
,
154 STDMETHODIMP
WMFClearKeyOutputPolicy::SetUINT64(REFGUID aGuidKey
,
159 STDMETHODIMP
WMFClearKeyOutputPolicy::SetDouble(REFGUID aGuidKey
,
164 STDMETHODIMP
WMFClearKeyOutputPolicy::SetGUID(REFGUID aGuidKey
,
165 REFGUID aGuidValue
) {
169 STDMETHODIMP
WMFClearKeyOutputPolicy::SetString(REFGUID aGuidKey
,
174 STDMETHODIMP
WMFClearKeyOutputPolicy::SetBlob(REFGUID aGuidKey
,
180 STDMETHODIMP
WMFClearKeyOutputPolicy::SetUnknown(REFGUID aGuidKey
,
181 IUnknown
* aUnknown
) {
185 STDMETHODIMP
WMFClearKeyOutputPolicy::LockStore() { return E_NOTIMPL
; }
187 STDMETHODIMP
WMFClearKeyOutputPolicy::UnlockStore() { return E_NOTIMPL
; }
189 STDMETHODIMP
WMFClearKeyOutputPolicy::GetCount(UINT32
* aPcItems
) {
193 STDMETHODIMP
WMFClearKeyOutputPolicy::GetItemByIndex(UINT32 aIndex
,
195 PROPVARIANT
* aValue
) {
199 STDMETHODIMP
WMFClearKeyOutputPolicy::CopyAllItems(IMFAttributes
* aDest
) {
203 } // namespace mozilla