「don.8mitsu.net Advent Calendar 2019」15日目の記事です。昨日はmimikunさんでした。
はじめに断っておくと、難しいことは書きません。自分もわかんないんで。
SoC側のVP9のハードウェアデコード対応の有無が、どのぐらい差が出るのかふと気になったので、実際に再生して試してみたというだけのお話です。
サポートの差は如何程のものか
検証端末
HTC J butterfly(Android 6.0.1)
- Snapdragon 810
- Cortex-A57 2.0GHz 4コア
- Cortex-A53 1.5GHz 4コア
- VP9再生支援無し
Galaxy S6 edge(Android 7.0)
- Exynos 7420
- Cortex-A57 2.1GHz 4コア
- Cortex-A53 1.5GHz 4コア
- VP9再生支援あり
Android One X2(Android 9)
- Snapdragon 630
- Cortex-A53 2.2GHz 4コア
- Cortex-A53 1.8GHz 4コア
- VP9再生支援あり
AQUOS sense lite(Android 9)
- Snapdragon 430
- Cortex-A53 1.4GHz 4コア
- Cortex-A53 1.1GHz 4コア
- VP9再生支援無し
古いデバイスになりますが、同世代のほぼ同スペックでありながら、再生支援の有無が分かれているHTC J butterfly HTV31とGalaxy S6 edgeをチョイス。
それに加えて、下のグレードのミドルレンジ辺りの端末を持ってきました。
再生に使用するのはVP9 2500kbps/Opus 160kbpsで適当にエンコードしたWebM形式の動画。解像度はそれぞれFHDとHDのものがあり、30fpsと60fpsの2種類を用意しました。アプリはGoogleフォト(4.32.1)を利用します。
再生支援無しでFHD 60fpsはほぼ無理
FHD 60 | FHD 30 | HD 60 | HD 30 | |
---|---|---|---|---|
butterfly | ✕ | ○ | ◎ | ◎ |
Galaxy | ◎ | ◎ | ◎ | ◎ |
X2-HT | ◎ | ◎ | ◎ | ◎ |
AQUOS | ✕ | ○ | ◎ | ◎ |
最初だけ若干もたついた場合は○、所々観られないこともない程度のフレームレートの低下があれば△、カックカクの場合✕ぐらいの雑な評価をしました。
今回用意した動画が低ビットレートでFHD 60fpsまでなので、SoCでVP9のハードウェアデコードがサポートされていれば随分余裕があります。反面、ハードウェアデコード無しでは明らかに苦しい場面も。
思いの外、サポート無しかつ一番下のスペックとなるAQUOS sense liteが健闘しており、FHD 30fpsまではなんとか再生できました。
HWデコーダの無い別のデバイスでも試してみる
乗り気になってきたので、Snapdragon以外を搭載するデバイスを加え、より低スペックな端末としてarrows M02なども用意。
Xperia Z4(Android 7.0)
- Snapdragon 810
- Cortex-A57 2.0GHz 4コア
- Cortex-A53 1.5GHz 4コア
- VP9再生支援無し
arrows M02(Android 5.1)
- Snapdragon 410
- Cortex-A53 1.2GHz 4コア
- VP9再生支援無し
Unihertz Atom(Android 9)
- MediaTek Helio P23(MT6763V/B)
- Cortex-A53 2.0GHz 8コア
- VP9再生支援無し
Galaxy J(Android 9 @Floko)
- Snapdragon 800
- Krait400 2.3GHz 4コア
- VP9再生支援無し
MediaPad M5(Android 9)
- Kirin 960
- Cortex-A73 2.4GHz 4コア
- Cortex-A53 1.8GHz 4コア
- VP9再生支援無し
FHD 60 | FHD 30 | HD 60 | HD 30 | |
---|---|---|---|---|
Xperia | ✕ | △ | △ | ◎ |
arrows | ✕ | ✕ | ✕ | ○ |
Atom | ◎ | ◎ | ◎ | ◎ |
Galaxy J | ✕ | ✕ | ✕ | ◎ |
MediaPad | ◎ | ◎ | ◎ | ◎ |
どういうことなのAtom。解像度が低すぎる(240×432 px)からなのか……?いや違うかな、そういや結構パワーあるんだよなコイツ……。
さて、いくつか試した感じでは、余程のこと(Z4とか……)がない限り、HD 60fpsぐらいならソフトウェアデコードでもなんとかなりそうな感じがしますね。AtomやMediaPad M5のようにパワーさえあればFHDもいけます。
ソフトウェアデコーダの性能や、動画のエンコード具合(ビットレートはもちろん、-tile-columnsとか?)など、様々な要因で変わってくることではありますが、古い端末でのギリギリなラインはHD 60fpsまでといったところでしょうか。安全圏はHD 30fpsです。
Xperia Z4、Cortex-A57が全コア稼働できなかったり、すぐサーマルスロットリングに引っかかったりと、結構キツイところがありますからね……。
あまり気にしなくてもよさそう
Android上で動かすノベルゲームアプリに組み込む動画ファイルは、どんな形式がよさそうかなと考えていたところで、AV1は再生支援なくて論外だろう(※試してない)し、VP9だと下限はどんなもんだろうなと思って試してみた次第です。
(素直にH.264でもいいけど、やっぱサイズはケチりたいじゃん?それに動画がトータルで12分を超える場合は~とかライセンス周りを考えたくはないのもあります……。)
結果としてHD解像度30fpsぐらいであれば、そこそこ端末が古かろうとソフトウェアデコードで対応できるだろう(タブンネ!)といった感じになりました。Cortex-A53がまだまだ現役で使われていますが、出始めの頃(2014年頃)の製品でなければ多少クロックが低くても概ね問題なさそうです。
今のところ、Snapdragon 820や630よりも下にはVP9のデコーダーが載ってないようなのですが、実際のところ対応してなくても利用者側が困る場面はなさそうではあります。
強いて挙げるのならば、たまたま見つけたYouTube推奨端末って感じのページがあって、そこでの要件の一つにVP9のサポートが含まれているというのはありました。
最高の体験を得るにはいいやつ買おうねって話ですね。
AV1については、最近発表されたMediaTekのDimensity 1000でAV1のデコーダが搭載されるようになったぐらいですし、まだまだこれからだなぁという気持ちです。
「don.8mitsu.net Advent Calendar 2019」、明日からは8mitsuさんです。がんばってねー。