Changeset 284443 in webkit
- Timestamp:
- Oct 19, 2021 4:05:19 AM (9 months ago)
- Location:
- trunk
- Files:
-
- 2 added
- 25 edited
- 3 copied
- 3 moved
-
LayoutTests/imported/w3c/ChangeLog (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/decodingInfo.any.worker-expected.txt (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/encodingInfo.any-expected.txt (copied) (copied from trunk/LayoutTests/imported/w3c/web-platform-tests/media-capabilities/encodingInfo-expected.txt)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/encodingInfo.any.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/encodingInfo.any.js (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/media-capabilities/encodingInfo.html) (2 diffs)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/encodingInfo.any.worker-expected.txt (moved) (moved from trunk/LayoutTests/imported/w3c/web-platform-tests/media-capabilities/encodingInfo-expected.txt)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/encodingInfo.any.worker.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/idlharness.any.worker-expected.txt (modified) (1 diff)
-
Source/WebCore/CMakeLists.txt (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/DerivedSources-input.xcfilelist (modified) (1 diff)
-
Source/WebCore/DerivedSources-output.xcfilelist (modified) (1 diff)
-
Source/WebCore/DerivedSources.make (modified) (1 diff)
-
Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp (modified) (5 diffs)
-
Source/WebCore/Modules/mediacapabilities/MediaCapabilities.h (modified) (2 diffs)
-
Source/WebCore/Modules/mediacapabilities/MediaCapabilities.idl (modified) (1 diff)
-
Source/WebCore/Modules/mediacapabilities/NavigatorMediaCapabilities.cpp (modified) (1 diff)
-
Source/WebCore/Modules/mediacapabilities/WorkerNavigator+MediaCapabilities.idl (moved) (moved from trunk/Source/WebCore/bindings/js/JSMediaCapabilitiesCustom.h) (2 diffs)
-
Source/WebCore/Modules/mediacapabilities/WorkerNavigatorMediaCapabilities.cpp (copied) (copied from trunk/Source/WebCore/Modules/mediacapabilities/NavigatorMediaCapabilities.cpp) (3 diffs)
-
Source/WebCore/Modules/mediacapabilities/WorkerNavigatorMediaCapabilities.h (copied) (copied from trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.h) (2 diffs)
-
Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp (modified) (1 diff)
-
Source/WebCore/Sources.txt (modified) (1 diff)
-
Source/WebCore/WebCore.xcodeproj/project.pbxproj (modified) (3 diffs)
-
Source/WebCore/dom/ScriptExecutionContext.cpp (modified) (2 diffs)
-
Source/WebCore/dom/ScriptExecutionContext.h (modified) (1 diff)
-
Source/WebCore/platform/MediaCapabilitiesDecodingInfo.h (modified) (1 diff)
-
Source/WebCore/platform/MediaCapabilitiesEncodingInfo.h (modified) (1 diff)
-
Source/WebCore/platform/MediaCapabilitiesInfo.h (modified) (1 diff)
-
Source/WebCore/platform/mediacapabilities/AudioConfiguration.h (modified) (1 diff)
-
Source/WebCore/platform/mediacapabilities/MediaConfiguration.h (modified) (2 diffs)
-
Source/WebCore/platform/mediacapabilities/MediaDecodingConfiguration.h (modified) (1 diff)
-
Source/WebCore/platform/mediacapabilities/MediaEncodingConfiguration.h (modified) (1 diff)
-
Source/WebCore/platform/mediacapabilities/VideoConfiguration.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/imported/w3c/ChangeLog
r284440 r284443 1 2021-10-19 Youenn Fablet <youenn@apple.com> 2 3 Expose MediaCapabilities to Workers 4 https://bugs.webkit.org/show_bug.cgi?id=231574 5 6 Reviewed by Eric Carlson. 7 8 Allow running encoding tests in workers as well as in window. 9 10 * web-platform-tests/media-capabilities/decodingInfo.any.worker-expected.txt: 11 * web-platform-tests/media-capabilities/encodingInfo.any-expected.txt: Added. 12 * web-platform-tests/media-capabilities/encodingInfo.any.html: Added. 13 * web-platform-tests/media-capabilities/encodingInfo.any.js: Added. 14 * web-platform-tests/media-capabilities/encodingInfo.any.worker-expected.txt: Added. 15 * web-platform-tests/media-capabilities/encodingInfo.any.worker.html: Added. 16 * web-platform-tests/media-capabilities/encodingInfo-expected: Removed. 17 * web-platform-tests/media-capabilities/encodingInfo.html: Removed. 18 * web-platform-tests/media-capabilities/idlharness.any.worker-expected.txt: 19 1 20 2021-10-18 Sergio Villar Senin <svillar@igalia.com> 2 21 -
trunk/LayoutTests/imported/w3c/web-platform-tests/media-capabilities/decodingInfo.any.worker-expected.txt
r284085 r284443 1 1 2 FAIL Test that decodingInfo rejects if it doesn't get a configuration undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 3 FAIL Test that decodingInfo rejects if the MediaConfiguration isn't valid undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 4 FAIL Test that decodingInfo rejects if the MediaConfiguration does not have a type undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 5 FAIL Test that decodingInfo rejects if the configuration doesn't have an audio or video field undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 6 FAIL Test that decodingInfo rejects if the video configuration has a negative framerate undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 7 FAIL Test that decodingInfo rejects if the video configuration has a framerate set to 0 undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 8 FAIL Test that decodingInfo rejects if the video configuration has a framerate set to Infinity undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 9 FAIL Test that decodingInfo rejects if the video configuration contentType doesn't parse undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 10 FAIL Test that decodingInfo rejects if the video configuration contentType isn't of type video undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 11 FAIL Test that decodingInfo rejects if the video configuration contentType has more than one parameter undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo')12 FAIL Test that decodingInfo rejects if the video configuration contentType has one parameter that isn't codecs undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 13 FAIL Test that decodingInfo() rejects framerate in the form of x/y undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 14 FAIL Test that decodingInfo() rejects framerate in the form of x/0 undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 15 FAIL Test that decodingInfo() rejects framerate in the form of 0/y undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 16 FAIL Test that decodingInfo() rejects framerate in the form of -x/y undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 17 FAIL Test that decodingInfo() rejects framerate in the form of x/-y undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 18 FAIL Test that decodingInfo() rejects framerate in the form of x/ undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 19 FAIL Test that decodingInfo() rejects framerate with trailing unallowed characters undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 20 FAIL Test that decodingInfo rejects if the audio configuration contenType doesn't parse undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 21 FAIL Test that decodingInfo rejects if the audio configuration contentType isn't of type audio undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 22 FAIL Test that decodingInfo rejects if the audio configuration contentType has more than one parameters undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo')23 FAIL Test that decodingInfo rejects if the audio configuration contentType has one parameter that isn't codecs undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 24 FAIL Test that decodingInfo returns a valid MediaCapabilitiesInfo objects undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo')25 FAIL Test that decodingInfo rejects if the MediaConfiguration does not have a valid type undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 26 FAIL Test that decodingInfo with spatialRendering set returns a valid MediaCapabilitiesInfo objects undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo')27 FAIL Test that decodingInfo with hdrMetadataType, colorGamut, and transferFunction set returns a valid MediaCapabilitiesInfo objects undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo')28 FAIL Test that decodingInfo rejects if the video configuration has an empty hdrMetadataType undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 29 FAIL Test that decodingInfo rejects if the video configuration has a colorGamut set to true undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 30 FAIL Test that decodingInfo rejects if the video configuration has a transferFunction set to 3 undefined is not an object (evaluating 'navigator.mediaCapabilities.decodingInfo') 2 PASS Test that decodingInfo rejects if it doesn't get a configuration 3 PASS Test that decodingInfo rejects if the MediaConfiguration isn't valid 4 PASS Test that decodingInfo rejects if the MediaConfiguration does not have a type 5 PASS Test that decodingInfo rejects if the configuration doesn't have an audio or video field 6 PASS Test that decodingInfo rejects if the video configuration has a negative framerate 7 PASS Test that decodingInfo rejects if the video configuration has a framerate set to 0 8 PASS Test that decodingInfo rejects if the video configuration has a framerate set to Infinity 9 PASS Test that decodingInfo rejects if the video configuration contentType doesn't parse 10 PASS Test that decodingInfo rejects if the video configuration contentType isn't of type video 11 FAIL Test that decodingInfo rejects if the video configuration contentType has more than one parameter assert_unreached: Should have rejected: undefined Reached unreachable code 12 PASS Test that decodingInfo rejects if the video configuration contentType has one parameter that isn't codecs 13 PASS Test that decodingInfo() rejects framerate in the form of x/y 14 PASS Test that decodingInfo() rejects framerate in the form of x/0 15 PASS Test that decodingInfo() rejects framerate in the form of 0/y 16 PASS Test that decodingInfo() rejects framerate in the form of -x/y 17 PASS Test that decodingInfo() rejects framerate in the form of x/-y 18 PASS Test that decodingInfo() rejects framerate in the form of x/ 19 PASS Test that decodingInfo() rejects framerate with trailing unallowed characters 20 PASS Test that decodingInfo rejects if the audio configuration contenType doesn't parse 21 PASS Test that decodingInfo rejects if the audio configuration contentType isn't of type audio 22 FAIL Test that decodingInfo rejects if the audio configuration contentType has more than one parameters assert_unreached: Should have rejected: undefined Reached unreachable code 23 PASS Test that decodingInfo rejects if the audio configuration contentType has one parameter that isn't codecs 24 FAIL Test that decodingInfo returns a valid MediaCapabilitiesInfo objects assert_equals: expected "object" but got "undefined" 25 PASS Test that decodingInfo rejects if the MediaConfiguration does not have a valid type 26 FAIL Test that decodingInfo with spatialRendering set returns a valid MediaCapabilitiesInfo objects assert_equals: expected "object" but got "undefined" 27 FAIL Test that decodingInfo with hdrMetadataType, colorGamut, and transferFunction set returns a valid MediaCapabilitiesInfo objects assert_equals: expected "object" but got "undefined" 28 PASS Test that decodingInfo rejects if the video configuration has an empty hdrMetadataType 29 PASS Test that decodingInfo rejects if the video configuration has a colorGamut set to true 30 PASS Test that decodingInfo rejects if the video configuration has a transferFunction set to 3 31 31 -
trunk/LayoutTests/imported/w3c/web-platform-tests/media-capabilities/encodingInfo.any.js
r284442 r284443 1 <!DOCTYPE html>2 <title>MediaCapabilities.encodingInfo()</title>3 <script src=/resources/testharness.js></script>4 <script src="/resources/testharnessreport.js"></script>5 <script>6 7 1 // Minimal VideoConfiguration that will be allowed per spec. All optional 8 2 // properties are missing. … … 315 309 }), t.unreached_func('Promise.all should not reject for valid types')); 316 310 }, "Test that encodingInfo rejects if the MediaConfiguration does not have a valid type"); 317 318 </script> -
trunk/LayoutTests/imported/w3c/web-platform-tests/media-capabilities/idlharness.any.worker-expected.txt
r284085 r284443 21 21 PASS WorkerNavigator includes NavigatorOnLine: member names are unique 22 22 PASS WorkerNavigator includes NavigatorConcurrentHardware: member names are unique 23 FAIL MediaCapabilities interface: existence and properties of interface object assert_own_property: self does not have own property "MediaCapabilities" expected property "MediaCapabilities" missing 24 FAIL MediaCapabilities interface object length assert_own_property: self does not have own property "MediaCapabilities" expected property "MediaCapabilities" missing 25 FAIL MediaCapabilities interface object name assert_own_property: self does not have own property "MediaCapabilities" expected property "MediaCapabilities" missing 26 FAIL MediaCapabilities interface: existence and properties of interface prototype object assert_own_property: self does not have own property "MediaCapabilities" expected property "MediaCapabilities" missing 27 FAIL MediaCapabilities interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "MediaCapabilities" expected property "MediaCapabilities" missing 28 FAIL MediaCapabilities interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "MediaCapabilities" expected property "MediaCapabilities" missing 29 FAIL MediaCapabilities interface: operation decodingInfo(MediaDecodingConfiguration) assert_own_property: self does not have own property "MediaCapabilities" expected property "MediaCapabilities" missing 30 FAIL MediaCapabilities interface: operation encodingInfo(MediaEncodingConfiguration) assert_own_property: self does not have own property "MediaCapabilities" expected property "MediaCapabilities" missing 31 FAIL MediaCapabilities must be primary interface of navigator.mediaCapabilities assert_equals: wrong typeof object expected "object" but got "undefined" 32 FAIL Stringification of navigator.mediaCapabilities assert_equals: wrong typeof object expected "object" but got "undefined" 33 FAIL MediaCapabilities interface: navigator.mediaCapabilities must inherit property "decodingInfo(MediaDecodingConfiguration)" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" 34 FAIL MediaCapabilities interface: calling decodingInfo(MediaDecodingConfiguration) on navigator.mediaCapabilities with too few arguments must throw TypeError assert_equals: wrong typeof object expected "object" but got "undefined" 35 FAIL MediaCapabilities interface: navigator.mediaCapabilities must inherit property "encodingInfo(MediaEncodingConfiguration)" with the proper type assert_equals: wrong typeof object expected "object" but got "undefined" 36 FAIL MediaCapabilities interface: calling encodingInfo(MediaEncodingConfiguration) on navigator.mediaCapabilities with too few arguments must throw TypeError assert_equals: wrong typeof object expected "object" but got "undefined" 37 FAIL WorkerNavigator interface: attribute mediaCapabilities assert_true: The prototype object must have a property "mediaCapabilities" expected true got false 38 FAIL WorkerNavigator interface: navigator must inherit property "mediaCapabilities" with the proper type assert_inherits: property "mediaCapabilities" not found in prototype chain 23 PASS MediaCapabilities interface: existence and properties of interface object 24 PASS MediaCapabilities interface object length 25 PASS MediaCapabilities interface object name 26 PASS MediaCapabilities interface: existence and properties of interface prototype object 27 PASS MediaCapabilities interface: existence and properties of interface prototype object's "constructor" property 28 PASS MediaCapabilities interface: existence and properties of interface prototype object's @@unscopables property 29 PASS MediaCapabilities interface: operation decodingInfo(MediaDecodingConfiguration) 30 PASS MediaCapabilities interface: operation encodingInfo(MediaEncodingConfiguration) 31 PASS MediaCapabilities must be primary interface of navigator.mediaCapabilities 32 PASS Stringification of navigator.mediaCapabilities 33 PASS MediaCapabilities interface: navigator.mediaCapabilities must inherit property "decodingInfo(MediaDecodingConfiguration)" with the proper type 34 PASS MediaCapabilities interface: calling decodingInfo(MediaDecodingConfiguration) on navigator.mediaCapabilities with too few arguments must throw TypeError 35 PASS MediaCapabilities interface: navigator.mediaCapabilities must inherit property "encodingInfo(MediaEncodingConfiguration)" with the proper type 36 PASS MediaCapabilities interface: calling encodingInfo(MediaEncodingConfiguration) on navigator.mediaCapabilities with too few arguments must throw TypeError 37 PASS WorkerNavigator interface: attribute mediaCapabilities 38 PASS WorkerNavigator interface: navigator must inherit property "mediaCapabilities" with the proper type 39 39 -
trunk/Source/WebCore/CMakeLists.txt
r284383 r284443 346 346 Modules/mediacapabilities/TransferFunction.idl 347 347 Modules/mediacapabilities/VideoConfiguration.idl 348 Modules/mediacapabilities/WorkerNavigator+MediaCapabilities.idl 348 349 349 350 Modules/mediacontrols/MediaControlsHost.idl -
trunk/Source/WebCore/ChangeLog
r284440 r284443 1 2021-10-19 Youenn Fablet <youenn@apple.com> 2 3 Expose MediaCapabilities to Workers 4 https://bugs.webkit.org/show_bug.cgi?id=231574 5 6 Reviewed by Eric Carlson. 7 8 Expose Media Capabilities to workers by hopping to main thread and using worker responsible document for gathering Media Capabilities, then hopping back to worker. 9 MediaCapabilities will store the promises when waiting for media capabilities gathering by document. 10 11 We remove CustomEnabled since it is not supported in Workers and we are now exposing encoding info for WebRTC anyway. 12 13 Tests: imported/w3c/web-platform-tests/media-capabilities/encodingInfo.any.html 14 imported/w3c/web-platform-tests/media-capabilities/encodingInfo.any.worker.html 15 16 * CMakeLists.txt: 17 * DerivedSources-input.xcfilelist: 18 * DerivedSources-output.xcfilelist: 19 * DerivedSources.make: 20 * Modules/mediacapabilities/MediaCapabilities.cpp: 21 * Modules/mediacapabilities/MediaCapabilities.h: 22 * Modules/mediacapabilities/MediaCapabilities.idl: 23 * Modules/mediacapabilities/NavigatorMediaCapabilities.cpp: 24 * Modules/mediacapabilities/NavigatorMediaCapabilities.h: 25 * Modules/mediacapabilities/WorkerNavigator+MediaCapabilities.idl: Added. 26 * Modules/mediacapabilities/WorkerNavigatorMediaCapabilities.cpp: Added. 27 * Modules/mediacapabilities/WorkerNavigatorMediaCapabilities.h: Added. 28 * Sources.txt: 29 * WebCore.xcodeproj/project.pbxproj: 30 * dom/ScriptExecutionContext.cpp: 31 * dom/ScriptExecutionContext.h: 32 * platform/MediaCapabilitiesDecodingInfo.h: 33 * platform/MediaCapabilitiesEncodingInfo.h: 34 * platform/MediaCapabilitiesInfo.h: 35 * platform/mediacapabilities/AudioConfiguration.h: 36 * platform/mediacapabilities/MediaConfiguration.h: 37 * platform/mediacapabilities/MediaDecodingConfiguration.h: 38 * platform/mediacapabilities/MediaEncodingConfiguration.h: 39 * platform/mediacapabilities/VideoConfiguration.h: 40 1 41 2021-10-18 Sergio Villar Senin <svillar@igalia.com> 2 42 -
trunk/Source/WebCore/DerivedSources-input.xcfilelist
r284347 r284443 178 178 $(PROJECT_DIR)/Modules/mediacapabilities/TransferFunction.idl 179 179 $(PROJECT_DIR)/Modules/mediacapabilities/VideoConfiguration.idl 180 $(PROJECT_DIR)/Modules/mediacapabilities/WorkerNavigator+MediaCapabilities.idl 180 181 $(PROJECT_DIR)/Modules/mediacontrols/MediaControlsHost.idl 181 182 $(PROJECT_DIR)/Modules/mediarecorder/BlobEvent.idl -
trunk/Source/WebCore/DerivedSources-output.xcfilelist
r284347 r284443 2496 2496 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSWorkerLocation.cpp 2497 2497 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSWorkerLocation.h 2498 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSWorkerNavigator+MediaCapabilities.cpp 2499 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSWorkerNavigator+MediaCapabilities.h 2498 2500 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSWorkerNavigator.cpp 2499 2501 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSWorkerNavigator.h -
trunk/Source/WebCore/DerivedSources.make
r284347 r284443 204 204 $(WebCore)/Modules/mediacapabilities/TransferFunction.idl \ 205 205 $(WebCore)/Modules/mediacapabilities/VideoConfiguration.idl \ 206 $(WebCore)/Modules/mediacapabilities/WorkerNavigator+MediaCapabilities.idl \ 206 207 $(WebCore)/Modules/mediacontrols/MediaControlsHost.idl \ 207 208 $(WebCore)/Modules/mediarecorder/BlobEvent.idl \ -
trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp
r284236 r284443 169 169 } 170 170 171 void MediaCapabilities::decodingInfo(Document& document, MediaDecodingConfiguration&& configuration, Ref<DeferredPromise>&& promise) 171 static void gatherDecodingInfo(Document& document, MediaDecodingConfiguration&& configuration, MediaEngineConfigurationFactory::DecodingConfigurationCallback&& callback) 172 { 173 RELEASE_LOG_INFO(Media, "Gathering decoding MediaCapabilities"); 174 MediaEngineConfigurationFactory::DecodingConfigurationCallback decodingCallback = [callback = WTFMove(callback)](auto&& result) mutable { 175 RELEASE_LOG_INFO(Media, "Finished gathering decoding MediaCapabilities"); 176 callback(WTFMove(result)); 177 }; 178 179 if (!document.settings().mediaCapabilitiesExtensionsEnabled() && configuration.video) 180 configuration.video.value().alphaChannel.reset(); 181 182 #if ENABLE(VP9) 183 configuration.canExposeVP9 = document.settings().vp9DecoderEnabled(); 184 #endif 185 186 #if ENABLE(WEB_RTC) 187 if (configuration.type == MediaDecodingType::WebRTC) { 188 if (auto* page = document.page()) 189 page->libWebRTCProvider().createDecodingConfiguration(WTFMove(configuration), WTFMove(decodingCallback)); 190 return; 191 } 192 #else 193 UNUSED_PARAM(document); 194 #endif 195 MediaEngineConfigurationFactory::createDecodingConfiguration(WTFMove(configuration), WTFMove(decodingCallback)); 196 } 197 198 static void gatherEncodingInfo(Document& document, MediaEncodingConfiguration&& configuration, MediaEngineConfigurationFactory::EncodingConfigurationCallback&& callback) 199 { 200 RELEASE_LOG_INFO(Media, "Gathering encoding MediaCapabilities"); 201 MediaEngineConfigurationFactory::EncodingConfigurationCallback encodingCallback = [callback = WTFMove(callback)](auto&& result) mutable { 202 RELEASE_LOG_INFO(Media, "Finished gathering encoding MediaCapabilities"); 203 callback(WTFMove(result)); 204 }; 205 206 #if ENABLE(WEB_RTC) 207 if (configuration.type == MediaEncodingType::WebRTC) { 208 if (auto* page = document.page()) 209 page->libWebRTCProvider().createEncodingConfiguration(WTFMove(configuration), WTFMove(encodingCallback)); 210 return; 211 } 212 #else 213 UNUSED_PARAM(document); 214 #endif 215 MediaEngineConfigurationFactory::createEncodingConfiguration(WTFMove(configuration), WTFMove(encodingCallback)); 216 } 217 218 void MediaCapabilities::decodingInfo(ScriptExecutionContext& context, MediaDecodingConfiguration&& configuration, Ref<DeferredPromise>&& promise) 172 219 { 173 220 // 2.4 Media Capabilities Interface 174 221 // https://wicg.github.io/media-capabilities/#media-capabilities-interface 175 176 auto identifier = WTF::Logger::LogSiteIdentifier("MediaCapabilities", __func__, this);177 Ref<Logger> logger = document.logger();178 222 179 223 // 1. If configuration is not a valid MediaConfiguration, return a Promise rejected with a TypeError. … … 193 237 // 3. If configuration.audio is present and is not a valid audio configuration, return a Promise rejected with a TypeError. 194 238 if (!isValidMediaConfiguration(configuration)) { 195 #if !RELEASE_LOG_DISABLED 196 logger->info(LogMedia, identifier, " - Rejected. configuration: ", configuration); 197 #endif 239 RELEASE_LOG_INFO(Media, "Invalid decoding media configuration"); 198 240 promise->reject(TypeError); 199 241 return; 200 242 } 201 202 if (!document.settings().mediaCapabilitiesExtensionsEnabled() && configuration.video)203 configuration.video.value().alphaChannel.reset();204 205 #if ENABLE(VP9)206 configuration.canExposeVP9 = document.settings().vp9DecoderEnabled();207 #endif208 243 209 244 // 4. Let p be a new promise. … … 211 246 // 6. Return p. 212 247 213 MediaEngineConfigurationFactory::DecodingConfigurationCallback callback = [promise = WTFMove(promise), identifier = WTFMove(identifier), logger = WTFMove(logger), document = Ref { document }](auto info) mutable { 214 #if !RELEASE_LOG_DISABLED 215 logger->info(LogMedia, identifier, "::callback() - Resolved. info: ", info); 216 #endif 217 document->eventLoop().queueTask(TaskSource::MediaElement, [promise = WTFMove(promise), info = WTFMove(info)] () mutable { 248 MediaEngineConfigurationFactory::DecodingConfigurationCallback callback = [promise = WTFMove(promise), context = Ref { context }](auto info) mutable { 249 context->eventLoop().queueTask(TaskSource::MediaElement, [promise = WTFMove(promise), info = WTFMove(info)] () mutable { 218 250 promise->resolve<IDLDictionary<MediaCapabilitiesDecodingInfo>>(WTFMove(info)); 219 251 }); 220 252 }; 221 253 222 #if ENABLE(WEB_RTC) 223 if (configuration.type == MediaDecodingType::WebRTC) { 224 if (auto* page = document.page()) 225 page->libWebRTCProvider().createDecodingConfiguration(WTFMove(configuration), WTFMove(callback)); 226 return; 227 } 228 #endif 229 MediaEngineConfigurationFactory::createDecodingConfiguration(WTFMove(configuration), WTFMove(callback)); 230 } 231 232 void MediaCapabilities::encodingInfo(Document& document, MediaEncodingConfiguration&& configuration, Ref<DeferredPromise>&& promise) 254 if (is<Document>(context)) { 255 gatherDecodingInfo(downcast<Document>(context), WTFMove(configuration), WTFMove(callback)); 256 return; 257 } 258 259 m_decodingTasks.add(++m_nextTaskIdentifier, WTFMove(callback)); 260 context.postTaskToResponsibleDocument([configuration = WTFMove(configuration).isolatedCopy(), contextIdentifier = context.contextIdentifier(), weakThis = WeakPtr { this }, taskIdentifier = m_nextTaskIdentifier](auto& document) mutable { 261 gatherDecodingInfo(document, WTFMove(configuration), [contextIdentifier, weakThis = WTFMove(weakThis), taskIdentifier](auto&& result) mutable { 262 ScriptExecutionContext::postTaskTo(contextIdentifier, [weakThis = WTFMove(weakThis), taskIdentifier, result = WTFMove(result).isolatedCopy()](auto&) mutable { 263 if (!weakThis) 264 return; 265 if (auto callback = weakThis->m_decodingTasks.take(taskIdentifier)) 266 callback(WTFMove(result)); 267 }); 268 }); 269 }); 270 } 271 272 void MediaCapabilities::encodingInfo(ScriptExecutionContext& context, MediaEncodingConfiguration&& configuration, Ref<DeferredPromise>&& promise) 233 273 { 234 274 // 2.4 Media Capabilities Interface 235 275 // https://wicg.github.io/media-capabilities/#media-capabilities-interface 236 237 auto identifier = WTF::Logger::LogSiteIdentifier("MediaCapabilities", __func__, this);238 Ref<Logger> logger = document.logger();239 276 240 277 // 1. If configuration is not a valid MediaConfiguration, return a Promise rejected with a TypeError. … … 257 294 // encoding modules. 258 295 if (!isValidMediaConfiguration(configuration)) { 296 RELEASE_LOG_INFO(Media, "Invalid encoding media configuration"); 259 297 promise->reject(TypeError); 260 298 return; … … 265 303 // 6. Return p. 266 304 267 MediaEngineConfigurationFactory::EncodingConfigurationCallback callback = [promise = WTFMove(promise), identifier = WTFMove(identifier), logger = WTFMove(logger), document = Ref { document }](auto info) mutable { 268 #if !RELEASE_LOG_DISABLED 269 logger->info(LogMedia, identifier, "::callback() - Resolved. info: ", info); 270 #endif 271 document->eventLoop().queueTask(TaskSource::MediaElement, [promise = WTFMove(promise), info = WTFMove(info)] () mutable { 305 MediaEngineConfigurationFactory::EncodingConfigurationCallback callback = [promise = WTFMove(promise), context = Ref { context }](auto info) mutable { 306 context->eventLoop().queueTask(TaskSource::MediaElement, [promise = WTFMove(promise), info = WTFMove(info)] () mutable { 272 307 promise->resolve<IDLDictionary<MediaCapabilitiesEncodingInfo>>(WTFMove(info)); 273 308 }); 274 309 }; 275 310 276 #if ENABLE(WEB_RTC) 277 if (configuration.type == MediaEncodingType::WebRTC) { 278 if (auto* page = document.page()) 279 page->libWebRTCProvider().createEncodingConfiguration(WTFMove(configuration), WTFMove(callback)); 280 return; 281 } 282 #endif 283 284 MediaEngineConfigurationFactory::createEncodingConfiguration(WTFMove(configuration), WTFMove(callback)); 285 } 286 287 } 311 if (is<Document>(context)) { 312 gatherEncodingInfo(downcast<Document>(context), WTFMove(configuration), WTFMove(callback)); 313 return; 314 } 315 316 m_encodingTasks.add(++m_nextTaskIdentifier, WTFMove(callback)); 317 context.postTaskToResponsibleDocument([configuration = WTFMove(configuration).isolatedCopy(), contextIdentifier = context.contextIdentifier(), weakThis = WeakPtr { this }, taskIdentifier = m_nextTaskIdentifier](auto& document) mutable { 318 gatherEncodingInfo(document, WTFMove(configuration), [contextIdentifier, weakThis = WTFMove(weakThis), taskIdentifier](auto&& result) mutable { 319 ScriptExecutionContext::postTaskTo(contextIdentifier, [weakThis = WTFMove(weakThis), taskIdentifier, result = WTFMove(result).isolatedCopy()](auto&) mutable { 320 if (!weakThis) 321 return; 322 if (auto callback = weakThis->m_encodingTasks.take(taskIdentifier)) 323 callback(WTFMove(result)); 324 }); 325 }); 326 }); 327 } 328 329 } -
trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.h
r278481 r284443 1 1 /* 2 * Copyright (C) 2017 Apple Inc. All rights reserved.2 * Copyright (C) 2017-2021 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 26 26 #pragma once 27 27 28 #include "MediaEngineConfigurationFactory.h" 29 #include <wtf/HashMap.h> 28 30 #include <wtf/RefCounted.h> 31 #include <wtf/WeakPtr.h> 29 32 30 33 namespace WebCore { 31 34 32 35 class DeferredPromise; 33 class Document; 34 struct MediaDecodingConfiguration; 35 struct MediaEncodingConfiguration; 36 class ScriptExecutionContext; 36 37 37 class MediaCapabilities : public RefCounted<MediaCapabilities> {38 class MediaCapabilities : public RefCounted<MediaCapabilities>, public CanMakeWeakPtr<MediaCapabilities> { 38 39 public: 39 void decodingInfo(Document&, MediaDecodingConfiguration&&, Ref<DeferredPromise>&&); 40 void encodingInfo(Document&, MediaEncodingConfiguration&&, Ref<DeferredPromise>&&); 40 static Ref<MediaCapabilities> create() { return adoptRef(*new MediaCapabilities); } 41 42 void decodingInfo(ScriptExecutionContext&, MediaDecodingConfiguration&&, Ref<DeferredPromise>&&); 43 void encodingInfo(ScriptExecutionContext&, MediaEncodingConfiguration&&, Ref<DeferredPromise>&&); 44 45 private: 46 MediaCapabilities() = default; 47 48 uint64_t m_nextTaskIdentifier { 0 }; 49 HashMap<uint64_t, MediaEngineConfigurationFactory::DecodingConfigurationCallback> m_decodingTasks; 50 HashMap<uint64_t, MediaEngineConfigurationFactory::EncodingConfigurationCallback> m_encodingTasks; 41 51 }; 42 52 -
trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.idl
r283463 r284443 27 27 EnabledBySetting=MediaCapabilitiesEnabled, 28 28 ImplementationLacksVTable, 29 JSCustomHeader, 30 Exposed=Window 29 Exposed=(Window,DedicatedWorker) 31 30 ] interface MediaCapabilities { 32 [C ustomEnabled, CallWith=Document] Promise<MediaCapabilitiesDecodingInfo> decodingInfo(MediaDecodingConfiguration configuration);33 [C ustomEnabled, CallWith=Document] Promise<MediaCapabilitiesEncodingInfo> encodingInfo(MediaEncodingConfiguration configuration);31 [CallWith=ScriptExecutionContext] Promise<MediaCapabilitiesDecodingInfo> decodingInfo(MediaDecodingConfiguration configuration); 32 [CallWith=ScriptExecutionContext] Promise<MediaCapabilitiesEncodingInfo> encodingInfo(MediaEncodingConfiguration configuration); 34 33 }; -
trunk/Source/WebCore/Modules/mediacapabilities/NavigatorMediaCapabilities.cpp
r248846 r284443 33 33 34 34 NavigatorMediaCapabilities::NavigatorMediaCapabilities() 35 : m_mediaCapabilities( adoptRef(*new MediaCapabilities()))35 : m_mediaCapabilities(MediaCapabilities::create()) 36 36 { 37 37 } -
trunk/Source/WebCore/Modules/mediacapabilities/WorkerNavigator+MediaCapabilities.idl
r284442 r284443 1 1 /* 2 * Copyright (C) 20 19Apple Inc. All rights reserved.2 * Copyright (C) 2021 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 24 24 */ 25 25 26 #pragma once 27 28 #include "MediaEngineConfigurationFactory.h" 29 30 namespace WebCore { 31 32 ALWAYS_INLINE bool JSMediaCapabilitiesEncodingInfoIsEnabled() 33 { 34 #if ENABLE(WEB_RTC) 35 return true; 36 #else 37 return MediaEngineConfigurationFactory::hasEncodingConfigurationFactory(); 38 #endif 39 } 40 41 ALWAYS_INLINE bool JSMediaCapabilitiesDecodingInfoIsEnabled() 42 { 43 #if ENABLE(WEB_RTC) 44 return true; 45 #else 46 return MediaEngineConfigurationFactory::hasDecodingConfigurationFactory(); 47 #endif 48 } 49 50 } 26 // https://w3c.github.io/media-capabilities/#navigators-extensions 27 [ 28 EnabledBySetting=MediaCapabilitiesEnabled, 29 ImplementedBy=WorkerNavigatorMediaCapabilities 30 ] partial interface WorkerNavigator { 31 [SameObject] readonly attribute MediaCapabilities mediaCapabilities; 32 }; -
trunk/Source/WebCore/Modules/mediacapabilities/WorkerNavigatorMediaCapabilities.cpp
r284442 r284443 1 1 /* 2 * Copyright (C) 20 17Apple Inc. All rights reserved.2 * Copyright (C) 2021 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 25 25 26 26 #include "config.h" 27 #include " NavigatorMediaCapabilities.h"27 #include "WorkerNavigatorMediaCapabilities.h" 28 28 29 29 #include "MediaCapabilities.h" 30 #include " Navigator.h"30 #include "WorkerNavigator.h" 31 31 32 32 namespace WebCore { 33 33 34 NavigatorMediaCapabilities::NavigatorMediaCapabilities()35 : m_mediaCapabilities( adoptRef(*new MediaCapabilities()))34 WorkerNavigatorMediaCapabilities::WorkerNavigatorMediaCapabilities() 35 : m_mediaCapabilities(MediaCapabilities::create()) 36 36 { 37 37 } 38 38 39 NavigatorMediaCapabilities::~NavigatorMediaCapabilities() = default;39 WorkerNavigatorMediaCapabilities::~WorkerNavigatorMediaCapabilities() = default; 40 40 41 const char* NavigatorMediaCapabilities::supplementName()41 const char* WorkerNavigatorMediaCapabilities::supplementName() 42 42 { 43 return " NavigatorMediaCapabilities";43 return "WorkerNavigatorMediaCapabilities"; 44 44 } 45 45 46 NavigatorMediaCapabilities& NavigatorMediaCapabilities::from(Navigator& navigator)46 WorkerNavigatorMediaCapabilities& WorkerNavigatorMediaCapabilities::from(WorkerNavigator& navigator) 47 47 { 48 NavigatorMediaCapabilities* supplement = static_cast<NavigatorMediaCapabilities*>(Supplement<Navigator>::from(&navigator, supplementName()));48 auto* supplement = static_cast<WorkerNavigatorMediaCapabilities*>(Supplement<WorkerNavigator>::from(&navigator, supplementName())); 49 49 if (!supplement) { 50 auto newSupplement = makeUnique< NavigatorMediaCapabilities>();50 auto newSupplement = makeUnique<WorkerNavigatorMediaCapabilities>(); 51 51 supplement = newSupplement.get(); 52 52 provideTo(&navigator, supplementName(), WTFMove(newSupplement)); … … 55 55 } 56 56 57 MediaCapabilities& NavigatorMediaCapabilities::mediaCapabilities(Navigator& navigator)57 MediaCapabilities& WorkerNavigatorMediaCapabilities::mediaCapabilities(WorkerNavigator& navigator) 58 58 { 59 return NavigatorMediaCapabilities::from(navigator).mediaCapabilities();59 return WorkerNavigatorMediaCapabilities::from(navigator).mediaCapabilities(); 60 60 } 61 61 62 MediaCapabilities& NavigatorMediaCapabilities::mediaCapabilities() const62 MediaCapabilities& WorkerNavigatorMediaCapabilities::mediaCapabilities() const 63 63 { 64 64 return m_mediaCapabilities; -
trunk/Source/WebCore/Modules/mediacapabilities/WorkerNavigatorMediaCapabilities.h
r284442 r284443 1 1 /* 2 * Copyright (C) 20 17Apple Inc. All rights reserved.2 * Copyright (C) 2021 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 26 26 #pragma once 27 27 28 #include <wtf/RefCounted.h>28 #include "Supplementable.h" 29 29 30 30 namespace WebCore { 31 31 32 class DeferredPromise; 33 class Document; 34 struct MediaDecodingConfiguration; 35 struct MediaEncodingConfiguration; 32 class MediaCapabilities; 33 class WorkerNavigator; 36 34 37 class MediaCapabilities : public RefCounted<MediaCapabilities> { 35 class WorkerNavigatorMediaCapabilities final : public Supplement<WorkerNavigator> { 36 WTF_MAKE_FAST_ALLOCATED; 38 37 public: 39 void decodingInfo(Document&, MediaDecodingConfiguration&&, Ref<DeferredPromise>&&); 40 void encodingInfo(Document&, MediaEncodingConfiguration&&, Ref<DeferredPromise>&&); 38 WorkerNavigatorMediaCapabilities(); 39 ~WorkerNavigatorMediaCapabilities(); 40 41 static MediaCapabilities& mediaCapabilities(WorkerNavigator&); 42 static WorkerNavigatorMediaCapabilities& from(WorkerNavigator&); 43 44 MediaCapabilities& mediaCapabilities() const; 45 private: 46 static const char* supplementName(); 47 48 mutable Ref<MediaCapabilities> m_mediaCapabilities; 41 49 }; 42 50 -
trunk/Source/WebCore/Modules/mediasession/MediaSessionCoordinator.cpp
r284057 r284443 34 34 #include "JSMediaSessionCoordinatorState.h" 35 35 #include "Logging.h" 36 #include "MediaMetadata.h" 36 37 #include "MediaSession.h" 37 38 #include "MediaSessionCoordinatorPrivate.h" 39 #include <wtf/CompletionHandler.h> 38 40 #include <wtf/Logger.h> 41 #include <wtf/LoggerHelper.h> 39 42 #include <wtf/Seconds.h> 40 43 -
trunk/Source/WebCore/Sources.txt
r284383 r284443 132 132 Modules/mediacapabilities/MediaCapabilities.cpp 133 133 Modules/mediacapabilities/NavigatorMediaCapabilities.cpp 134 Modules/mediacapabilities/WorkerNavigatorMediaCapabilities.cpp 134 135 Modules/mediasession/MediaMetadata.cpp 135 136 Modules/mediasession/MediaSession.cpp -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r284383 r284443 8184 8184 418FCBCC2706F43400F96ECA /* ServiceWorkerGlobalScopePushAPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ServiceWorkerGlobalScopePushAPI.h; sourceTree = "<group>"; }; 8185 8185 418FCBCD2706F43400F96ECA /* ServiceWorkerGlobalScopePushAPI.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ServiceWorkerGlobalScopePushAPI.cpp; sourceTree = "<group>"; }; 8186 418FCBE82715AA1900F96ECA /* JSMediaCapabilitiesCustom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSMediaCapabilitiesCustom.h; sourceTree = "<group>"; }; 8186 418FCBEA2715B60F00F96ECA /* WorkerNavigator+MediaCapabilities.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = "WorkerNavigator+MediaCapabilities.idl"; sourceTree = "<group>"; }; 8187 418FCBEC2715B85100F96ECA /* WorkerNavigatorMediaCapabilities.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WorkerNavigatorMediaCapabilities.h; sourceTree = "<group>"; }; 8188 418FCBED2715B85200F96ECA /* WorkerNavigatorMediaCapabilities.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WorkerNavigatorMediaCapabilities.cpp; sourceTree = "<group>"; }; 8187 8189 4190F3A1249D152700531C57 /* FrameRateMonitor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FrameRateMonitor.cpp; sourceTree = "<group>"; }; 8188 8190 4190F3A3249D152800531C57 /* FrameRateMonitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FrameRateMonitor.h; sourceTree = "<group>"; }; … … 23274 23276 5868C7D52546E0B300BF9DF3 /* JSIntersectionObserverCustom.cpp */, 23275 23277 77C13F042165658A002D9C5F /* JSIntersectionObserverEntryCustom.cpp */, 23276 418FCBE82715AA1900F96ECA /* JSMediaCapabilitiesCustom.h */,23277 23278 AD726FE716D9F204003A4E6D /* JSMediaListCustom.h */, 23278 23279 415CDAF61E6CE0D3004F11EE /* JSMediaStreamTrackCustom.cpp */, … … 28812 28813 CD4E4E622357B3AD007895C3 /* TransferFunction.idl */, 28813 28814 CDBD3D281FE85CB80012C545 /* VideoConfiguration.idl */, 28815 418FCBEA2715B60F00F96ECA /* WorkerNavigator+MediaCapabilities.idl */, 28816 418FCBED2715B85200F96ECA /* WorkerNavigatorMediaCapabilities.cpp */, 28817 418FCBEC2715B85100F96ECA /* WorkerNavigatorMediaCapabilities.h */, 28814 28818 ); 28815 28819 path = mediacapabilities; -
trunk/Source/WebCore/dom/ScriptExecutionContext.cpp
r283526 r284443 65 65 #include "WebCoreJSClientData.h" 66 66 #include "WorkerGlobalScope.h" 67 #include "WorkerLoaderProxy.h" 67 68 #include "WorkerNavigator.h" 68 69 #include "WorkerOrWorkletGlobalScope.h" … … 683 684 } 684 685 686 void ScriptExecutionContext::postTaskToResponsibleDocument(Function<void(Document&)>&& callback) 687 { 688 if (is<Document>(this)) { 689 callback(downcast<Document>(*this)); 690 return; 691 } 692 693 ASSERT(is<WorkerOrWorkletGlobalScope>(this)); 694 if (!is<WorkerOrWorkletGlobalScope>(this)) 695 return; 696 697 auto* thread = downcast<WorkerOrWorkletGlobalScope>(this)->workerOrWorkletThread(); 698 if (thread) { 699 thread->workerLoaderProxy().postTaskToLoader([callback = WTFMove(callback)](auto&& context) { 700 callback(downcast<Document>(context)); 701 }); 702 return; 703 } 704 705 if (auto document = downcast<WorkletGlobalScope>(this)->responsibleDocument()) 706 callback(*document); 707 } 708 685 709 } // namespace WebCore -
trunk/Source/WebCore/dom/ScriptExecutionContext.h
r283526 r284443 224 224 } 225 225 226 void postTaskToResponsibleDocument(Function<void(Document&)>&&); 227 226 228 // Gets the next id in a circular sequence from 1 to 2^31-1. 227 229 int circularSequentialID(); -
trunk/Source/WebCore/platform/MediaCapabilitiesDecodingInfo.h
r278340 r284443 48 48 MediaDecodingConfiguration supportedConfiguration; 49 49 50 MediaCapabilitiesDecodingInfo isolatedCopy() const; 51 50 52 template<class Encoder> void encode(Encoder&) const; 51 53 template<class Decoder> static std::optional<MediaCapabilitiesDecodingInfo> decode(Decoder&); 52 54 }; 55 56 inline MediaCapabilitiesDecodingInfo MediaCapabilitiesDecodingInfo::isolatedCopy() const 57 { 58 return { MediaCapabilitiesInfo::isolatedCopy(), supportedConfiguration.isolatedCopy() }; 59 } 53 60 54 61 template<class Encoder> -
trunk/Source/WebCore/platform/MediaCapabilitiesEncodingInfo.h
r278340 r284443 48 48 MediaEncodingConfiguration supportedConfiguration; 49 49 50 MediaCapabilitiesEncodingInfo isolatedCopy() const; 51 50 52 template<class Encoder> void encode(Encoder&) const; 51 53 template<class Decoder> static std::optional<MediaCapabilitiesEncodingInfo> decode(Decoder&); 52 54 }; 55 56 inline MediaCapabilitiesEncodingInfo MediaCapabilitiesEncodingInfo::isolatedCopy() const 57 { 58 return { MediaCapabilitiesInfo::isolatedCopy(), supportedConfiguration.isolatedCopy() }; 59 } 53 60 54 61 template<class Encoder> -
trunk/Source/WebCore/platform/MediaCapabilitiesInfo.h
r278340 r284443 35 35 bool powerEfficient { false }; 36 36 37 MediaCapabilitiesInfo isolatedCopy() const; 38 37 39 template<class Encoder> void encode(Encoder&) const; 38 40 template<class Decoder> static std::optional<MediaCapabilitiesInfo> decode(Decoder&); 39 41 }; 42 43 inline MediaCapabilitiesInfo MediaCapabilitiesInfo::isolatedCopy() const 44 { 45 return *this; 46 } 40 47 41 48 template<class Encoder> -
trunk/Source/WebCore/platform/mediacapabilities/AudioConfiguration.h
r278340 r284443 37 37 std::optional<bool> spatialRendering; 38 38 39 AudioConfiguration isolatedCopy() const; 40 39 41 template<class Encoder> void encode(Encoder&) const; 40 42 template<class Decoder> static std::optional<AudioConfiguration> decode(Decoder&); 41 43 }; 44 45 inline AudioConfiguration AudioConfiguration::isolatedCopy() const 46 { 47 return { contentType.isolatedCopy(), channels.isolatedCopy(), bitrate, samplerate, spatialRendering }; 48 } 42 49 43 50 template<class Encoder> -
trunk/Source/WebCore/platform/mediacapabilities/MediaConfiguration.h
r278340 r284443 28 28 #include "AudioConfiguration.h" 29 29 #include "VideoConfiguration.h" 30 #include <wtf/CrossThreadCopier.h> 30 31 31 32 namespace WebCore { … … 35 36 std::optional<AudioConfiguration> audio; 36 37 38 MediaConfiguration isolatedCopy() const; 39 37 40 template<class Encoder> void encode(Encoder&) const; 38 41 template<class Decoder> static std::optional<MediaConfiguration> decode(Decoder&); 39 42 }; 43 44 inline MediaConfiguration MediaConfiguration::isolatedCopy() const 45 { 46 return { crossThreadCopy(video), crossThreadCopy(audio) }; 47 } 40 48 41 49 template<class Encoder> -
trunk/Source/WebCore/platform/mediacapabilities/MediaDecodingConfiguration.h
r278253 r284443 36 36 bool canExposeVP9 { true }; 37 37 38 MediaDecodingConfiguration isolatedCopy() const; 39 38 40 template<class Encoder> void encode(Encoder&) const; 39 41 template<class Decoder> static std::optional<MediaDecodingConfiguration> decode(Decoder&); 40 42 }; 43 44 inline MediaDecodingConfiguration MediaDecodingConfiguration::isolatedCopy() const 45 { 46 return { MediaConfiguration::isolatedCopy(), type, canExposeVP9 }; 47 } 41 48 42 49 template<class Encoder> -
trunk/Source/WebCore/platform/mediacapabilities/MediaEncodingConfiguration.h
r278253 r284443 34 34 MediaEncodingType type; 35 35 36 MediaEncodingConfiguration isolatedCopy() const; 37 36 38 template<class Encoder> void encode(Encoder&) const; 37 39 template<class Decoder> static std::optional<MediaEncodingConfiguration> decode(Decoder&); 38 40 }; 41 42 inline MediaEncodingConfiguration MediaEncodingConfiguration::isolatedCopy() const 43 { 44 return { MediaConfiguration::isolatedCopy(), type }; 45 } 39 46 40 47 template<class Encoder> -
trunk/Source/WebCore/platform/mediacapabilities/VideoConfiguration.h
r278340 r284443 44 44 std::optional<TransferFunction> transferFunction; 45 45 46 VideoConfiguration isolatedCopy() const; 47 46 48 template<class Encoder> void encode(Encoder&) const; 47 49 template<class Decoder> static std::optional<VideoConfiguration> decode(Decoder&); 48 50 }; 51 52 inline VideoConfiguration VideoConfiguration::isolatedCopy() const 53 { 54 return { contentType.isolatedCopy(), width, height, bitrate, framerate, alphaChannel, colorGamut, hdrMetadataType, transferFunction }; 55 } 49 56 50 57 template<class Encoder>
Note: See TracChangeset
for help on using the changeset viewer.