アカベコマイリ

HEAR NOTHING SEE NOTHING SAY NOTHING

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 として扱う...とか考えてるのだけど言語・ストリーム指定版を使いこなす機会があるだろうか?という疑問もあって方針を決めかねている。