2020-08-06

macOS Big Sur 11 Beta 4でYouTubeが4K HDRで再生できる理由

https://developer.apple.com/documentation/macos-release-notes/macos-big-sur-11-beta-release-notes/

Support for 4K HDR playback of YouTube videos. (64824895)

先日リリースされた macOS Big Sur 11 Beta 4 では、Safariが更新され、YouTubeの4K HDR再生がサポートされました。

Apple TVでもYouTubeの4K HDR再生がサポートされる話は今年のWWDCで発表されましたが、macOSにも入ったようです。

ご存知ない方もいるかと思いますが、これまでmacOSやiOSなどでYouTubeの4K再生は不可能でした。

これはGoogleが4Kのビデオに対してVP9と呼ばれるコーデックを使っているためです。

しかし、AppleはVP9のビデオに対してハードウェアで再生する術がこれまではなく、iOSのYouTubeアプリではソフトウェアでデコードしていたみたいです。

Appleとしては、Googleらが推進するVP9ではなく、MPEGが推進するH.265/HEVCを使ってきました。そのため、これまでAVPlayerなどでVP9のビデオは再生できませんでした。Appleの立場としては4K HDRはH.265/HEVCを使って欲しいみたいです。

そんな中、macOS Big Surでは事態が一転します。

macOS 11.0 beta 4からVideoToolboxに VTRegisterSupplementalVideoDecoderIfAvailable が追加されました。

これはハードウェアのデコーダーにアクセスするためのAPIです。

ここにCMVideoCodecTypeである kCMVideoCodecType_VP9を渡すと、ハードウェアでVP9をデコードしてくれるようになります。

        // CMVideoCodecTypeのリストにないみたいなので決め打ち
        let kCMVideoCodecType_VP9: FourCharCode = 0x76703039
        // ここでkCMVideoCodecType_VP9を登録
        VTRegisterSupplementalVideoDecoderIfAvailable(kCMVideoCodecType_VP9)
        // 以後はAVPlayerなどでVP9のビデオを再生できる

Intel CPUだとSkylake世代以降でVP9のハードウェアデコードがサポートされているようですが、それ以前のものや一部CPUではハードウェアデコードが非対応な場合もあります。その場合は VTRegisterSupplementalVideoDecoderIfAvailable を使っても再生できないようです。

冒頭でも話したSafariのYouTube 4K HDRのサポートは WebKit のソースコード を見て頂くと、何をしているのか分かると思います。

というわけで、YouTubeの4K HDRはハードウェアデコードをしていました!

AppleもAV1を推進していくAlliance for Open Media(AOMedia)に参加しており、今後AV1のサポートも入ってきそうですね。

参考リンク