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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "modules/media_capabilities/MediaCapabilities.h" 5 #include "modules/media_capabilities/MediaCapabilities.h"
6 6
7 #include "bindings/core/v8/CallbackPromiseAdapter.h" 7 #include "bindings/core/v8/CallbackPromiseAdapter.h"
8 #include "bindings/core/v8/ScriptPromise.h" 8 #include "bindings/core/v8/ScriptPromise.h"
9 #include "bindings/core/v8/ScriptPromiseResolver.h" 9 #include "bindings/core/v8/ScriptPromiseResolver.h"
10 #include "bindings/core/v8/ScriptState.h" 10 #include "bindings/core/v8/ScriptState.h"
11 #include "core/dom/DOMException.h"
11 #include "modules/media_capabilities/MediaCapabilitiesInfo.h" 12 #include "modules/media_capabilities/MediaCapabilitiesInfo.h"
13 #include "modules/media_capabilities/MediaConfiguration.h"
12 #include "modules/media_capabilities/MediaDecodingConfiguration.h" 14 #include "modules/media_capabilities/MediaDecodingConfiguration.h"
15 #include "modules/media_capabilities/MediaEncodingConfiguration.h"
13 #include "public/platform/Platform.h" 16 #include "public/platform/Platform.h"
17 #include "public/platform/WebMediaRecorderHandler.h"
14 #include "public/platform/modules/media_capabilities/WebMediaCapabilitiesClient. h" 18 #include "public/platform/modules/media_capabilities/WebMediaCapabilitiesClient. h"
15 #include "public/platform/modules/media_capabilities/WebMediaCapabilitiesInfo.h" 19 #include "public/platform/modules/media_capabilities/WebMediaCapabilitiesInfo.h"
16 #include "public/platform/modules/media_capabilities/WebMediaConfiguration.h" 20 #include "public/platform/modules/media_capabilities/WebMediaConfiguration.h"
17 21
18 namespace blink { 22 namespace blink {
19 23
20 namespace { 24 namespace {
21 25
22 WebAudioConfiguration ToWebAudioConfiguration( 26 WebAudioConfiguration ToWebAudioConfiguration(
23 const AudioConfiguration& configuration) { 27 const AudioConfiguration& configuration) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 DCHECK(configuration.hasBitrate()); 62 DCHECK(configuration.hasBitrate());
59 web_configuration.bitrate = configuration.bitrate(); 63 web_configuration.bitrate = configuration.bitrate();
60 64
61 DCHECK(configuration.hasFramerate()); 65 DCHECK(configuration.hasFramerate());
62 web_configuration.framerate = configuration.framerate(); 66 web_configuration.framerate = configuration.framerate();
63 67
64 return web_configuration; 68 return web_configuration;
65 } 69 }
66 70
67 WebMediaConfiguration ToWebMediaConfiguration( 71 WebMediaConfiguration ToWebMediaConfiguration(
68 const MediaDecodingConfiguration& configuration) { 72 const MediaConfiguration& configuration) {
69 WebMediaConfiguration web_configuration; 73 WebMediaConfiguration web_configuration;
70 74
71 // |type| is mandatory.
72 DCHECK(configuration.hasType());
73
74 if (configuration.hasAudio()) { 75 if (configuration.hasAudio()) {
75 web_configuration.audio_configuration = 76 web_configuration.audio_configuration =
76 ToWebAudioConfiguration(configuration.audio()); 77 ToWebAudioConfiguration(configuration.audio());
77 } 78 }
78 79
79 if (configuration.hasVideo()) { 80 if (configuration.hasVideo()) {
80 web_configuration.video_configuration = 81 web_configuration.video_configuration =
81 ToWebVideoConfiguration(configuration.video()); 82 ToWebVideoConfiguration(configuration.video());
82 } 83 }
83 84
84 return web_configuration; 85 return web_configuration;
85 } 86 }
86 87
87 } // anonymous namespace 88 } // anonymous namespace
88 89
89 MediaCapabilities::MediaCapabilities() = default; 90 MediaCapabilities::MediaCapabilities() = default;
90 91
91 ScriptPromise MediaCapabilities::decodingInfo( 92 ScriptPromise MediaCapabilities::decodingInfo(
92 ScriptState* script_state, 93 ScriptState* script_state,
93 const MediaDecodingConfiguration& configuration) { 94 const MediaDecodingConfiguration& configuration) {
94 ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state); 95 ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state);
95 ScriptPromise promise = resolver->Promise(); 96 ScriptPromise promise = resolver->Promise();
96 97
98 // |type| is mandatory.
99 DCHECK(configuration.hasType());
100
97 Platform::Current()->MediaCapabilitiesClient()->DecodingInfo( 101 Platform::Current()->MediaCapabilitiesClient()->DecodingInfo(
98 ToWebMediaConfiguration(configuration), 102 ToWebMediaConfiguration(configuration),
99 WTF::MakeUnique<CallbackPromiseAdapter<MediaCapabilitiesInfo, void>>( 103 WTF::MakeUnique<CallbackPromiseAdapter<MediaCapabilitiesInfo, void>>(
100 resolver)); 104 resolver));
101 105
102 return promise; 106 return promise;
103 } 107 }
104 108
109 ScriptPromise MediaCapabilities::encodingInfo(
110 ScriptState* script_state,
111 const MediaEncodingConfiguration& configuration) {
112 ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state);
113 ScriptPromise promise = resolver->Promise();
114
115 if (!configuration.hasVideo() && !configuration.hasAudio()) {
116 resolver->Reject(DOMException::Create(
117 kSyntaxError,
118 "The configuration dictionary has neither |video| nor |audio| "
119 "specified and needs at least one of them."));
120 return promise;
121 }
122
123 WebMediaRecorderHandler* handler =
124 Platform::Current()->CreateMediaRecorderHandler();
125 if (!handler) {
126 resolver->Reject(DOMException::Create(
127 kInvalidStateError,
128 "Platform error: could not create MediaRecorderHandler."));
129 return promise;
130 }
131
132 handler->EncodingInfo(
133 ToWebMediaConfiguration(configuration),
134 WTF::MakeUnique<CallbackPromiseAdapter<MediaCapabilitiesInfo, void>>(
135 resolver));
136 return promise;
137 }
138
105 DEFINE_TRACE(MediaCapabilities) {} 139 DEFINE_TRACE(MediaCapabilities) {}
106 140
107 } // namespace blink 141 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698