Android 版 U-NEXT が「Dolby Atmos 対応端末」に対応
まえがき
これまでも、Android 版 U-NEXT は Dolby Atmos や Dolby Audio (ここでは 5.1ch や 7.1ch の意) には対応してきた。
■ドルビーオーディオ、ドルビーアトモス対応デバイス(2021年11月現在)
- Androidスマートフォン/タブレット
- Chromecast Ultra
- Amazon Fire TV
- Amazon Fire TV Stick 4K
- Amazon Fire TV Stick 4K Max
- Amazon Fire TV Cube
- U-NEXT TV(MediaQ M380)
- Android TV 機能搭載デバイス
※機種によってはドルビーオーディオ、ドルビーアトモス非対応である場合があります。
ドルビーオーディオ、ドルビーアトモスとは | U-NEXTヘルプセンター
※ドルビーオーディオ、ドルビーアトモスに対応しているかどうかはお使いのデバイスのマニュアルや仕様書等で直接ご確認ください。
一見 Dolby Atmos や Dolby Audio は対応端末でしか体験できないように書いてあるが、実は本体側の対応の必要はない。というのも、Android 版 U-NEXT は Dolby Atmos / Dolby Audio 音声のデコードやバーチャルサラウンド等の諸々の処理を、全てアプリ内で行えるようになっているからだ。
ただし、今までは端末側が Dolby Atmos / Dolby Audio に対応していても音声はアプリ内で処理してしまうため、対応端末で本体側の Dolby Atmos 機能を使用していると、アプリ側と本体側とで2重にエフェクトがかかり、音が変になってしまう危険性があった。詳細は以下の記事にて。
今まで U-NEXT のサービスや Android 版アプリ自体は Dolby Atmos 音声の配信には対応していたものの、「Dolby Atmos 対応 Android 端末には対応していない」と言える状態でもあった。しかし、どうやら最近のアップデートで改善されているということに気づいた。
なお、毎日スマホで U-NEXT の Dolby Atmos / Dolby Audio 採用作品を観ているわけではないし、U-NEXT の お知らせ や プレスリリース にはこの情報は載っていないし、Google Play ストアのアプリ更新内容は最新バージョンしか参照できない (しかも最近結構な頻度でアップデートが来ている) ため、いつこの仕様になったのかまでは分からない。
検証した限りでは、この変更は今年の2月にリリースされた Ver. 4.35.0 から適用されているようだ。が、当該の更新内容にはこの旨の記載がないため、確信は持てない。
- 新着情報
- ビデオプレーヤーのデザインを使いやすく改善しました
- ビューワーの一部のデザインを使いやすく改善しました
- U-NEXT独占のライブ配信がわかりやすくなりました
- バグ修正
- ビデオタイトル画面で画像解像度が低い問題を修正しました
- 小説などのブックで、ページめくりの設定が正しく表示されない不具合を修正しました
- 小説などのブックで、ビューワー起動時にアプリが落ちる不具合を修正しました。
- ビューワーで縦横の表示を切り替えた際にページが先頭に戻る不具合を修正しました。
- 小説などのブックで、スクロールの挙動を改善しました。
4.35.0 以降はこれから解説する新しい仕様になっており、4.33.0 以前はなっていなかったのだが、間に 4.34.0 が存在したのかまでは不明。
端末の挙動による確認
Xperia や Galaxy は、Dolby Atmos / Dolby Audio 音声が再生されると、本体側の Dolby Atmos の機能が連動してオンになる仕組みになっている。(Galaxy は 非 Dolby Atmos (2.0ch や 5.1ch や 7.1ch) の Dolby Digital Plus や、Dolby Digital では連動しないが、Dolby AC-4 であればステレオでも連動する)
今まで U-NEXT では Dolby Atmos / Dolby Audio 音声をアプリ内で全て処理してしまっていたため、U-NEXT でそれらの音声を再生しても、本体側の Dolby Atmos 機能は Dolby Atmos / Dolby Audio 音声が再生されていると認識できずに連動していなかった。
しかし、最近 Xperia 1 II や Galaxy Note10+ で連動するようになっていたことを確認した。
また、Dolby Atmos に対応した Android 10 の AQUOS や arrows では、Dolby Atmos / Dolby Audio コンテンツが再生されると、本体側の Dolby Atmos の機能は連動しないものの、「Dolby ATOMS」(誤字…) や「Dolby Audio」という通知が出るようになっている。
今までこれらの通知も U-NEXT では出ていなかったのだが、最近になって出るようになったのを AQUOS R2 (Android 10) にて確認した。
メーカーや Android バージョンによって挙動は違えど、機種本体側の Dolby Atmos 機能が何かしらの反応をしていることから、どうやら Dolby Atmos / Dolby Audio 音声の処理を、本体側で行うようになったらしい。
ただし、Dolby Atmos / Dolby Audio 採用作品は、ダウンロードするとステレオ音声になってしまうようだ。
Android 版 U-NEXT は、Dolby Atmos や Dolby Audio で再生しているときは再生画面にそれぞれのロゴが出るようになっているのだが、ダウンロードするとロゴは出なくなる。更に、Xperia 1 II や Galaxy Note10+ の Dolby Atmos 機能も連動せず、AQUOS R2 の Dolby Atmos の通知も出なくなっている。
ダウンロード設定は「高画質」「字幕版でダウンロード」としているのだが…。
Dolby Atmos や Dolby Audio 音声はストリーミング視聴時のみで、ダウンロードするとステレオの AAC などになってしまうというのは、U-NEXT だけでなく Disney+ 等もそうなのだが、何かあるのだろうか。Apple Music や Amazon Music 等、音楽系のサービスでは Dolby Atmos 音声をダウンロードできるのだが…。
では、Dolby Atmos にも Dolby Audio にも非対応な端末の扱いはどうなったのか。Pixel 6 と Xperia XZ2 Premium にて検証したところ、従来どおり Dolby Atmos / Dolby Audio 音声はアプリ内でデコードやバーチャルサラウンド等の処理がされていることが確認された。
先程引用した過去記事ではこう書いていたが、Android 版 U-NEXT がまさにその通りになった。
では、Amazon Music はどうすればよかったのか。答えは単純で、ハードウェアデコードとソフトウェアデコードのハイブリッドにすればいい。つまり、本体が対応しているものはデコードを本体に任せ、非対応なものだけをアプリ側でデコードする。ただこれだけで済んだ話である。
バイノーラル音声や Amazon Music の空間オーディオには極力オーディオエフェクトをかけないほうがいいという話 – idomizu theatre
なお、その後 Android 版 Amazon Music も、Dolby AC-4 IMS 対応端末では端末側で処理するように変更されている。Dolby AC-4 IMS 非対応の Android 端末や、iPhone / iPad では引き続きアプリ内での処理が行われている。
実機ログによる確認
上記の動作確認だけでも正直十分ではあると思うのだが、念の為ログ (logcat) でも確認してみようと思う。
U-NEXT で Dolby Atmos コンテンツを再生しているときは、本体の Dolby Digital Plus JOC デコーダー (OMX.dolby.eac3-joc.decoder) が動作していることが確認できる。
I OMXClient: IOmx service obtained
I OMXMaster: makeComponentInstance(OMX.dolby.eac3-joc.decoder) in android.hardwar process
D DlbDecParamArray: getProfileParams(profile = -1)
E OMXNodeInstance: setConfig(0xed141580:dolby.eac3-joc.decoder, ConfigPriority(0x6f800002)) ERROR: Undefined(0x80001001)
I ACodec : codec does not support config priority (err -2147483648)
E OMXNodeInstance: setConfig(0xed141580:dolby.eac3-joc.decoder, ConfigPriority(0x6f800002)) ERROR: Undefined(0x80001001)
I ACodec : codec does not support config priority (err -2147483648)
E OMXNodeInstance: setConfig(0xed141580:dolby.eac3-joc.decoder, ConfigOperatingRate(0x6f800003)) ERROR: Undefined(0x80001001)
I ACodec : codec does not support config operating rate (err -2147483648)
W ExtendedACodec: Failed to get extension for extradata parameter
一方 Dolby Audio コンテンツ再生時には、Dolby Digital Plus デコーダー (OMX.dolby.eac3.decoder) が動作しているのが確認できる。
I OMXClient: IOmx service obtained
I OMXMaster: makeComponentInstance(OMX.dolby.eac3.decoder) in android.hardwar process
D DlbDecParamArray: getProfileParams(profile = -1)
E OMXNodeInstance: setConfig(0xed140e10:dolby.eac3.decoder, ConfigPriority(0x6f800002)) ERROR: Undefined(0x80001001)
I ACodec : codec does not support config priority (err -2147483648)
E OMXNodeInstance: setConfig(0xed140e10:dolby.eac3.decoder, ConfigPriority(0x6f800002)) ERROR: Undefined(0x80001001)
I ACodec : codec does not support config priority (err -2147483648)
E OMXNodeInstance: setConfig(0xed140e10:dolby.eac3.decoder, ConfigOperatingRate(0x6f800003)) ERROR: Undefined(0x80001001)
I ACodec : codec does not support config operating rate (err -2147483648)
W ExtendedACodec: Failed to get extension for extradata parameter
OMX は OpenMAX の略称、eac3 は Dolby Digital Plus の技術的な名称である Enhanced AC-3 の略称、joc は Joint Object Coding の略称である。Dolby Digital Plus (Enhanced AC-3) とは非可逆圧縮 (ロッシー圧縮) の音声コーデックであり、Joint Object Coding とは Dolby Digital Plus において Dolby Atmos を実現する仕組みである。
上記のログは Dolby AC-4 にも対応している arrows NX9 にて取得したものだが、Dolby AC-4 デコーダーが動作することはなかった。
Android 版 U-NEXT は、今まで Dolby Atmos や Dolby Audio 音声をアプリ内で処理していたことから、Dolby Digital Plus JOC よりも処理の軽い Dolby AC-4 IMS を使用しているのではないかと思っていたのだが、実はそうではないらしい。
なお、Dolby Audio 対応の arrows NX (F-01K) においては、Dolby Atmos 採用作品でも Dolby Audio 採用作品でも、端末側の Dolby Digital Plus デコーダーが使用されていた。
I OMXClient: IOmx service obtained
I OMXMaster: makeComponentInstance(OMX.dolby.eac3.decoder) in omx@1.0-service process
I DMSService: registerClient type = 4, uid = ed77c580
V DolbyManagerService: registerClient() client 0x7a60a822a0, uid -310917756
I DdpConfigExt: checkAndUpdateEndp current endpoint = 8 previous endpoint = -1
I DDP_JOCDecoder: -> init name OMX.dolby.eac3.decoder
I DDP_JOCDecoder: <- init
D DDP_JOCDecoder: initPorts
E OMXNodeInstance: setConfig(0xed729a80:dolby.eac3.decoder, ConfigPriority(0x6f800002)) ERROR: Undefined(0x80001001)
I ACodec : codec does not support config priority (err -2147483648)
W DolbyManagerSer: type=1400 audit(0.0:2620): avc: denied { call } for scontext=u:r:np_hal_dms_default:s0 tcontext=u:r:mediacodec:s0 tclass=binder permissive=0
E DolbyManagerService: Call client failed on -310917756
E OMXNodeInstance: setConfig(0xed729a80:dolby.eac3.decoder, ConfigPriority(0x6f800002)) ERROR: Undefined(0x80001001)
I ACodec : codec does not support config priority (err -2147483648)
E OMXNodeInstance: setConfig(0xed729a80:dolby.eac3.decoder, ConfigOperatingRate(0x6f800003)) ERROR: Undefined(0x80001001)
I ACodec : codec does not support config operating rate (err -2147483648)
E OMXNodeInstance: getConfig(0xed729a80:dolby.eac3.decoder, ConfigAndroidVendorExtension(0x6f100004)) ERROR: Undefined(0x80001001)
W ExtendedACodec: Failed to get extension for extradata parameter
モバイル機器向けの Dolby Audio (旧称: Dolby Digital Plus) とは、モバイル機器向けの Dolby Atmos の下位エディションという位置づけであり、Dolby Atmos には対応しないものの、Dolby Digital や Dolby Digital Plus のデコーダー (最大 7.1ch) は搭載し、モバイル版 Dolby Atmos の一部のオーディオエフェクトも使うことができる。
これまで U-NEXT では Dolby Atmos 音声をアプリ内で処理していたため、Dolby Audio 対応端末でも Dolby Atmos で聴くことができていたのだが、最近になって端末が Dolby Atmos や Dolby Audio に対応していれば端末側のハードウェアデコーダーを使用するようになったため、Dolby Audio 対応端末では 5.1ch か 7.1ch のダウンミックスでしか聴くことができなくなってしまった。(ログ中の DDP_JOCDecoder という名称が気になるが…)
一方で、Dolby Atmos にも Dolby Audio にも非対応な端末では、引き続き音声の処理はアプリ内でやってくれるので Dolby Atmos で聴けるという、なんとも悲しい逆転現象が起きている。(が、正直個人的にはこの方法がベストではあると思う)
なお、Dolby Audio 対応端末では Dolby Atmos で聴けなくなってしまったにも関わらず、再生画面には Dolby Atmos のロゴが出ている。
ちなみに、ダウンロードして再生しているときのログを確認すると、 AAC デコーダー (c2.android.aac.decoder) が動いていた。
D CCodec : allocate(c2.android.aac.decoder)
I Codec2Client: Available Codec2 services: "software"
V C2Store : in init
V C2Store : loading dll
I CCodec : Created component [c2.android.aac.decoder]
D CCodecConfig: read media type: audio/mp4a-latm
Android 版 U-NEXT の Dolby Audio 機能
Android 版 U-NEXT アプリには、モバイル版 Dolby Audio の一部のオーディオエフェクトが組み込まれている。
ドルビーオーディオの機能を使いたい | U-NEXTヘルプセンター
- 出力先を設定
ドルビーオーディオの音質で出力する先を以下から選択できます。
- スピーカー
- ヘッドホン
- 立体的な音声
「ドルビーオーディオプロセッシング」で、立体的な音声を楽しめます。- セリフを聞き取りやすく
「ダイアログエンハンサー」で、セリフを聞き取りやすくできます。
今までは本体側が Dolby Atmos や Doby Audio に対応していようとも、これらの機能を使うことができたため、これらの設定が何なのかよく分からずに本体側とアプリ側の Dolby のエフェクトを両方オンにしてしまうと、同じエフェクトが二重に掛かってしまい、音が変になってしまう危険性があった。
「ドルビーオーディオを有効にする」のトグルボタンは対応作品を Dolby Atmos や Dolby Audio で視聴するための設定で、その下の「出力設定」「ドルビーオーディオプロセッシング」「ダイアログエンハンサー」は Dolby Audio のエフェクトの設定である。
最新バージョンにおいて、Dolby Atmos / Dolby Audio 対応の Xperia、Galaxy、arrows、AQUOS では、Dolby Audio のエフェクトの設定がごっそりなくなっていた。
Dolby Atmos にも Dolby Audio にも非対応の Pixel 等では、今でもこの機能が設定画面から利用可能となっている。
「ドルビーオーディオプロセッシング」が見当たらないが、恐らく「ドルビーオーディオを有効にする」に統合されたものと思われる。また、「ダイアログエンハンサー」の段階が12段階から9段階に減っている。
おわりに
いい締め方が思いつかなかったため、代わりに (?) U-NEXT の画質や音質に対する考え方が述べられた良記事の宣伝でも。