スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【同じタグを付けた記事の一覧】

ATRAC3plus のデコードと FFmpeg

2014年03月15日(土)01時28分

コメント欄にて

先日「foobar2000 で OMA(ATRAC)を聴く」において、ソニー製コンポーネントを使用しない、独自実装の ATRAC3plus デコーダが開発され、FFmpeg に搭載されましたがどう思われますか?といった趣旨のコメントを頂きました。
で、本来であればそのコメント欄で返信する、という形をとるのが筋ではあるのですが、もうブログの前回更新からそろそろ一か月が経ち、不更新ペナルティの広告が出てしまうこともあって、そもそもなぜ自分が foo_input_oma.dll を作ることにしたのか、というようなことや、その他グダグタとした話なども加えて、一つの記事とすることにしました。

ATRAC3plus と FFmpeg

まずは、ATRAC3plus デコーダが FFmpeg に加わった意義(あるいは意味)と、そのことについての自身の感想についてです。
ATRAC というのは言わずと知れたソニー独自の音楽圧縮形式であり、これまでこの形式で圧縮された音声ファイルは、ソニー製の機器やソフトウェアでしか再生できないものでした。
特にソフトウェアに関しては、従来(自分の知る限りでは)Windows 上で動くものしか存在せず、最近のウォークマンAndroid 化に伴って Android 用の専用アプリはあるようですが、それ以外の、例えば MacLinux では「使えない」フォーマットでした。
しかし、FFmpeg はオープンソースで様々なフラットフォームに移植されているメディア形式変換ソフトウェアであり、これに搭載されたということは、それら「Windows 以外」の機器やソフトウェアでも ATRAC が利用可能になるということですので、これは喜ばしいことだと思います。
また foobar2000 も少し前からいくつかのフォーマットのデコードに FFmpeg を使用するように変更されていますので、foobar2000 の作者が「その気になれば」標準で ATRAC が再生可能なプレーヤーとなり、晴れて foo_input_oma.dll もお役御免となる日が来るかもしれません。

しかし今更…

ただ、上記で「その気になれば」とわざわざカッコ書きしたのは、海外ではとっくに完全撤退しており、国内でもフェードアウトを狙っているようにしか見えないフシのある ATRAC という形式の需要を思えば、国内製で国内向けに作られているフリーウェア等ならともかく、foobar2000 のような海外製で海外主体のソフトウェアが、これを「標準で」サポートする必要がある、という判断が下されるかどうかには、少し疑問を感じるからです。

ATRAC デコーダは出ない、という予想

思い返せば foo_input_oma.dll を作ろうと考えた当初、自分は「ATRAC デコーダの類はこの先でないだろう」という予想をしていました。
というのも、この手の解析作業というのは、「海外発」ということが圧倒的に多く(実際今回もそうですし)、そしてその頼みの「海外」では ATRAC はもうずっと前に完全に終了していましたから、つまり「彼ら」が ATRAC を解析する必要性が全くなくなっていたわけです。
ですので、多分オリジナルな ATRAC デコーダはもう出る目はないな、と考えていました。
そしてそこに、おそらくこの先 ATRAC は国内でも消えていくだろう、というもう一つの予測を合わせたとき、これはもう「その時」に備えて誰かが「ATRAC → その他の形式」への(比較的柔軟な)道を残しておく必要があるのではないか?という思いがあり、そのある種の「義務感」のようなものも、foo_input_oma.dll 製作の動機の一つとはなっていました。

PSP エミュレータという伏兵

ところが、その予測の源である「海外で ATRAC を解析する必要性がない」という前提自体に誤りがあったのです。
それは何かといえば「PSP」、すなわちソニー製の「世界中で」大ヒット?した携帯ゲーム機の存在でした。
自分はこのゲーム機を持っていないため知らなかったのですが、どうやらこの機器用のゲームソフトは、音源として主に ATRAC が使用されているらしく、そのエミュレータ(本来 PSP で動かすゲームを PC 等で遊べるようにしてしまうソフトウェア)の製作のために ATRAC をどうにかする必要が「海外でも」生じていたわけです。
そして、もともとこの「ゲーム機のエミュレータ」という存在は、そこでプレイするゲームソフトのファイルの入手経路等のこともあり、少しばかりアングラな世界とかぶっており、これは ATRAC 等のプロプライエタリなソフトウェアの解析という行為も、若干そういう傾向があるため、ある意味相性がいいとは言えます。
つまり、PSP のゲームに ATRAC が採用された時点で、これが解析される可能性が飛躍的に向上しており、その出現はもはや時間の問題だったのかもしれません。

知ってた

ただ、これは教えてもらってから「自分だってずっと前からそんなこととっくに知ってましたよ」と強がりを言っている「イタい人」のようで書くのがはばかられるのですが、実はこの「ATRAC デコーダが既に完成している」という事実は、コメントで教えていただく前(といっても本当に「直前」ですが)に知っていました。
また、去年ぐらいからこういう傾向、つまり PSP のエミュレータがらみで ATRAC のデコードをどうにかしようとしている個人やグループがあり、それが少しずつ進んでいるということも知っており、というのも、ある事情(後述)により、時々 ATRAC のデコード事情についての世界のニュースを追っていて、そして偶然にも、今回コメントを頂く少し前にも、なぜか思い立って調べてみる気になり、「MaiAT3PlusDecoder」の存在もその時に見つけていたのです。

MaiAT3PlusDecoder とライセンス

で、その MaiAT3PlusDecoder ですが、上記情報収集中にオリジナルのデコーダの存在を、海外の掲示板の書き込みで知り、とりあえずダウンロードしてみました。
そして中身を見て「ソースがある」ことを確認し、「ついにここまで来たのか」と思いつつ、しかし、どうせ内容を見ても理解できるような能力はありませんので、また、とある理由(後述)により、ソースを一瞥すらせずにすぐに削除してしまいました。
ただ、一応それがどういうものなのか、その素性を知るべく「MaiAT3PlusDecoder」で検索すると、どうもソニー製のコンポーネントをリバースエンジニアリングして作られた(あるいはそれが疑われている?)というような情報もあり、もしそれが事実であれば、ここから急に進展することもないのかな、と思っていました。
というのも、たいていのプロプライエタリなソフトウェアではリバースエンジニアリングは利用規約等で禁じられていたりしますので、もしそういうものであればその時点でライセンス違反となりえ、「表の(アングラでない)」ソフトウェアでこうしたものを堂々と採用(あるいは搭載)するわけにはいかないはずだからです。

FFmpeg とクリーンルーム設計

しかし、またしても自分の予想は外れ、いただいたコメントでは FFmpeg にあっさりと搭載されたとのこと(MaiAT3PlusDecoder そのものがそのまま乗っているのかどうかは知りませんが)。
これは、MaiAT3PlusDecoder が実際にはリバースエンジニアリング等はせず、完全にゼロから書き起こされたオリジナルなものであったのか、そもそもリバースエンジニアリングの禁止という規約自体が無効であるという主張、あるいはそういう法律を持つ国を経由(それで OK ということになるのかは知りませんが)していたり、もしくは、動作原理を理解した人から教えてもらい、それに従って誰かがゼロから書き上げる「クリーンルーム」方式で実装したのか、その真実は知りませんが、とにかく、FFmpeg というかなり大きなプロジェクトが、「危ない橋」をわたるとは思えませんので、おそらくは「安全」なのだろうと思います。
…まあ本当は英語なりソースコードなりをしっかりと読み込めば、こういう憶測や伝聞形式にまみれた表現で書かなくてもいいのでしょうが、それだけの気力も能力も足りていないため、こういう文章になりました。

TraConvx-アプリと SMLE

ここまでに二度「後述」と書いています。
つまり「定期的に ATRAC デコーダの情報を収集していた」ことと「ダウンロードしてすぐ削除した」理由についてですが、これは TraConv に対する不満とx-アプリに対する不安を背景とするものです。
まず、TraConvfoo_input_oma.dll は自分で作っておいてなんですが、起動が遅く、また少し不安定です。
ただこれは、それが使用している Sony Media Library Earth(以下 SMLE)の問題が大きく、つまり、以前にも書いていますが、foobar2000 が INPUT コンポーネントに求める、少しずつデータを渡していくという方式と、SMLE(あるいは DirectX)の採用している連続的にデータを流し込んでくる(つまりストリーミング)方式との齟齬などのためであって、これはもう改善の余地はあまりないのではないかと思っています。
また、その SMLE ですが、今やこれを利用しているのはx-アプリのみであり、そしてそのx-アプリも(ソニー的に)どう見ても廃止終了の方向に向かっているとしか思えず、「今のバージョン5.1が最終版になります」と言われても、別に驚けないような状況です。
である以上、SMLE に依存している TraConv はいずれは「使えないもの」になるという確信に満ちた不安があるわけです。

TraConv2(仮称) と Media Go と atracplug.dll

そこで、Media Go です。
Media Go が以前に ATRAC 対応となった際、早速、仮想環境で試してみて、SMLE を使用していないことに気づきました。
少し調べてみるとどうやら「atracplug.dll」というものが ATRAC の処理を担当しているようで、これによって SMLE 以外の、もう一つの ATRAC 制御方法ができたことになります。
で、いつの日にか、あまりパフォーマンスが良いとは言えない TraConv にかわり、この atracplug.dll を使った「TraConv2(仮称)」や「foo_input_atrac.dll」的なものを作れたらいいなと考えていました。
ただ、DLL の利用方等を解析するのが面倒で、延ばし延ばしにしており、それで時折、「既に誰かが解析しているのでは?」と「atracplug.dll」で検索したりしていたのです。
これが「定期的に ATRAC デコーダの情報を収集していた」理由で、そしてその結果、実際に解析されていて、すでに利用もされており、それが PSP エミュレータがらみで、またこの「atracplug.dll」に依らない ATRAC デコードの計画もある、というようなことを知りました。
また、そうやって思い出したように資料を集めては、結局面倒になって「そのまま放置 → そのうち資料も削除」ということを幾度も繰り返していたため、最近では資料を集めた直後に、「でもどうせ何もやらないんでしょ?」という自嘲と共に即削除するようになっていました。
このことが「ダウンロードしてすぐ削除した」理由です。

用済み

しかし、FFmpeg に ATRAC 対応が加わった以上、もうこの「TraConv2(仮称)」計画も必要なくなり、心を煩わせているものが一つなくなったな、という気分です。
そしてまた、これによって、いまひとつ出来に満足していない foo_input_oma.dll が用済みとなるのであれば、これもまた(冒頭付近でも書きましたが)自分にとっては喜ばしいことに思えます。

TraConv 開発秘話?

せっかくの一か月ぶりの更新ですので、そもそも TraConv をなぜ作ったのか、という少し自分語り?的なものを書きますと、この TraConv は自分にとって目的物ではなく、副産物でした。
もともとは「LISMO Port を使うことに」が始まりで、W63CA という LISMO ケータイをウォークマンとして使うようになったのですが、この LISMO port(実体はx-アプリ)は、ただちょっとケータイに楽曲ファイルをコピーするだけには重すぎるのではないか、と感じていたのです。
で、この転送の仕組みを解析し、楽曲ファイルを D&D すればどんどんコピーされていき、容量がいっぱいになれば古いファイルからどんどん削除されていく「押し出し式」のシンプルな DAP 管理ソフトを作れないだろうか?と考えました。
しかし、確かデバイス名や空き容量の取得、転送先(SDカードか本体メモリか)の切り替えぐらいはできるようになったのですが、肝心のファイルの転送がどうしてもできずに断念した、という経緯があるのです。
LISMO は暗号化が必須等コピー対策にかなり力が入っていましたので、そのあたりで引っかかったのだと思います。
まあ、素人がちょっと試した程度でどうにかできるような作りのわけがない、というのは当然ではあるのですが。
ただその過程で、デコード・エンコードのやり方はわかっており、当時 FLAC(foobar2000)と ATRAC(x-アプリ)で二重管理していましたので、せめてこれが少しでも楽になるように、と作ったのが TraConv でした。
ついでに書きますと、LISMO はもともとは確か CASIO が開発を担当していたという歴史的経緯によるものか、同じく SMLE に管理が統合されてはいるものの、内部的には LISMO ケータイへの転送管理とウォークマンへのそれは完全に別系統になっています。
で、LISMO の方は暗号化転送が不明で挫折しましたが、あるいはウォークマンの方はうまくいくかもしれない、もしそうならば foobar2000iTunes とプレイリストを同期するウォークマン管理ソフトのようなものを作ってみようか、などとも考えていたのですが、その後ウォークマンAndroid 化してそういう(x-アプリでないとプレイリスト管理できない)必要性から解放され、非 Android ウォークマンはおそらくこの先ゆっくりと姿を消していくのであろう、ということを考えると、この計画も終了ということになりました。
もっとも、もともとウォークマンを購入する予定もなく、買ったところでウォークマンへの転送であればうまくいくという保障もないわけで、計画終了どころか始まりですら怪しかったのですが。

関連記事

【同じタグを付けた記事の一覧】
音楽管理 LISMO TraConv W63CA foobar2000 x-アプリ ウォークマン

スポンサーサイト

コメントの投稿

非公開コメント

最新記事
最新コメント
Amazonおまかせリンク
カテゴリ
タグクラウド
Amazonお買い得ウィジェット
カレンダー
03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
月別アーカイブ
プロフィール

電脳太助

Author:電脳太助
Website:電脳スピーチ web

RSSリンクの表示
メールフォーム

名前:
メール:
件名:
本文:

サイト内検索
Ads by Google
FC2アクセスランキング
Ads by Google
FC2拍手ランキング
ユーザータグ

音楽管理(65)
ポータブル(57)
ソフト紹介(44)
プログラミング(42)
音声技術(41)
自作ソフト(34)
サイト運営(32)
FC2(31)
ブログ(30)
iTunes(26)
Windows(25)
LISMO(24)
音声合成(23)
音声認識(22)
x-アプリ(22)
電子ブック(22)
eラーニング(20)
バックアップ(19)
語学学習(19)
foobar2000(18)
ソースコード(17)
画像管理(15)
WindowsLiveWriter(15)
C++(14)
アフィリエイト(10)
DnspTools(10)
ウォークマン(9)
fi-6130(9)
FLAC(9)
Gracenote(8)
英語音読学習計画(8)
Prolog(8)
JavaScript(8)
ベクター(8)
雑記(8)
CodeBlocks(7)
SyntaxHighlighter(7)
TraConv(7)
wxWidgets(7)
spcbght(7)
DCP-J552N(6)
W63CA(6)
MP3Gain(6)
WinRT(6)
iGoinLM(6)
VirtualBox(6)
WindowsLiveMesh(6)
英語発音矯正実験(6)
ExactAudioCopy(6)
楽器演奏(5)
Mery(5)
LAME(5)
音楽技術(5)
GalateaProject(4)
LLVM(4)
nLite(4)
MIDI(4)
ホームページ(4)
WindowsLiveSkyDrive(4)
GalateaTalk(4)
PC-98(3)
カウンター(3)
AACGain(3)
iTCDini(3)
OverCutChecker(3)
拍手(3)
PK-513L(3)
UniversalExtractor(3)
アクセスランキング(3)
ImageCompositeEditor(2)
アクセス解析(2)
OCR(2)
qtaacenc(2)
資格試験(1)
AquesTalk(1)
AquesCmdDl(1)

FC2アクセスランキング
最新トラックバック
アクセスランキング
[ジャンルランキング]
コンピュータ
112位
アクセスランキングを見る>>

[サブジャンルランキング]
ソフトウェア
11位
アクセスランキングを見る>>
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。