summaryrefslogtreecommitdiff
path: root/chromium/media/base/win
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/base/win')
-rw-r--r--chromium/media/base/win/BUILD.gn5
-rw-r--r--chromium/media/base/win/mf_cdm_proxy.h67
-rw-r--r--chromium/media/base/win/mf_helpers.cc2
-rw-r--r--chromium/media/base/win/mf_initializer.h2
4 files changed, 75 insertions, 1 deletions
diff --git a/chromium/media/base/win/BUILD.gn b/chromium/media/base/win/BUILD.gn
index b59888ffc6c..d30fdc1ef4c 100644
--- a/chromium/media/base/win/BUILD.gn
+++ b/chromium/media/base/win/BUILD.gn
@@ -57,6 +57,11 @@ source_set("hresult_status_helper") {
deps = [ "//media" ]
}
+source_set("mf_cdm_proxy") {
+ sources = [ "mf_cdm_proxy.h" ]
+ deps = [ "//base" ]
+}
+
source_set("d3d11_test_support") {
testonly = true
sources = [
diff --git a/chromium/media/base/win/mf_cdm_proxy.h b/chromium/media/base/win/mf_cdm_proxy.h
new file mode 100644
index 00000000000..536cfa4cf58
--- /dev/null
+++ b/chromium/media/base/win/mf_cdm_proxy.h
@@ -0,0 +1,67 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef MEDIA_BASE_WIN_MF_CDM_PROXY_H_
+#define MEDIA_BASE_WIN_MF_CDM_PROXY_H_
+
+#include <stdint.h>
+#include <unknwn.h>
+
+// Interface for clients to get information from MediaFoundationCdm to
+// implements COM interfaces.
+// COM interface is used because we are working with Media Foundation which uses
+// COM extensively for object lifetime management.
+MIDL_INTERFACE("565ab5c2-9923-44e0-997a-f93ccba5dcbf")
+IMFCdmProxy : public IUnknown {
+ public:
+ // Used by MediaFoundationProtectionManager to get
+ // ABI::Windows::Media::Protection::IMediaProtectionPMPServer to implement
+ // ABI::Windows::Media::Protection::IMediaProtectionManager::get_Properties as
+ // in
+ // https://docs.microsoft.com/en-us/uwp/api/windows.media.protection.mediaprotectionmanager
+ virtual HRESULT STDMETHODCALLTYPE GetPMPServer(
+ /* [in] */ __RPC__in REFIID riid,
+ /* [iid_is][out] */ __RPC__deref_out_opt LPVOID * object_result) = 0;
+
+ // Used by MediaFoundationSourceWrapper to implement
+ // IMFTrustedInput::GetInputTrustAuthority as in
+ // https://docs.microsoft.com/en-us/windows/win32/api/mfidl/nn-mfidl-imftrustedinput
+ //
+ // |content_init_data| is optional initialization data as in
+ // https://www.w3.org/TR/encrypted-media/#initialization-data
+ virtual HRESULT STDMETHODCALLTYPE GetInputTrustAuthority(
+ _In_ uint64_t playback_element_id, _In_ uint32_t stream_id,
+ _In_ uint32_t stream_count,
+ _In_reads_bytes_opt_(content_init_data_size)
+ const uint8_t* content_init_data,
+ _In_ uint32_t content_init_data_size, _In_ REFIID riid,
+ _COM_Outptr_ IUnknown** object_out) = 0;
+
+ // MediaFoundationSourceWrapper provides its last set of key ids
+ // associated with a playback element id using SetLastKeyIds when it is
+ // destructed.
+ // Another instance of MediaFoundationSourceWrapper could then invoke
+ // RefreshTrustedInput to let implementation to reuse those key ids
+ // information when it happens to have the same playback element id.
+ //
+ // |playback_element_id| is an ID corresponding to a particular instance of
+ // video playback element.
+ virtual HRESULT STDMETHODCALLTYPE RefreshTrustedInput(
+ _In_ uint64_t playback_element_id) = 0;
+
+ virtual HRESULT STDMETHODCALLTYPE SetLastKeyIds(
+ _In_ uint64_t playback_element_id, GUID * key_ids,
+ uint32_t key_ids_count) = 0;
+
+ // Used by MediaFoundationProtectionManager to implement
+ // IMFContentProtectionManager::BeginEnableContent as in
+ // https://msdn.microsoft.com/en-us/windows/ms694217(v=vs.71)
+ //
+ // |result| is used to obtain the result of an asynchronous operation as in
+ // https://docs.microsoft.com/en-us/windows/win32/api/mfobjects/nn-mfobjects-imfasyncresult
+ virtual HRESULT STDMETHODCALLTYPE ProcessContentEnabler(
+ _In_ IUnknown * request, _In_ IMFAsyncResult * result) = 0;
+};
+
+#endif // MEDIA_BASE_WIN_MF_CDM_PROXY_H_
diff --git a/chromium/media/base/win/mf_helpers.cc b/chromium/media/base/win/mf_helpers.cc
index fce7ada08e4..29837bb407b 100644
--- a/chromium/media/base/win/mf_helpers.cc
+++ b/chromium/media/base/win/mf_helpers.cc
@@ -4,6 +4,8 @@
#include "media/base/win/mf_helpers.h"
+#include "base/check_op.h"
+
namespace media {
Microsoft::WRL::ComPtr<IMFSample> CreateEmptySampleWithBuffer(
diff --git a/chromium/media/base/win/mf_initializer.h b/chromium/media/base/win/mf_initializer.h
index 2f8431b65bc..714cf3c4501 100644
--- a/chromium/media/base/win/mf_initializer.h
+++ b/chromium/media/base/win/mf_initializer.h
@@ -9,7 +9,7 @@
#include <memory>
-#include "base/logging.h"
+#include "base/compiler_specific.h"
#include "media/base/win/mf_initializer_export.h"
namespace media {