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

Side by Side Diff: third_party/WebKit/Source/modules/media_capabilities/MediaCapabilities.cpp

Issue 2706313002: Media Capabilities: add plumbing between Blink and media/blink/. (Closed)
Patch Set: oups Created 3 years, 9 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/ScriptPromise.h" 8 #include "bindings/core/v8/ScriptPromise.h"
8 #include "bindings/core/v8/ScriptPromiseResolver.h" 9 #include "bindings/core/v8/ScriptPromiseResolver.h"
9 #include "bindings/core/v8/ScriptState.h" 10 #include "bindings/core/v8/ScriptState.h"
10 #include "modules/media_capabilities/MediaConfiguration.h" 11 #include "modules/media_capabilities/MediaConfiguration.h"
11 #include "modules/media_capabilities/MediaDecodingAbility.h" 12 #include "modules/media_capabilities/MediaDecodingAbility.h"
13 #include "public/platform/Platform.h"
14 #include "public/platform/modules/media_capabilities/WebMediaCapabilitiesClient. h"
15 #include "public/platform/modules/media_capabilities/WebMediaConfiguration.h"
16 #include "public/platform/modules/media_capabilities/WebMediaDecodingAbility.h"
12 17
13 namespace blink { 18 namespace blink {
14 19
20 namespace {
21
22 WebAudioConfiguration toWebAudioConfiguration(
23 const AudioConfiguration& configuration) {
24 WebAudioConfiguration webConfiguration;
25
26 // contentType is mandatory.
27 DCHECK(configuration.hasContentType());
28 webConfiguration.contentType = configuration.contentType();
29
30 // channels is optional and will be set to a null WebString if not present.
31 webConfiguration.channels = configuration.hasChannels()
32 ? WebString(configuration.channels())
33 : WebString();
34
35 if (configuration.hasBitrate())
36 webConfiguration.bitrate = configuration.bitrate();
37
38 if (configuration.hasSamplerate())
39 webConfiguration.samplerate = configuration.samplerate();
40
41 return webConfiguration;
42 }
43
44 WebVideoConfiguration toWebVideoConfiguration(
45 const VideoConfiguration& configuration) {
46 WebVideoConfiguration webConfiguration;
47
48 // All the properties are mandatory.
49 DCHECK(configuration.hasContentType());
50 webConfiguration.contentType = configuration.contentType();
51
52 DCHECK(configuration.hasWidth());
53 webConfiguration.width = configuration.width();
54
55 DCHECK(configuration.hasHeight());
56 webConfiguration.height = configuration.height();
57
58 DCHECK(configuration.hasBitrate());
59 webConfiguration.bitrate = configuration.bitrate();
60
61 DCHECK(configuration.hasFramerate());
62 webConfiguration.framerate = configuration.framerate();
63
64 return webConfiguration;
65 }
66
67 WebMediaConfiguration toWebMediaConfiguration(
68 const MediaConfiguration& configuration) {
69 WebMediaConfiguration webConfiguration;
70
71 // type is mandatory.
72 DCHECK(configuration.hasType());
73
74 if (configuration.hasAudio()) {
75 webConfiguration.audioConfiguration =
76 toWebAudioConfiguration(configuration.audio());
77 }
78
79 if (configuration.hasVideo()) {
80 webConfiguration.videoConfiguration =
81 toWebVideoConfiguration(configuration.video());
82 }
83
84 return webConfiguration;
85 }
86
87 } // anonymous namespace
88
15 MediaCapabilities::MediaCapabilities() = default; 89 MediaCapabilities::MediaCapabilities() = default;
16 90
17 ScriptPromise MediaCapabilities::query( 91 ScriptPromise MediaCapabilities::query(
18 ScriptState* scriptState, 92 ScriptState* scriptState,
19 const MediaConfiguration& configuration) { 93 const MediaConfiguration& configuration) {
20 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState); 94 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
21 ScriptPromise promise = resolver->promise(); 95 ScriptPromise promise = resolver->promise();
22 resolver->resolve(new MediaDecodingAbility()); 96
97 Platform::current()->mediaCapabilitiesClient()->query(
98 toWebMediaConfiguration(configuration),
99 WTF::makeUnique<CallbackPromiseAdapter<MediaDecodingAbility, void>>(
100 resolver));
101
23 return promise; 102 return promise;
24 } 103 }
25 104
26 DEFINE_TRACE(MediaCapabilities) {} 105 DEFINE_TRACE(MediaCapabilities) {}
27 106
28 } // namespace blink 107 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698