Metadata Editor をつくる 2
Metadata Editor を自作するシリーズその 2。実装としての進捗はないけれど、調査内容をメモっておく。
それと Memo というページを作成してみた。まとまった資料とか何度も参照されそうなものは、このページの子として書いていく予定。既に ASF File というページを作成、少しずつ更新している。
ASF のデータを色々とダンプしたり Windows Media Player の拡張タグエディタで編集してみたりして気付いたのだが、ASF のメタデータを大別すると以下のようになるらしい。
- 基本データ
- 常に存在
- Content Description Object のタイトルやアーティストなど
- 言語・ストリーム非依存のデータ
- オプション扱い
- Extended Content Description Object
- ストリーム依存のデータ
- オプション扱い
- Header Extension Object 内の Metadata Object
- 言語・ストリーム依存のデータ
- オプション扱い
- Header Extension Object 内の Metadata Library Object
「言語・ストリーム非依存のデータ」と「ストリーム依存のデータ」はデータ名を重複して定義可能。Windows Media Format Runtime の IWMHeaderInfo3 などのメソッドには言語インデックスとストリーム番号を引数に持つものがあるのだけど同じデータ名で言語やストリーム依存のものは、それらを指定して取得・設定を分岐できる。この仕様により例えば日本語版と英語版の WM/AlbumArtist を同時に定義できる。
はじめは mp3infp などのように基本データと Extended Content Description Object だけ更新すればよいかなと思っていたのだけど Windows Media Player の拡張タグエディタで編集すると Metadata Library Object にデータが書かれるため、対応すべきか迷っている。
対応するか否かでデータの持ち方やインターフェースがまったく変わってしまう。内部的にはすべての依存を保持してインターフェースは言語・ストリーム指定版と省略版を多重定義しておく。省略版のときは Extended Content Description Object として扱う...とか考えてるのだけど言語・ストリーム指定版を使いこなす機会があるだろうか?という疑問もあって方針を決めかねている。