| Summary: | Add support for VP9 Profile 2 (10-bit color) in WebRTC | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Justin Uberti <juberti> | ||||||||
| Component: | WebRTC | Assignee: | youenn fablet <youennf> | ||||||||
| Status: | RESOLVED FIXED | ||||||||||
| Severity: | Normal | CC: | eric.carlson, ews-watchlist, glenn, hta, jer.noble, philipj, sergio, tommyw, webkit-bug-importer, youennf | ||||||||
| Priority: | P2 | Keywords: | InRadar | ||||||||
| Version: | Safari 14 | ||||||||||
| Hardware: | Unspecified | ||||||||||
| OS: | iOS 13 | ||||||||||
| See Also: | https://bugs.webkit.org/show_bug.cgi?id=218221 | ||||||||||
| Attachments: |
|
||||||||||
|
Description
Justin Uberti
2020-10-13 15:04:25 PDT
First step is probably to make use of VP9 VideoToolbox decoding support when available. Do you know how much profile-id=2 is supported in other browsers (decoders and/or encoders)? I agree with the sequencing you propose. The current experimental setting to enable the existing VP9 support has been useful. Regarding higher profiles: - Chromium supports decoding profiles 1 and 2 in MSE and supports decoding profile 2 in WebRTC. I don't think it's fully plumbed for encoding yet though. - Firefox supports decoding profiles 1 and 2 in MSE. MSE support tester: https://googlechrome.github.io/samples/media/vp9-codec-string.html Created attachment 412092 [details]
Patch
Created attachment 412106 [details]
Patch
Comment on attachment 412106 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=412106&action=review r=me once the bots are happy. > Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCDefaultVideoDecoderFactory.m:85 > + NSDictionary<NSString *, NSString *> *profile0 = @{ > + @"profile-id" : @"0", > + }; > + RTCVideoCodecInfo *vp9InfoProfile0 = [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecVp9Name parameters: profile0]; Nit: can you do this inline? RTCVideoCodecInfo *vp9InfoProfile0 = [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecVp9Name parameters: @{ @"profile-id" : @"0" }]; > Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCDefaultVideoDecoderFactory.m:91 > + RTCVideoCodecInfo *vp9InfoProfile2 = [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecVp9Name parameters: profile2]; Ditto. > Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCDefaultVideoEncoderFactory.m:83 > + RTCVideoCodecInfo *vp9InfoProfile0 = [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecVp9Name parameters: profile0]; Ditto. > Source/ThirdParty/libwebrtc/Source/webrtc/sdk/objc/components/video_codec/RTCDefaultVideoEncoderFactory.m:89 > + RTCVideoCodecInfo *vp9InfoProfile2 = [[RTCVideoCodecInfo alloc] initWithName:kRTCVideoCodecVp9Name parameters: profile2]; Ditto. > LayoutTests/webrtc/vp9-profile2.html:22 > +}, "VP9 profile 2in getCapabilities"); s/profile 2in/profile 2 in/ Created attachment 412293 [details]
Patch
Committed r268971: <https://trac.webkit.org/changeset/268971> All reviewed patches have been landed. Closing bug and clearing flags on attachment 412293 [details]. |