kiyasuの日記

ハッピーうれピーよろしく哀愁

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をパースしてアニメーションさせる。

となるだろうか。