Dolby AtmosのADM仕様書をそれとなく理解する
https://professionalsupport.dolby.com/s/article/Dolby-Atmos-ADM-Profile-specification?language=en_US
こちらの公式資料と、Logicサンプルファイルから抽出したiXMLファイル(これを使えばできます)を眺めつつそれとなく理解に努める。
おおまかには、様々なパラメータがXMLエレメントごとに分割して格納されているので、それぞれ紐づけされたIDでたどって情報を集約していくことになる。
重要そうなところは
- オーディオベッドの各チャンネルへのアサインが書かれているAudioChannelFormat(typeDefinition=DirectSpeaker)
- audioChannelFormatは最大128個出現し、DirectSpeakerとObjectに分かれている。
- audioBlockFormatはaudioChannelFormatの子として入っている。
- (DirectSpeakerの場合)audioBlockFormatは位置情報が入っている
- (Objectの場合)audioBlockFormatは時間とその時点での位置情報が格納されている。これがchannelの下に複数個格納され、アニメーションとしてパースできる(多分)
- あまり具体的な実装の説明はないが、jumpやinterpolationについては補足説明がある。
この仕様書にはエレメントやアトリビュートの名前と取りうる値、仕様としてどう扱われるか(オミットされるか。無視されるか)などが書かれているが、実際にアプリケーションでどう実装されるか、どうレンダリングされるかは解釈の余地があるように思われる(名前からなんとなく想像はできるが)。ほかにも資料があるのか、こういうものなのか。
General Requirementくらいは見ておいた方がいいかもしれない。
General Requirement
- Dolby ATmosのADMファイルは最大128チャンネルのオーディオとメタデータが含まれている。
- チャンネルにはオーディオベッド(typeDefinition="DirectSpeakers")とオーディオオブジェクト(typeDefinition="Objects")が含まれる
- 例外はあるが最大118のオーディオオブジェクトが存在する
- これらの制限と他の条件(audioBlockFormatアトリビュートの仕様を参照)を鑑みて、MAX_CHANNEL_COUNTとMAX_ELEMENT_COUNTという2つの変数がこのドキュメントでは使われる。
- MAX_CHANNEL_COUNTは最大チャンネル数で128、MAX_ELEMENT_COUNTはXMLエレメントの最大出現回数で、118のオブジェクトと5つのDirectSpeakerのステレオセットの合計で構成されている。
- くわしくはaudioBlockFormatアトリビュートの仕様を参照
あとは各XML Element, Attribute, Subelementについて
- 各項目の制限、要求
- 各エレメント同士の紐づけ
が主に書かれている。前述したとおり「このデータはプログラムでどのように扱われるべきか」といったことは書かれていない。あくまでデータの仕様書という感じ。
自分がやりたいことに照らし合わせると
- audio bedを空間上の定位置にレンダリングする
- typeDefinition=DirectSpeakersとなっているaudioChannelsを見て、coordinateに合わせて配置する。
- audio objectをパースする
- typeDefinition=ObjectsとなっているaudioChannelsを見て、その子のaudioBlockFormatのrtime, duration, coordinateをパースしてアニメーションさせる。
となるだろうか。