Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(604)

Unified Diff: third_party/WebKit/Source/modules/media_capabilities/MediaCapabilities.cpp

Issue 2811103006: Media Capabilities encoding: Blink pass-thru and skeleton renderer/ impl (Closed)
Patch Set: haraken@ comments Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/media_capabilities/MediaCapabilities.cpp
diff --git a/third_party/WebKit/Source/modules/media_capabilities/MediaCapabilities.cpp b/third_party/WebKit/Source/modules/media_capabilities/MediaCapabilities.cpp
index 1858f56f88822d58cec95a0c70a58168c269d5f3..0ec53722e036bacb5aa8c2b2645293372c70b851 100644
--- a/third_party/WebKit/Source/modules/media_capabilities/MediaCapabilities.cpp
+++ b/third_party/WebKit/Source/modules/media_capabilities/MediaCapabilities.cpp
@@ -8,9 +8,13 @@
#include "bindings/core/v8/ScriptPromise.h"
#include "bindings/core/v8/ScriptPromiseResolver.h"
#include "bindings/core/v8/ScriptState.h"
+#include "core/dom/DOMException.h"
#include "modules/media_capabilities/MediaCapabilitiesInfo.h"
+#include "modules/media_capabilities/MediaConfiguration.h"
#include "modules/media_capabilities/MediaDecodingConfiguration.h"
+#include "modules/media_capabilities/MediaEncodingConfiguration.h"
#include "public/platform/Platform.h"
+#include "public/platform/WebMediaRecorderHandler.h"
#include "public/platform/modules/media_capabilities/WebMediaCapabilitiesClient.h"
#include "public/platform/modules/media_capabilities/WebMediaCapabilitiesInfo.h"
#include "public/platform/modules/media_capabilities/WebMediaConfiguration.h"
@@ -65,12 +69,9 @@ WebVideoConfiguration ToWebVideoConfiguration(
}
WebMediaConfiguration ToWebMediaConfiguration(
- const MediaDecodingConfiguration& configuration) {
+ const MediaConfiguration& configuration) {
WebMediaConfiguration web_configuration;
- // |type| is mandatory.
- DCHECK(configuration.hasType());
-
if (configuration.hasAudio()) {
web_configuration.audio_configuration =
ToWebAudioConfiguration(configuration.audio());
@@ -94,6 +95,9 @@ ScriptPromise MediaCapabilities::decodingInfo(
ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state);
ScriptPromise promise = resolver->Promise();
+ // |type| is mandatory.
+ DCHECK(configuration.hasType());
+
Platform::Current()->MediaCapabilitiesClient()->DecodingInfo(
ToWebMediaConfiguration(configuration),
WTF::MakeUnique<CallbackPromiseAdapter<MediaCapabilitiesInfo, void>>(
@@ -102,6 +106,36 @@ ScriptPromise MediaCapabilities::decodingInfo(
return promise;
}
+ScriptPromise MediaCapabilities::encodingInfo(
+ ScriptState* script_state,
+ const MediaEncodingConfiguration& configuration) {
+ ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state);
+ ScriptPromise promise = resolver->Promise();
+
+ if (!configuration.hasVideo() && !configuration.hasAudio()) {
+ resolver->Reject(DOMException::Create(
+ kSyntaxError,
+ "The configuration dictionary has neither |video| nor |audio| "
+ "specified and needs at least one of them."));
+ return promise;
+ }
+
+ WebMediaRecorderHandler* handler =
+ Platform::Current()->CreateMediaRecorderHandler();
+ if (!handler) {
+ resolver->Reject(DOMException::Create(
+ kInvalidStateError,
+ "Platform error: could not create MediaRecorderHandler."));
+ return promise;
+ }
+
+ handler->EncodingInfo(
+ ToWebMediaConfiguration(configuration),
+ WTF::MakeUnique<CallbackPromiseAdapter<MediaCapabilitiesInfo, void>>(
+ resolver));
+ return promise;
+}
+
DEFINE_TRACE(MediaCapabilities) {}
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698