Changeset 284085 in webkit
- Timestamp:
- Oct 13, 2021 2:54:07 AM (9 months ago)
- Location:
- trunk
- Files:
-
- 20 added
- 4 deleted
- 21 edited
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/imported/w3c/ChangeLog (modified) (1 diff)
-
LayoutTests/imported/w3c/resources/import-expectations.json (modified) (1 diff)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/META.yml (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/README.md (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/decodingInfo.any-expected.txt (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/decodingInfo.any.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/decodingInfo.any.js (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/decodingInfo.any.worker-expected.txt (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/decodingInfo.any.worker.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/decodingInfo.webrtc-expected.txt (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/decodingInfo.webrtc.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/encodingInfo-expected.txt (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/encodingInfo.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/encodingInfo.webrtc-expected.txt (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/encodingInfo.webrtc.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/idlharness.any-expected.txt (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/idlharness.any.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/idlharness.any.js (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/idlharness.any.worker-expected.txt (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/idlharness.any.worker.html (added)
-
LayoutTests/imported/w3c/web-platform-tests/media-capabilities/w3c-import.log (added)
-
LayoutTests/media/mediacapabilities/mock-encodingInfo-expected.txt (modified) (9 diffs)
-
LayoutTests/media/mediacapabilities/mock-encodingInfo.html (modified) (9 diffs)
-
LayoutTests/platform/ios/media/mediacapabilities (deleted)
-
LayoutTests/platform/mac/media/mediacapabilities/mediacapabilities-encodingInfo-undefined-expected.txt (deleted)
-
LayoutTests/platform/mac/media/mediacapabilities/mediacapabilities-encodingInfo-undefined.html (deleted)
-
LayoutTests/platform/mac/media/mediacapabilities/mediacapabilities-types-expected.txt (deleted)
-
LayoutTests/tests-options.json (modified) (1 diff)
-
Source/WebCore/ChangeLog (modified) (1 diff)
-
Source/WebCore/Headers.cmake (modified) (1 diff)
-
Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp (modified) (6 diffs)
-
Source/WebCore/Modules/mediacapabilities/MediaDecodingType.idl (modified) (1 diff)
-
Source/WebCore/Modules/mediacapabilities/MediaEncodingType.idl (modified) (1 diff)
-
Source/WebCore/WebCore.xcodeproj/project.pbxproj (modified) (6 diffs)
-
Source/WebCore/bindings/js/JSMediaCapabilitiesCustom.h (modified) (1 diff)
-
Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (modified) (1 diff)
-
Source/WebCore/platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp (modified) (1 diff)
-
Source/WebCore/platform/mediacapabilities/MediaCapabilitiesLogging.h (modified) (1 diff)
-
Source/WebCore/platform/mediacapabilities/MediaDecodingType.h (modified) (2 diffs)
-
Source/WebCore/platform/mediacapabilities/MediaEncodingType.h (modified) (2 diffs)
-
Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp (modified) (4 diffs)
-
Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.h (modified) (6 diffs)
-
Source/WebCore/platform/mock/MediaEngineConfigurationFactoryMock.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r284084 r284085 1 2021-10-13 Youenn Fablet <youenn@apple.com> 2 3 Add support for WebRTC media capabilities 4 https://bugs.webkit.org/show_bug.cgi?id=231568 5 6 Reviewed by Eric Carlson. 7 8 * media/mediacapabilities/mock-encodingInfo-expected.txt: 9 * media/mediacapabilities/mock-encodingInfo.html: 10 * platform/ios/media/mediacapabilities/mediacapabilities-encodingInfo-undefined-expected.txt: Removed. 11 * platform/ios/media/mediacapabilities/mediacapabilities-encodingInfo-undefined.html: Removed. 12 * platform/ios/media/mediacapabilities/mediacapabilities-types-expected.txt: Removed. 13 * platform/mac/media/mediacapabilities/mediacapabilities-types-expected.txt: Removed. 14 * platform/mac/media/mediacapabilities/mediacapabilities-encodingInfo-undefined-expected.txt: Removed. 15 * platform/mac/media/mediacapabilities/mediacapabilities-encodingInfo-undefined.html: Removed. 16 * platform/mac/media/mediacapabilities/mediacapabilities-types-expected.txt: 17 * tests-options.json: 18 1 19 2021-10-13 Martin Robinson <mrobinson@webkit.org> 2 20 -
trunk/LayoutTests/imported/w3c/ChangeLog
r284067 r284085 1 2021-10-13 Youenn Fablet <youenn@apple.com> 2 3 Add support for WebRTC media capabilities 4 https://bugs.webkit.org/show_bug.cgi?id=231568 5 6 Reviewed by Eric Carlson. 7 8 * resources/import-expectations.json: 9 * web-platform-tests/media-capabilities/META.yml: Added. 10 * web-platform-tests/media-capabilities/README.md: Added. 11 * web-platform-tests/media-capabilities/decodingInfo.any-expected.txt: Added. 12 * web-platform-tests/media-capabilities/decodingInfo.any.html: Added. 13 * web-platform-tests/media-capabilities/decodingInfo.any.js: Added. 14 * web-platform-tests/media-capabilities/decodingInfo.any.worker-expected.txt: Added. 15 * web-platform-tests/media-capabilities/decodingInfo.any.worker.html: Added. 16 * web-platform-tests/media-capabilities/decodingInfo.webrtc-expected.txt: Added. 17 * web-platform-tests/media-capabilities/decodingInfo.webrtc.html: Added. 18 * web-platform-tests/media-capabilities/encodingInfo-expected.txt: Added. 19 * web-platform-tests/media-capabilities/encodingInfo.html: Added. 20 * web-platform-tests/media-capabilities/encodingInfo.webrtc-expected.txt: Added. 21 * web-platform-tests/media-capabilities/encodingInfo.webrtc.html: Added. 22 * web-platform-tests/media-capabilities/idlharness.any-expected.txt: Added. 23 * web-platform-tests/media-capabilities/idlharness.any.html: Added. 24 * web-platform-tests/media-capabilities/idlharness.any.js: Added. 25 * web-platform-tests/media-capabilities/idlharness.any.worker-expected.txt: Added. 26 * web-platform-tests/media-capabilities/idlharness.any.worker.html: Added. 27 * web-platform-tests/media-capabilities/w3c-import.log: Added. 28 1 29 2021-10-12 Kate Cheney <katherine_cheney@apple.com> 2 30 -
trunk/LayoutTests/imported/w3c/resources/import-expectations.json
r283704 r284085 361 361 "web-platform-tests/magnetometer": "skip", 362 362 "web-platform-tests/mathml": "import", 363 "web-platform-tests/media-capabilities": " skip",363 "web-platform-tests/media-capabilities": "import", 364 364 "web-platform-tests/media-source": "import", 365 365 "web-platform-tests/media/": "import", -
trunk/LayoutTests/media/mediacapabilities/mock-encodingInfo-expected.txt
r234582 r284085 2 2 3 3 Smooth and power efficient 720P MP4 encoding 4 RUN(promise = navigator.mediaCapabilities.encodingInfo({ type: ' transmission', video: { contentType: 'video/mp4; codecs="avc1"', height: 720, bitrate: 1000, width: 1280, framerate: 24.5 } });)4 RUN(promise = navigator.mediaCapabilities.encodingInfo({ type: 'record', video: { contentType: 'video/mp4; codecs="avc1"', height: 720, bitrate: 1000, width: 1280, framerate: 24.5 } });) 5 5 Promise resolved OK 6 6 info.supported == true OK … … 9 9 10 10 Not smooth (too high framerate) but power efficient 720P MP4 encoding 11 RUN(promise = navigator.mediaCapabilities.encodingInfo({ type: ' transmission', video: { contentType: 'video/mp4; codecs="avc1"', height: 720, bitrate: 1000, width: 1280, framerate: 60.4/2 } });)11 RUN(promise = navigator.mediaCapabilities.encodingInfo({ type: 'record', video: { contentType: 'video/mp4; codecs="avc1"', height: 720, bitrate: 1000, width: 1280, framerate: 60.4/2 } });) 12 12 Promise resolved OK 13 13 info.supported == true OK … … 15 15 info.powerEfficient == true OK 16 16 17 Unsupported protocol: Record18 RUN(promise = navigator.mediaCapabilities.encodingInfo({ type: ' record', video: { contentType: 'video/mp4; codecs="avc1"', height: 720, bitrate: 1000, width: 1280, framerate: 24 } });)17 Unsupported protocol: WebRTC 18 RUN(promise = navigator.mediaCapabilities.encodingInfo({ type: 'webrtc', video: { contentType: 'video/mp4; codecs="avc1"', height: 720, bitrate: 1000, width: 1280, framerate: 24 } });) 19 19 Promise resolved OK 20 20 info.supported == false OK … … 23 23 24 24 Unsupported video resolution: 1080P 25 RUN(promise = navigator.mediaCapabilities.encodingInfo({ type: ' transmission', video: { contentType: 'video/mp4; codecs="avc1"', height: 1080, bitrate: 1000, width: 1920, framerate: 24 } });)25 RUN(promise = navigator.mediaCapabilities.encodingInfo({ type: 'record', video: { contentType: 'video/mp4; codecs="avc1"', height: 1080, bitrate: 1000, width: 1920, framerate: 24 } });) 26 26 Promise resolved OK 27 27 info.supported == false OK … … 30 30 31 31 Smooth and power efficient audio MP4 encoding 32 RUN(promise = navigator.mediaCapabilities.encodingInfo({ type: ' transmission', audio: { contentType: 'audio/mp4; codecs="mp4a.40.2"', channels: '2', bitrate: 1000, samplerate: 44100 } });)32 RUN(promise = navigator.mediaCapabilities.encodingInfo({ type: 'record', audio: { contentType: 'audio/mp4; codecs="mp4a.40.2"', channels: '2', bitrate: 1000, samplerate: 44100 } });) 33 33 Promise resolved OK 34 34 info.supported == true OK … … 37 37 38 38 Smooth but power inefficient audio MP4 encoding 39 RUN(promise = navigator.mediaCapabilities.encodingInfo({ type: ' transmission', audio: { contentType: 'audio/mp4; codecs="mp4a.40.2"', channels: '2', bitrate: 2000, samplerate: 44100 } });)39 RUN(promise = navigator.mediaCapabilities.encodingInfo({ type: 'record', audio: { contentType: 'audio/mp4; codecs="mp4a.40.2"', channels: '2', bitrate: 2000, samplerate: 44100 } });) 40 40 Promise resolved OK 41 41 info.supported == true OK … … 44 44 45 45 Not smooth but power efficient audio MP4 encoding 46 RUN(promise = navigator.mediaCapabilities.encodingInfo({ type: ' transmission', audio: { contentType: 'audio/mp4; codecs="mp4a.40.2"', channels: '5.1', bitrate: 1000, samplerate: 44100 } });)46 RUN(promise = navigator.mediaCapabilities.encodingInfo({ type: 'record', audio: { contentType: 'audio/mp4; codecs="mp4a.40.2"', channels: '5.1', bitrate: 1000, samplerate: 44100 } });) 47 47 Promise resolved OK 48 48 info.supported == true OK … … 51 51 52 52 Not smooth and power inefficient audio MP4 encoding 53 RUN(promise = navigator.mediaCapabilities.encodingInfo({ type: ' transmission', audio: { contentType: 'audio/mp4; codecs="mp4a.40.2"', channels: '5.1', bitrate: 2000, samplerate: 44100 } });)53 RUN(promise = navigator.mediaCapabilities.encodingInfo({ type: 'record', audio: { contentType: 'audio/mp4; codecs="mp4a.40.2"', channels: '5.1', bitrate: 2000, samplerate: 44100 } });) 54 54 Promise resolved OK 55 55 info.supported == true OK … … 58 58 59 59 Unsupported audio codec: ogg vorbis 60 RUN(promise = navigator.mediaCapabilities.encodingInfo({ type: ' transmission', audio: { contentType: 'audio/ogg; codecs="vorbis"', channels: '2' } });)60 RUN(promise = navigator.mediaCapabilities.encodingInfo({ type: 'record', audio: { contentType: 'audio/ogg; codecs="vorbis"', channels: '2' } });) 61 61 Promise resolved OK 62 62 info.supported == false OK -
trunk/LayoutTests/media/mediacapabilities/mock-encodingInfo.html
r234582 r284085 31 31 function() { 32 32 consoleWrite('Smooth and power efficient 720P MP4 encoding'); 33 run("promise = navigator.mediaCapabilities.encodingInfo({ type: ' transmission', video: { contentType: 'video/mp4; codecs=\"avc1\"', height: 720, bitrate: 1000, width: 1280, framerate: 24.5 } });");33 run("promise = navigator.mediaCapabilities.encodingInfo({ type: 'record', video: { contentType: 'video/mp4; codecs=\"avc1\"', height: 720, bitrate: 1000, width: 1280, framerate: 24.5 } });"); 34 34 shouldResolve(promise).then((info) => { 35 35 checkMediaCapabilitiesInfo(info, true, true, true); … … 39 39 function() { 40 40 consoleWrite('Not smooth (too high framerate) but power efficient 720P MP4 encoding'); 41 run("promise = navigator.mediaCapabilities.encodingInfo({ type: ' transmission', video: { contentType: 'video/mp4; codecs=\"avc1\"', height: 720, bitrate: 1000, width: 1280, framerate: 60.4/2 } });");41 run("promise = navigator.mediaCapabilities.encodingInfo({ type: 'record', video: { contentType: 'video/mp4; codecs=\"avc1\"', height: 720, bitrate: 1000, width: 1280, framerate: 60.4/2 } });"); 42 42 shouldResolve(promise).then((info) => { 43 43 checkMediaCapabilitiesInfo(info, true, false, true); … … 46 46 }, 47 47 function() { 48 consoleWrite('Unsupported protocol: Record');49 run("promise = navigator.mediaCapabilities.encodingInfo({ type: ' record', video: { contentType: 'video/mp4; codecs=\"avc1\"', height: 720, bitrate: 1000, width: 1280, framerate: 24 } });");48 consoleWrite('Unsupported protocol: WebRTC'); 49 run("promise = navigator.mediaCapabilities.encodingInfo({ type: 'webrtc', video: { contentType: 'video/mp4; codecs=\"avc1\"', height: 720, bitrate: 1000, width: 1280, framerate: 24 } });"); 50 50 shouldResolve(promise).then((info) => { 51 51 checkMediaCapabilitiesInfo(info, false, false, false); … … 55 55 function() { 56 56 consoleWrite('Unsupported video resolution: 1080P'); 57 run("promise = navigator.mediaCapabilities.encodingInfo({ type: ' transmission', video: { contentType: 'video/mp4; codecs=\"avc1\"', height: 1080, bitrate: 1000, width: 1920, framerate: 24 } });");57 run("promise = navigator.mediaCapabilities.encodingInfo({ type: 'record', video: { contentType: 'video/mp4; codecs=\"avc1\"', height: 1080, bitrate: 1000, width: 1920, framerate: 24 } });"); 58 58 shouldResolve(promise).then((info) => { 59 59 checkMediaCapabilitiesInfo(info, false, false, false); … … 63 63 function() { 64 64 consoleWrite('Smooth and power efficient audio MP4 encoding'); 65 run("promise = navigator.mediaCapabilities.encodingInfo({ type: ' transmission', audio: { contentType: 'audio/mp4; codecs=\"mp4a.40.2\"', channels: '2', bitrate: 1000, samplerate: 44100 } });");65 run("promise = navigator.mediaCapabilities.encodingInfo({ type: 'record', audio: { contentType: 'audio/mp4; codecs=\"mp4a.40.2\"', channels: '2', bitrate: 1000, samplerate: 44100 } });"); 66 66 shouldResolve(promise).then((info) => { 67 67 checkMediaCapabilitiesInfo(info, true, true, true); … … 71 71 function() { 72 72 consoleWrite('Smooth but power inefficient audio MP4 encoding'); 73 run("promise = navigator.mediaCapabilities.encodingInfo({ type: ' transmission', audio: { contentType: 'audio/mp4; codecs=\"mp4a.40.2\"', channels: '2', bitrate: 2000, samplerate: 44100 } });");73 run("promise = navigator.mediaCapabilities.encodingInfo({ type: 'record', audio: { contentType: 'audio/mp4; codecs=\"mp4a.40.2\"', channels: '2', bitrate: 2000, samplerate: 44100 } });"); 74 74 shouldResolve(promise).then((info) => { 75 75 checkMediaCapabilitiesInfo(info, true, true, false); … … 79 79 function() { 80 80 consoleWrite('Not smooth but power efficient audio MP4 encoding'); 81 run("promise = navigator.mediaCapabilities.encodingInfo({ type: ' transmission', audio: { contentType: 'audio/mp4; codecs=\"mp4a.40.2\"', channels: '5.1', bitrate: 1000, samplerate: 44100 } });");81 run("promise = navigator.mediaCapabilities.encodingInfo({ type: 'record', audio: { contentType: 'audio/mp4; codecs=\"mp4a.40.2\"', channels: '5.1', bitrate: 1000, samplerate: 44100 } });"); 82 82 shouldResolve(promise).then((info) => { 83 83 checkMediaCapabilitiesInfo(info, true, false, true); … … 87 87 function() { 88 88 consoleWrite('Not smooth and power inefficient audio MP4 encoding'); 89 run("promise = navigator.mediaCapabilities.encodingInfo({ type: ' transmission', audio: { contentType: 'audio/mp4; codecs=\"mp4a.40.2\"', channels: '5.1', bitrate: 2000, samplerate: 44100 } });");89 run("promise = navigator.mediaCapabilities.encodingInfo({ type: 'record', audio: { contentType: 'audio/mp4; codecs=\"mp4a.40.2\"', channels: '5.1', bitrate: 2000, samplerate: 44100 } });"); 90 90 shouldResolve(promise).then((info) => { 91 91 checkMediaCapabilitiesInfo(info, true, false, false); … … 95 95 function() { 96 96 consoleWrite('Unsupported audio codec: ogg vorbis'); 97 run("promise = navigator.mediaCapabilities.encodingInfo({ type: ' transmission', audio: { contentType: 'audio/ogg; codecs=\"vorbis\"', channels: '2' } });");97 run("promise = navigator.mediaCapabilities.encodingInfo({ type: 'record', audio: { contentType: 'audio/ogg; codecs=\"vorbis\"', channels: '2' } });"); 98 98 shouldResolve(promise).then((info) => { 99 99 checkMediaCapabilitiesInfo(info, false, false, false); -
trunk/LayoutTests/tests-options.json
r283525 r284085 3636 3636 "slow" 3637 3637 ], 3638 "imported/w3c/web-platform-tests/media-capabilities/decodingInfoEncryptedMedia.https.html": [ 3639 "slow" 3640 ], 3638 3641 "imported/w3c/web-platform-tests/media-source/SourceBuffer-abort-readyState.html": [ 3639 3642 "slow" -
trunk/Source/WebCore/ChangeLog
r284084 r284085 1 2021-10-13 Youenn Fablet <youenn@apple.com> 2 3 Add support for WebRTC media capabilities 4 https://bugs.webkit.org/show_bug.cgi?id=231568 5 6 Reviewed by Eric Carlson. 7 8 Add WebRTC decoding and encoding type. 9 In case webrtc type is used, forward the call to LibWebRTCProvider. 10 LibWebRTCProvider then gets underlying RTC capabilities to expose media capabilities. 11 It also adds dedicated support for powerEfficient value. 12 All information is already exposed in existing Media Capabilities or RTCRtpSender/Receiver getCapabilities so we do not increase fingerprinting here. 13 14 Tests: imported/w3c/web-platform-tests/media-capabilities/decodingInfo.any.html 15 imported/w3c/web-platform-tests/media-capabilities/decodingInfo.any.worker.html 16 imported/w3c/web-platform-tests/media-capabilities/decodingInfo.webrtc.html 17 imported/w3c/web-platform-tests/media-capabilities/decodingInfoEncryptedMedia.http.html 18 imported/w3c/web-platform-tests/media-capabilities/decodingInfoEncryptedMedia.https.html 19 imported/w3c/web-platform-tests/media-capabilities/encodingInfo.html 20 imported/w3c/web-platform-tests/media-capabilities/encodingInfo.webrtc.html 21 imported/w3c/web-platform-tests/media-capabilities/idlharness.any.html 22 imported/w3c/web-platform-tests/media-capabilities/idlharness.any.worker.html 23 24 * Modules/mediacapabilities/MediaCapabilities.cpp: 25 * Modules/mediacapabilities/MediaDecodingType.idl: 26 * Modules/mediacapabilities/MediaEncodingType.idl: 27 * WebCore.xcodeproj/project.pbxproj: 28 * bindings/js/JSMediaCapabilitiesCustom.h: 29 * bindings/scripts/CodeGeneratorJS.pm: 30 * platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp: 31 * platform/mediacapabilities/MediaCapabilitiesLogging.h: 32 * platform/mediacapabilities/MediaDecodingType.h: 33 * platform/mediacapabilities/MediaEncodingType.h: 34 * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp: 35 * platform/mediastream/libwebrtc/LibWebRTCProvider.h: 36 * platform/mock/MediaEngineConfigurationFactoryMock.cpp: 37 1 38 2021-10-13 Martin Robinson <mrobinson@webkit.org> 2 39 -
trunk/Source/WebCore/Headers.cmake
r284080 r284085 1471 1471 platform/mediastream/RTCDataChannelState.h 1472 1472 platform/mediastream/RTCPriorityType.h 1473 platform/mediastream/RTCRtpCapabilities.h 1474 platform/mediastream/RTCRtpCodecCapability.h 1473 1475 platform/mediastream/RealtimeMediaSource.h 1474 1476 platform/mediastream/RealtimeMediaSourceCapabilities.h -
trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp
r278580 r284085 33 33 #include "JSMediaCapabilitiesDecodingInfo.h" 34 34 #include "JSMediaCapabilitiesEncodingInfo.h" 35 #include "LibWebRTCProvider.h" 35 36 #include "Logging.h" 36 37 #include "MediaCapabilitiesDecodingInfo.h" … … 40 41 #include "MediaEncodingConfiguration.h" 41 42 #include "MediaEngineConfigurationFactory.h" 43 #include "Page.h" 42 44 #include "Settings.h" 43 45 #include <wtf/Logger.h> … … 196 198 // 5. In parallel, run the create a MediaCapabilitiesInfo algorithm with configuration and resolve p with its result. 197 199 // 6. Return p. 198 document.eventLoop().queueTask(TaskSource::MediaElement, [configuration = WTFMove(configuration), promise = WTFMove(promise), logger = WTFMove(logger), identifier = WTFMove(identifier) ] () mutable {200 document.eventLoop().queueTask(TaskSource::MediaElement, [configuration = WTFMove(configuration), promise = WTFMove(promise), logger = WTFMove(logger), identifier = WTFMove(identifier), document = Ref { document }] () mutable { 199 201 200 202 // 2.2.3 If configuration is of type MediaDecodingConfiguration, run the following substeps: … … 217 219 }; 218 220 221 #if ENABLE(WEB_RTC) 222 if (configuration.type == MediaDecodingType::WebRTC) { 223 if (auto* page = document->page()) 224 page->libWebRTCProvider().createDecodingConfiguration(WTFMove(configuration), WTFMove(callback)); 225 return; 226 } 227 #endif 228 219 229 MediaEngineConfigurationFactory::createDecodingConfiguration(WTFMove(configuration), WTFMove(callback)); 220 230 }); … … 237 247 // 5. In parallel, run the create a MediaCapabilitiesInfo algorithm with configuration and resolve p with its result. 238 248 // 6. Return p. 239 document.eventLoop().queueTask(TaskSource::MediaElement, [configuration = WTFMove(configuration), promise = WTFMove(promise)] () mutable { 240 249 document.eventLoop().queueTask(TaskSource::MediaElement, [configuration = WTFMove(configuration), promise = WTFMove(promise), document = Ref { document }] () mutable { 241 250 // 2.2.4. If configuration is of type MediaEncodingConfiguration, run the following substeps: 242 251 MediaEngineConfigurationFactory::EncodingConfigurationCallback callback = [promise = WTFMove(promise)] (auto info) mutable { … … 258 267 }; 259 268 269 #if ENABLE(WEB_RTC) 270 if (configuration.type == MediaEncodingType::WebRTC) { 271 if (auto* page = document->page()) 272 page->libWebRTCProvider().createEncodingConfiguration(WTFMove(configuration), WTFMove(callback)); 273 return; 274 } 275 #endif 276 260 277 MediaEngineConfigurationFactory::createEncodingConfiguration(WTFMove(configuration), WTFMove(callback)); 261 278 -
trunk/Source/WebCore/Modules/mediacapabilities/MediaDecodingType.idl
r226228 r284085 26 26 enum MediaDecodingType { 27 27 "file", 28 "media-source" 28 "media-source", 29 "webrtc" 29 30 }; -
trunk/Source/WebCore/Modules/mediacapabilities/MediaEncodingType.idl
r226228 r284085 26 26 enum MediaEncodingType { 27 27 "record", 28 " transmission"28 "webrtc" 29 29 }; -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r284080 r284085 1087 1087 4129C9AB1F59C573009D7403 /* ReadableStreamSource.h in Headers */ = {isa = PBXBuildFile; fileRef = 418C395B1C8F0A610051C8A3 /* ReadableStreamSource.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1088 1088 4129C9AF1F59CF5B009D7403 /* ReadableStreamSink.h in Headers */ = {isa = PBXBuildFile; fileRef = 4129C9801F5861C7009D7403 /* ReadableStreamSink.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1089 412DE4B8219285C00075F3A7 /* RTCRtpCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 412DE4B6219285BF0075F3A7 /* RTCRtpCapabilities.h */; };1089 412DE4B8219285C00075F3A7 /* RTCRtpCapabilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 412DE4B6219285BF0075F3A7 /* RTCRtpCapabilities.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1090 1090 412DEF1D23A9186600D840F6 /* MockAudioSharedUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 0744ECEB1E0C4AE5000D0944 /* MockAudioSharedUnit.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1091 1091 412DEF1F23A918A300D840F6 /* BaseAudioSharedUnit.h in Headers */ = {isa = PBXBuildFile; fileRef = 4177F51E2382545E00C04486 /* BaseAudioSharedUnit.h */; settings = {ATTRIBUTES = (Private, ); }; }; … … 1182 1182 418FCBC12706E4FB00F96ECA /* PushEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 418FCBBD2706E4F700F96ECA /* PushEvent.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1183 1183 418FCBC22706E50100F96ECA /* PushEventInit.h in Headers */ = {isa = PBXBuildFile; fileRef = 418FCBBF2706E4F800F96ECA /* PushEventInit.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1184 418FCBE72715A28F00F96ECA /* RTCRtpCodecCapability.h in Headers */ = {isa = PBXBuildFile; fileRef = 41E0A7DC23BB63DB00561060 /* RTCRtpCodecCapability.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1184 1185 4190F3A524A0B4EE00531C57 /* FrameRateMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = 4190F3A3249D152800531C57 /* FrameRateMonitor.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1185 1186 419242492127B93E00634FCF /* RealtimeOutgoingVideoSourceCocoa.mm in Sources */ = {isa = PBXBuildFile; fileRef = 419242472127B7CC00634FCF /* RealtimeOutgoingVideoSourceCocoa.mm */; }; … … 8156 8157 418FCBCC2706F43400F96ECA /* ServiceWorkerGlobalScopePushAPI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ServiceWorkerGlobalScopePushAPI.h; sourceTree = "<group>"; }; 8157 8158 418FCBCD2706F43400F96ECA /* ServiceWorkerGlobalScopePushAPI.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = ServiceWorkerGlobalScopePushAPI.cpp; sourceTree = "<group>"; }; 8159 418FCBE82715AA1900F96ECA /* JSMediaCapabilitiesCustom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSMediaCapabilitiesCustom.h; sourceTree = "<group>"; }; 8158 8160 4190F3A1249D152700531C57 /* FrameRateMonitor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FrameRateMonitor.cpp; sourceTree = "<group>"; }; 8159 8161 4190F3A3249D152800531C57 /* FrameRateMonitor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FrameRateMonitor.h; sourceTree = "<group>"; }; … … 15035 15037 CCC2B51115F613060048CDD6 /* DeviceController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeviceController.cpp; sourceTree = "<group>"; }; 15036 15038 CCC2B51215F613060048CDD6 /* DeviceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceController.h; sourceTree = "<group>"; }; 15037 CD0320152279F5BF00DD9F0B /* JSMediaCapabilitiesCustom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSMediaCapabilitiesCustom.h; sourceTree = "<group>"; };15038 15039 CD063F801E23FA8900812BE3 /* InitDataRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InitDataRegistry.cpp; sourceTree = "<group>"; }; 15039 15040 CD063F811E23FA8900812BE3 /* InitDataRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InitDataRegistry.h; sourceTree = "<group>"; }; … … 23241 23242 5868C7D52546E0B300BF9DF3 /* JSIntersectionObserverCustom.cpp */, 23242 23243 77C13F042165658A002D9C5F /* JSIntersectionObserverEntryCustom.cpp */, 23243 CD0320152279F5BF00DD9F0B/* JSMediaCapabilitiesCustom.h */,23244 418FCBE82715AA1900F96ECA /* JSMediaCapabilitiesCustom.h */, 23244 23245 AD726FE716D9F204003A4E6D /* JSMediaListCustom.h */, 23245 23246 415CDAF61E6CE0D3004F11EE /* JSMediaStreamTrackCustom.cpp */, … … 35170 35171 4114FE3225BEBD19009D9F20 /* RTCRtcpParameters.h in Headers */, 35171 35172 412DE4B8219285C00075F3A7 /* RTCRtpCapabilities.h in Headers */, 35173 418FCBE72715A28F00F96ECA /* RTCRtpCodecCapability.h in Headers */, 35172 35174 5E2C43631BCEE32B0001E2BC /* RTCRtpReceiver.h in Headers */, 35173 35175 413C8B352552F27D00E65055 /* RTCRtpReceiverWithTransform.h in Headers */, -
trunk/Source/WebCore/bindings/js/JSMediaCapabilitiesCustom.h
r245636 r284085 32 32 ALWAYS_INLINE bool JSMediaCapabilitiesEncodingInfoIsEnabled() 33 33 { 34 #if ENABLE(WEB_RTC) 35 return true; 36 #else 34 37 return MediaEngineConfigurationFactory::hasEncodingConfigurationFactory(); 38 #endif 35 39 } 36 40 37 41 ALWAYS_INLINE bool JSMediaCapabilitiesDecodingInfoIsEnabled() 38 42 { 43 #if ENABLE(WEB_RTC) 44 return true; 45 #else 39 46 return MediaEngineConfigurationFactory::hasDecodingConfigurationFactory(); 47 #endif 40 48 } 41 49 -
trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
r283463 r284085 2280 2280 2281 2281 return "EmptyString" if $name eq ""; 2282 return "WebRTC" if $name eq "webrtc"; 2282 2283 $name = join("", map { $codeGenerator->WK_ucfirst($_) } split("-", $name)); 2283 2284 $name = "_$name" if $name =~ /^\d/; -
trunk/Source/WebCore/platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp
r283237 r284085 64 64 auto& videoConfiguration = configuration.video.value(); 65 65 MediaEngineSupportParameters parameters { }; 66 67 switch (configuration.type) { 68 case MediaDecodingType::File: 69 parameters.isMediaSource = false; 70 break; 71 case MediaDecodingType::MediaSource: 72 parameters.isMediaSource = true; 73 break; 74 case MediaDecodingType::WebRTC: 75 ASSERT_NOT_REACHED(); 76 return std::nullopt; 77 } 78 66 79 parameters.type = ContentType(videoConfiguration.contentType); 67 parameters.isMediaSource = configuration.type == MediaDecodingType::MediaSource;68 80 if (MediaPlayer::supportsType(parameters) != MediaPlayer::SupportsType::IsSupported) 69 81 return std::nullopt; -
trunk/Source/WebCore/platform/mediacapabilities/MediaCapabilitiesLogging.h
r270462 r284085 42 42 enum class HdrMetadataType : uint8_t; 43 43 enum class TransferFunction : uint8_t; 44 enum class MediaDecodingType : bool;44 enum class MediaDecodingType : uint8_t; 45 45 enum class MediaEncodingType : bool; 46 46 -
trunk/Source/WebCore/platform/mediacapabilities/MediaDecodingType.h
r270462 r284085 28 28 namespace WebCore { 29 29 30 enum class MediaDecodingType : bool{30 enum class MediaDecodingType : uint8_t { 31 31 File, 32 32 MediaSource, 33 WebRTC 33 34 }; 34 35 … … 41 42 WebCore::MediaDecodingType, 42 43 WebCore::MediaDecodingType::File, 43 WebCore::MediaDecodingType::MediaSource 44 WebCore::MediaDecodingType::MediaSource, 45 WebCore::MediaDecodingType::WebRTC 44 46 >; 45 47 }; -
trunk/Source/WebCore/platform/mediacapabilities/MediaEncodingType.h
r270462 r284085 30 30 enum class MediaEncodingType : bool { 31 31 Record, 32 Transmission,32 WebRTC, 33 33 }; 34 34 … … 41 41 WebCore::MediaEncodingType, 42 42 WebCore::MediaEncodingType::Record, 43 WebCore::MediaEncodingType:: Transmission43 WebCore::MediaEncodingType::WebRTC 44 44 >; 45 45 }; -
trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp
r282054 r284085 27 27 #include "LibWebRTCProvider.h" 28 28 29 #include "MediaCapabilitiesDecodingInfo.h" 30 #include "MediaCapabilitiesEncodingInfo.h" 31 #include "MediaDecodingConfiguration.h" 32 #include "MediaEncodingConfiguration.h" 33 29 34 #if USE(LIBWEBRTC) 35 #include "ContentType.h" 30 36 #include "LibWebRTCAudioModule.h" 31 37 #include "Logging.h" 32 #include "RTCRtpCapabilities.h"33 38 #include <dlfcn.h> 34 39 … … 378 383 callback(generator); 379 384 }); 385 } 386 387 void LibWebRTCProvider::setH265Support(bool value) 388 { 389 m_supportsH265 = value; 390 m_videoDecodingCapabilities = { }; 391 m_videoEncodingCapabilities = { }; 392 } 393 394 void LibWebRTCProvider::setVP9Support(bool supportsVP9Profile0, bool supportsVP9Profile2) 395 { 396 m_supportsVP9Profile0 = supportsVP9Profile0; 397 m_supportsVP9Profile2 = supportsVP9Profile2; 398 399 m_videoDecodingCapabilities = { }; 400 m_videoEncodingCapabilities = { }; 401 } 402 403 void LibWebRTCProvider::setVP9VTBSupport(bool value) 404 { 405 m_supportsVP9VTB = value; 406 407 m_videoDecodingCapabilities = { }; 408 m_videoEncodingCapabilities = { }; 380 409 } 381 410 … … 432 461 return { }; 433 462 434 auto* factory = this->factory(); 435 if (!factory) 436 return { }; 437 438 return toRTCRtpCapabilities(factory->GetRtpReceiverCapabilities(*mediaType)); 463 switch (*mediaType) { 464 case cricket::MediaType::MEDIA_TYPE_AUDIO: 465 return audioDecodingCapabilities(); 466 case cricket::MediaType::MEDIA_TYPE_VIDEO: 467 return videoDecodingCapabilities(); 468 case cricket::MediaType::MEDIA_TYPE_DATA: 469 ASSERT_NOT_REACHED(); 470 return { }; 471 case cricket::MediaType::MEDIA_TYPE_UNSUPPORTED: 472 ASSERT_NOT_REACHED(); 473 return { }; 474 } 475 } 476 477 std::optional<RTCRtpCapabilities>& LibWebRTCProvider::audioDecodingCapabilities() 478 { 479 if (!m_audioDecodingCapabilities) { 480 if (auto* factory = this->factory()) 481 m_audioDecodingCapabilities = toRTCRtpCapabilities(factory->GetRtpReceiverCapabilities(cricket::MediaType::MEDIA_TYPE_AUDIO)); 482 } 483 return m_audioDecodingCapabilities; 484 } 485 486 std::optional<RTCRtpCapabilities>& LibWebRTCProvider::videoDecodingCapabilities() 487 { 488 if (!m_videoDecodingCapabilities) { 489 if (auto* factory = this->factory()) 490 m_videoDecodingCapabilities = toRTCRtpCapabilities(factory->GetRtpReceiverCapabilities(cricket::MediaType::MEDIA_TYPE_VIDEO)); 491 } 492 return m_videoDecodingCapabilities; 439 493 } 440 494 … … 445 499 return { }; 446 500 447 auto* factory = this->factory(); 448 if (!factory) 449 return { }; 450 451 return toRTCRtpCapabilities(factory->GetRtpSenderCapabilities(*mediaType)); 452 } 453 501 switch (*mediaType) { 502 case cricket::MediaType::MEDIA_TYPE_AUDIO: 503 return audioEncodingCapabilities(); 504 case cricket::MediaType::MEDIA_TYPE_VIDEO: 505 return videoEncodingCapabilities(); 506 case cricket::MediaType::MEDIA_TYPE_DATA: 507 ASSERT_NOT_REACHED(); 508 return { }; 509 case cricket::MediaType::MEDIA_TYPE_UNSUPPORTED: 510 ASSERT_NOT_REACHED(); 511 return { }; 512 } 513 } 514 515 std::optional<RTCRtpCapabilities>& LibWebRTCProvider::audioEncodingCapabilities() 516 { 517 if (!m_audioEncodingCapabilities) { 518 if (auto* factory = this->factory()) 519 m_audioEncodingCapabilities = toRTCRtpCapabilities(factory->GetRtpSenderCapabilities(cricket::MediaType::MEDIA_TYPE_AUDIO)); 520 } 521 return m_audioEncodingCapabilities; 522 } 523 524 std::optional<RTCRtpCapabilities>& LibWebRTCProvider::videoEncodingCapabilities() 525 { 526 if (!m_videoEncodingCapabilities) { 527 if (auto* factory = this->factory()) 528 m_videoEncodingCapabilities = toRTCRtpCapabilities(factory->GetRtpSenderCapabilities(cricket::MediaType::MEDIA_TYPE_VIDEO)); 529 } 530 return m_videoEncodingCapabilities; 531 } 532 533 std::optional<RTCRtpCodecCapability> LibWebRTCProvider::codecCapability(const ContentType& contentType, const std::optional<RTCRtpCapabilities>& capabilities) 534 { 535 if (!capabilities) 536 return { }; 537 538 auto containerType = contentType.containerType(); 539 for (auto& codec : capabilities->codecs) { 540 if (equalIgnoringASCIICase(containerType, codec.mimeType)) 541 return codec; 542 } 543 return { }; 544 } 454 545 #endif // USE(LIBWEBRTC) 455 546 547 void LibWebRTCProvider::createDecodingConfiguration(MediaDecodingConfiguration&& configuration, DecodingConfigurationCallback&& callback) 548 { 549 ASSERT(configuration.type == MediaDecodingType::WebRTC); 550 551 #if USE(LIBWEBRTC) 552 // FIXME: Validate additional parameters, in particular mime type parameters. 553 MediaCapabilitiesDecodingInfo info { WTFMove(configuration) }; 554 555 if (info.supportedConfiguration.video) { 556 ContentType contentType { info.supportedConfiguration.video->contentType }; 557 auto codec = codecCapability(contentType, videoDecodingCapabilities()); 558 if (!codec) { 559 callback({ }); 560 return; 561 } 562 info.supported = true; 563 #if PLATFORM(COCOA) 564 auto containerType = contentType.containerType(); 565 if (containerType == "video/vp8") 566 info.powerEfficient = false; 567 else if (containerType == "video/vp9") 568 info.powerEfficient = isSupportingVP9VTB(); 569 else 570 info.powerEfficient = true; 571 info.smooth = info.powerEfficient; 572 #endif 573 } 574 if (info.supportedConfiguration.audio) { 575 ContentType contentType { info.supportedConfiguration.audio->contentType }; 576 auto codec = codecCapability(contentType, audioDecodingCapabilities()); 577 if (!codec) { 578 callback({ }); 579 return; 580 } 581 info.supported = true; 582 } 583 callback(WTFMove(info)); 584 #else 585 UNUSED_PARAM(configuration); 586 callback({ }); 587 #endif // USE(LIBWEBRTC) 588 } 589 590 void LibWebRTCProvider::createEncodingConfiguration(MediaEncodingConfiguration&& configuration, EncodingConfigurationCallback&& callback) 591 { 592 ASSERT(configuration.type == MediaEncodingType::WebRTC); 593 594 #if USE(LIBWEBRTC) 595 // FIXME: Validate additional parameters, in particular mime type parameters. 596 MediaCapabilitiesEncodingInfo info { WTFMove(configuration) }; 597 598 if (info.supportedConfiguration.video) { 599 ContentType contentType { info.supportedConfiguration.video->contentType }; 600 auto codec = codecCapability(contentType, videoEncodingCapabilities()); 601 if (!codec) { 602 callback({ }); 603 return; 604 } 605 info.supported = true; 606 #if PLATFORM(COCOA) 607 auto containerType = contentType.containerType(); 608 if (containerType == "video/vp8") 609 info.powerEfficient = false; 610 else if (containerType == "video/vp9") 611 info.powerEfficient = isSupportingVP9VTB(); 612 else 613 info.powerEfficient = true; 614 info.smooth = info.powerEfficient; 615 #endif 616 } 617 if (info.supportedConfiguration.audio) { 618 ContentType contentType { info.supportedConfiguration.audio->contentType }; 619 auto codec = codecCapability(contentType, audioEncodingCapabilities()); 620 if (!codec) { 621 callback({ }); 622 return; 623 } 624 info.supported = true; 625 } 626 callback(WTFMove(info)); 627 #else 628 UNUSED_PARAM(configuration); 629 callback({ }); 630 #endif // USE(LIBWEBRTC) 631 } 632 456 633 } // namespace WebCore -
trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.h
r282054 r284085 37 37 #if USE(LIBWEBRTC) 38 38 39 #include "RTCRtpCapabilities.h" 40 39 41 ALLOW_UNUSED_PARAMETERS_BEGIN 40 42 ALLOW_DEPRECATED_DECLARATIONS_BEGIN … … 63 65 namespace WebCore { 64 66 67 class ContentType; 65 68 class LibWebRTCAudioModule; 69 struct MediaCapabilitiesDecodingInfo; 70 struct MediaCapabilitiesEncodingInfo; 71 struct MediaDecodingConfiguration; 72 struct MediaEncodingConfiguration; 66 73 class RegistrableDomain; 67 74 struct PeerConnectionFactoryAndThreads; … … 88 95 virtual RefPtr<RTCDataChannelRemoteHandlerConnection> createRTCDataChannelRemoteHandlerConnection() { return nullptr; } 89 96 97 using DecodingConfigurationCallback = Function<void(MediaCapabilitiesDecodingInfo&&)>; 98 using EncodingConfigurationCallback = Function<void(MediaCapabilitiesEncodingInfo&&)>; 99 void createDecodingConfiguration(MediaDecodingConfiguration&&, DecodingConfigurationCallback&&); 100 void createEncodingConfiguration(MediaEncodingConfiguration&&, EncodingConfigurationCallback&&); 101 90 102 #if USE(LIBWEBRTC) 91 103 virtual rtc::scoped_refptr<webrtc::PeerConnectionInterface> createPeerConnection(DocumentIdentifier, webrtc::PeerConnectionObserver&, rtc::PacketSocketFactory*, webrtc::PeerConnectionInterface::RTCConfiguration&&); … … 106 118 bool isEnumeratingAllNetworkInterfacesEnabled() const { return m_enableEnumeratingAllNetworkInterfaces; } 107 119 108 void setH265Support(bool value) { m_supportsH265 = value; }120 void setH265Support(bool); 109 121 void setVP9Support(bool supportsVP9Profile0, bool supportsVP9Profile2); 110 void setVP9VTBSupport(bool value) { m_supportsVP9VTB = value; }122 void setVP9VTBSupport(bool); 111 123 bool isSupportingH265() const { return m_supportsH265; } 112 124 bool isSupportingVP9Profile0() const { return m_supportsVP9Profile0; } … … 150 162 151 163 PeerConnectionFactoryAndThreads& getStaticFactoryAndThreads(bool useNetworkThreadWithSocketServer); 164 std::optional<RTCRtpCapabilities>& audioDecodingCapabilities(); 165 std::optional<RTCRtpCapabilities>& videoDecodingCapabilities(); 166 std::optional<RTCRtpCapabilities>& audioEncodingCapabilities(); 167 std::optional<RTCRtpCapabilities>& videoEncodingCapabilities(); 168 std::optional<RTCRtpCodecCapability> codecCapability(const ContentType&, const std::optional<RTCRtpCapabilities>&); 152 169 153 170 bool m_enableEnumeratingAllNetworkInterfaces { false }; … … 163 180 bool m_useDTLS10 { false }; 164 181 bool m_supportsMDNS { false }; 182 183 std::optional<RTCRtpCapabilities> m_audioDecodingCapabilities; 184 std::optional<RTCRtpCapabilities> m_videoDecodingCapabilities; 185 std::optional<RTCRtpCapabilities> m_audioEncodingCapabilities; 186 std::optional<RTCRtpCapabilities> m_videoEncodingCapabilities; 165 187 #endif 166 188 }; 167 189 168 #if USE(LIBWEBRTC)169 inline void LibWebRTCProvider::setVP9Support(bool supportsVP9Profile0, bool supportsVP9Profile2)170 {171 m_supportsVP9Profile0 = supportsVP9Profile0;172 m_supportsVP9Profile2 = supportsVP9Profile2;173 }174 #endif175 176 190 } // namespace WebCore -
trunk/Source/WebCore/platform/mock/MediaEngineConfigurationFactoryMock.cpp
r278185 r284085 102 102 static bool canEncodeMedia(const MediaEncodingConfiguration& configuration) 103 103 { 104 // The mock implementation supports only local file playback.105 if (configuration.type == MediaEncodingType::Record)104 ASSERT(configuration.type == MediaEncodingType::Record); 105 if (configuration.type != MediaEncodingType::Record) 106 106 return false; 107 107
Note: See TracChangeset
for help on using the changeset viewer.