For reference, I had some hardware availability numbers over in the I2S thread for H265 in WebRTC <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/dc0e11bc-5ca2-47f8-b01b-0deedb3a1038n%40chromium.org> .
On Tuesday, March 4, 2025 at 3:12:33 PM UTC+1 朱思达 wrote: > Given your example, it seems like `video/mp4;codecs="hev1.1.6.L120.90"` is > supported by Chrome but not Safari, while the opposite is true for > `video/mp4;codecs="hvc1"`. > > AFAIK, Safari doesn't support HEVC MediaRecorder encoding. If you are > talking about decoding, for decoding, safari supports both > `video/mp4;codecs="hvc1"` and `video/mp4;codecs="hvc1.1.6.L120.90"` > mimetypes, but technically, the "full" mimetypes is an ISO standard (Please > refer to: ISO/IEC 14496-15:2019 - Annex E), and `video/mp4;codecs="hvc1"` > is not incorrect. > > For MediaRecorder.isTypeSupported(), will we have the same situation? Are > these strings clearly defined by specs and tested in WPT? > > They are defined in > https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/external/wpt/mediacapture-record/MediaRecorder-canvas-media-source.https.html;l=16 > and > ISO/IEC 14496-15:2019 - Annex E. > > Best regards, > Sida > From: "Philip Jägenstedt"<foo...@chromium.org> > Date: Tue, Mar 4, 2025, 17:18 > Subject: Re: [External] Re: [blink-dev] Re: Intent to Ship: H26x Codec > support updates for MediaRecorder > To: "朱思达"<zhu...@bytedance.com> > Cc: "Markus Handell"<hand...@google.com>, "Dale Curtis"< > dalec...@chromium.org>, "Ashley Gullen"<ash...@scirra.com>, "Mike Taylor"< > mike...@chromium.org>, "blink-dev"<blin...@chromium.org> > Thank you Sida for that breakdown, it's good to know we're not overlooking > any encoding or decoding surface. > > The most important question here is the one of royalty-free codecs vs > non-RF codecs, and the API owners will discuss this again alongside the > WebRTC intent. > > Poking a bit at the details, however, is it really the case that even when > Chrome and Safari support playing the same file, there's no codecs strings > that they both claim support for? Given your example, it seems > like `video/mp4;codecs="hev1.1.6.L120.90"` is supported by Chrome but not > Safari, while the opposite is true for `video/mp4;codecs="hvc1"`. > > For MediaRecorder.isTypeSupported(), will we have the same situation? Are > these strings clearly defined by specs and tested in WPT? > > Best regards, > Philip > > On Thu, Feb 20, 2025 at 4:33 AM 朱思达 <zhu...@bytedance.com> wrote: > >> Is decoding HEVC in plain <video> supported? I tried >> `document.createElement('video').canPlayType('video/mp4; codecs=hvc1')` >> which returns "probably" in Safari, but the empty string in Chrome. I can't >> tell from https://caniuse.com/hevc if I should expect it to be supported >> or not. >> >> And how about in MSE? >> >> >> The correct codec string should be `video/mp4;codecs="hev1.1.6.L120.90"`, >> that's why 'video/mp4; codecs=hvc1' is rejected on Chromium. You could >> try the code below to test the support: >> >> ```javascript >> const video = document.createElement('video'); >> if (video.canPlayType('video/mp4;codecs="hev1.1.6.L120.90"') === >> 'probably') { >> console.log('HEVC is supported!'); >> } >> >> if (MediaSource.isTypeSupported('video/mp4;codecs="hev1.1.6.L120.90"')) { >> console.log('HEVC is supported!'); >> } >> ``` >> >> For video decoding context, there are four major API FYI: >> >> 1. <video> + File. >> 2. <video> + MSE. >> 3. WebCodecs. >> 4. WebRTC. >> >> >> The HEVC support for the first three APIs has been enabled by default in >> M107 (On all platforms including: Windows, macOS, Linux, Android, >> ChromeOS). For the WebRTC API, there's activity happening to progress >> towards. >> >> Are there contexts where HEVC is not yet supported that aren't covered by >> this intent? WebRTC comes to mind, but are there any others? >> >> >> For video encoding context, there are three major API FYI: >> >> 1. WebCodecs. >> 2. MediaRecorder. >> 3. WebRTC. >> >> >> The HEVC support for the WebCodecs API has been enabled by default in >> M130 (On WIndows, macOS, Android), and for the WebRTC API, there's >> activity happening to progress towards. >> From: "Markus Handell"<hand...@google.com> >> Date: Thu, Feb 20, 2025, 03:40 >> Subject: [External] Re: [blink-dev] Re: Intent to Ship: H26x Codec >> support updates for MediaRecorder >> To: "Philip Jägenstedt"<foo...@chromium.org> >> Cc: "Dale Curtis"<dalec...@chromium.org>, "Ashley Gullen"< >> ash...@scirra.com>, "Mike Taylor"<mike...@chromium.org>, "blink-dev"< >> blin...@chromium.org>, "朱思达"<zhu...@bytedance.com> >> I'll need to defer definitive answers regarding <video> and MSE questions >> to Dale. But selecting video/mp4;codecs=hvc1.1.6.L186.B0,opus as format on >> https://webrtc.github.io/samples/src/content/getusermedia/record/ with >> MediaRecorderHEVCSupport enabled yields a video that plays back in the same >> window. >> >> > Are there contexts where HEVC is not yet supported that aren't covered >> by this intent? WebRTC comes to mind, but are there any other? >> >> Correct, WebRTC doesn't yet have support but there's activity happening >> to progress towards support though. What's the context of the question >> though, interoperability? Recorded content from MediaRecorder can't >> immediately be used with WebRTC connections. >> >> > Do we already support AV1 in every context where HEVC is supported or >> is planned? >> >> Both WebRTC and MediaRecorder have had AV1 support for a long time. I'll >> need to defer MSE & video support statements to Dale. >> >> >> On Wed, Feb 19, 2025 at 6:02 PM Philip Jägenstedt <foo...@chromium.org> >> wrote: >> >>> Hi, >>> >>> The API owners (Dan, Alex, Vlad, Yoav, Mike, Chris, Daniel, me) >>> discussed this today. We'd like to understand a bit better where HEVC is >>> already supported and what contexts don't yet support it. >>> >>> As mentioned, HEVC (encode and decode) is already supported in >>> WebCodecs. The tests on wpt.fyi are failing >>> <https://wpt.fyi/results/webcodecs?label=master&label=experimental&aligned&q=h265>, >>> >>> but presumably that's because the VMs the tests run in don't have the >>> required hardware support. I tried a few of the tests and they pass on my >>> own Mac machine. >>> >>> Is decoding HEVC in a plain <video> supported? I tried >>> `document.createElement('video').canPlayType('video/mp4; codecs=hvc1')` >>> which returns "probably" in Safari, but the empty string in Chrome. I can't >>> tell from https://caniuse.com/hevc if I should expect it to be >>> supported or not. >>> >>> And how about in MSE? >>> >>> Are there contexts where HEVC is not yet supported that aren't covered >>> by this intent? WebRTC comes to mind, but are there any other? >>> >>> Note that HEVC is called out as an example in the Blink principles of >>> web compatibility >>> <https://docs.google.com/document/d/1RC-pBBvsazYfCNNUSkPqAVpSpNJ96U8trhNkfV0v9fk/edit?tab=t.0#heading=h.prafhtr7ekmt>. >>> Wherever >>> royalty-free codecs like AV1 can be used, that's definitely preferable for >>> the Chromium project and the web. Do we already support AV1 in every >>> context where HEVC is supported or is planned? >>> >>> Best regards, >>> Philip >>> >>> On Wed, Feb 12, 2025 at 4:33 PM 'Markus Handell' via blink-dev < >>> blin...@chromium.org> wrote: >>> >>>> > Could you please request the various security, privacy, enterprise, >>>> etc. bits in your chromestatus entry? >>>> >>>> Done! >>>> >>>> On Tue, Feb 11, 2025 at 7:40 PM Dale Curtis <dalec...@chromium.org> >>>> wrote: >>>> >>>>> Sorry about that. Historically video codec changes were handled via >>>>> internal processes since they were aspects of the underlying Chromium >>>>> platform. Especially so in the case of HEVC where it requires hardware >>>>> support. Going forward all video codec changes will use the Blink process. >>>>> >>>>> - dale >>>>> >>>>> On Tue, Feb 11, 2025 at 9:12 AM Ashley Gullen <ash...@scirra.com> >>>>> wrote: >>>>> >>>>>> As a web developer interested in Chrome's video encoding capabilities >>>>>> with both WebCodecs and MediaRecorder, I had no idea until reading this >>>>>> that Chrome actually already shipped support for HEVC encoding with >>>>>> WebCodecs in M130 - it doesn't appear to be listed on >>>>>> chromestatus.com. Could Google make sure significant updates like >>>>>> this are noted there? Otherwise important updates can pass us right by! >>>>>> >>>>>> On Tue, 11 Feb 2025 at 16:09, Mike Taylor <mike...@chromium.org> >>>>>> wrote: >>>>>> >>>>>>> Could you please request the various security, privacy, enterprise, >>>>>>> etc. bits in your chromestatus entry? >>>>>>> On 2/11/25 3:56 AM, 'Markus Handell' via blink-dev wrote: >>>>>>> >>>>>>> CC Dale Curtis as well. >>>>>>> >>>>>>> On Tuesday, February 11, 2025 at 9:56:11 AM UTC+1 Markus Handell >>>>>>> wrote: >>>>>>> >>>>>>>> Contact emails: >>>>>>>> >>>>>>>> zhu...@bytedance.com >>>>>>>> >>>>>>>> hand...@google.com >>>>>>>> >>>>>>>> Explainer: >>>>>>>> >>>>>>>> Explainer: Codec support updates for MediaRecorder >>>>>>>> <https://docs.google.com/document/d/1YijhqWaeI118xqZV6Fd-UtqWpGDc-vFfFS6Dg4JEEqc/edit?tab=t.0> >>>>>>>> >>>>>>>> <http://crbug.com/40276507>crbug.com/40276507 >>>>>>>> >>>>>>>> TAG review: >>>>>>>> >>>>>>>> N/A, small incremental change >>>>>>>> >>>>>>>> Summary: >>>>>>>> >>>>>>>> Support for HEVC platform encoding was added in WebCodecs in >>>>>>>> Chromium M130. As a follow-up, support has been added to the >>>>>>>> MediaRecorder >>>>>>>> API in Chromium. The API now supports both MP4 and Matroska muxer >>>>>>>> types >>>>>>>> with different HEVC and H.264 mime type specifications. HEVC encoding >>>>>>>> is only >>>>>>>> supported if the user's device and operating system provide the >>>>>>>> necessary >>>>>>>> capabilities. >>>>>>>> >>>>>>>> Link to “Intent to Prototype” >>>>>>>> >>>>>>>> N/A, small incremental change and going directly for shipping. >>>>>>>> >>>>>>>> Risks >>>>>>>> >>>>>>>> Interoperability and Compatibility >>>>>>>> >>>>>>>> Gecko: Firefox 136 recently added support for decoding HEVC videos, >>>>>>>> see <https://bugzilla.mozilla.org/show_bug.cgi?id=1924066> >>>>>>>> https://bugzilla.mozilla.org/show_bug.cgi?id=1924066. Standards >>>>>>>> position request link: >>>>>>>> <https://github.com/mozilla/standards-positions/issues/1174> >>>>>>>> https://github.com/mozilla/standards-positions/issues/1174 >>>>>>>> >>>>>>>> WebKit: No official signal but note that MacBooks/iPhones have >95% >>>>>>>> HW encode/decode support of H265 and that Safari has added support for >>>>>>>> this >>>>>>>> codec in adjacent web APIs such as WebRTC. Standards position request >>>>>>>> link: >>>>>>>> <https://github.com/WebKit/standards-positions/issues/460> >>>>>>>> https://github.com/WebKit/standards-positions/issues/460 >>>>>>>> >>>>>>>> Web developers: Positive. Support implemented by ByteDance & Intel. >>>>>>>> >>>>>>>> Will this feature be supported on all six Blink platforms (Windows, >>>>>>>> Mac, Linux, Chrome OS, Android, and Android WebView)? >>>>>>>> >>>>>>>> The support is currently limited to Windows, macOS and Android >>>>>>>> hosts. ChromeOS and Linux support may follow in the future when/if >>>>>>>> their >>>>>>>> platform codec availability allows. >>>>>>>> >>>>>>>> Is this feature fully tested by web-platform-tests? >>>>>>>> >>>>>>>> Yes, the existing test suite >>>>>>>> <https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/web_tests/external/wpt/mediacapture-record/> >>>>>>>> >>>>>>>> was extended with cases for the new codec strings. >>>>>>>> >>>>>>>> Tracking bug >>>>>>>> >>>>>>>> <http://crbug.com/40276507>crbug.com/40276507 >>>>>>>> >>>>>>>> Link to entry on the Chrome Platform Status >>>>>>>> >>>>>>>> <https://chromestatus.com/feature/6375884229181440> >>>>>>>> https://chromestatus.com/feature/6375884229181440 >>>>>>>> >>>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "blink-dev" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to blink-dev+...@chromium.org. >>>>>>> To view this discussion visit >>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/edc31811-00da-4410-bfc7-b224bb825e4fn%40chromium.org >>>>>>> >>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/edc31811-00da-4410-bfc7-b224bb825e4fn%40chromium.org?utm_medium=email&utm_source=footer> >>>>>>> . >>>>>>> >>>>>>> -- >>>>>>> You received this message because you are subscribed to the Google >>>>>>> Groups "blink-dev" group. >>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>> send an email to blink-dev+...@chromium.org. >>>>>>> To view this discussion visit >>>>>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/cb683232-ef5e-47f4-93fa-3e8809a0d2b5%40chromium.org >>>>>>> >>>>>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/cb683232-ef5e-47f4-93fa-3e8809a0d2b5%40chromium.org?utm_medium=email&utm_source=footer> >>>>>>> . >>>>>>> >>>>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "blink-dev" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to blink-dev+...@chromium.org. >>>> To view this discussion visit >>>> https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAJjiFfG4zq4_mUknwsG%2BLetoM_RE1fiqFKVjkAyLJ4GpSUUkCw%40mail.gmail.com >>>> >>>> <https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAJjiFfG4zq4_mUknwsG%2BLetoM_RE1fiqFKVjkAyLJ4GpSUUkCw%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/81f2bc89-38e2-4699-a43f-fc7433915132n%40chromium.org.