注意書き
このページに書かれている内容については一切の保証はありませんし、私を含めて誰もなんにも責任を負いません。その点よろしくです。
master@kani.com / 青木 康雄
Sun Micosystems,Inc.と、そのエンジニアの皆さん、ありがとう。
RICOH DC-1/2 J6S Decoder.
Sun Micosystems,Inc. から public-domain として G.7xx 音声フォーマット相互変換ライブラリの ANSI-C ソースコードがリリースされております。変換可能なフォーマットの中に、G.721 / 32k / 4 bit ADPCM も含まれておりまして、これを利用することにより、RICOH DC-1/2 で採用されている J6S 音声データのデコードが可能です。
ここでは、Sun Micosystems. からリリースされている G.7xx 音声フォーマット相互変換ライブラリを使って、RICOH DC-1/2 の J6S 音声データのデコードを可能にするためのサンプルコードを紹介します。作者は私です。なお、私は Macintosh 上で開発してます。開発環境を参考までに・・・
PowerMacintosh 8100/100AV
MW / CW 9 / PPC and 68K / C, C++
サンプルデコーダーの仕様
(以下に紹介するコードで出来た実行コードのこと)
RICOH DC-1/2 で録音された J6S ファイルを標準入力から読み込み、8 bit PCM にデコードして標準出力に書きだす。デコード側の 8 bit PCM は、μ則(デフォルト)、A則、リニアの3つをサポートする。
いるもの
● 開発環境一式
● Sun Micosystems,Inc. G711_G721_G723 変換ライブラリ
前のページにあるヤツです。
● 私の作ったサンプルCコード「decodej6s.c」
decodej6s.c.hqx (7,838 byte)
decodej6s.c (6,026 byte)
これらがそろったら、「G711_G721_G723 変換ライブラリ」の中のソース群のなかの、encode.c と decode.c をハズしまして、その他の以下のファイル
g711.c
g721.c
g723_24.c
g723_40.c
g72x.c
(g72x.h)
と、decodej6s.c をソースファイルとしてコンパイルします。出来た実行コードが J6S 専用のデコーダーです。ほんとは makefile も付ければ親切ってもんですが、私の開発環境に makefile はないし、書き方も忘れたのでごめんです。
現状のソースコードは、Macintosh 用になってます。decodej6s.c の上のほうで、#define がいくつかありますので適当に変えてください。
DSC ヘッダを読むところで、long を使うところがあるのですが、一応リトルエンディアン処理を入れてみましたが動かしてません。Macintosh はビッグエンディアンなので不要なのですが、必要なかたは注意してください。
「G711_G721_G723 変換ライブラリ」気がついた点
Macintosh だけかもしれませんが、違うかもしれません。
68K 用のコードをコンパイルする時、4 byte int でコンパイルしないと音が出ませんでした。2 byte int 処理系では注意が必要です。
参考までに、このコードのデコード時間。私のマシン(601 / 100MHz)ですと、10秒間の J6S のデコードに、2秒ぐらい(アバウトな腕時計測定)。MW / CW 9 で、実行コード最適化してない状態です。フルオプチマイズすれば、1秒切ると思います。
私は Macintosh 上でリアルタイム再生させて遊んでますが、その時は、この関数の中の ReadIn, WriteIn をコールバックにして、WriteIn で 1024 バイトたまったらサウンドマネージャーに非同期で投げる・・・という方法をとってます。ご参考まで。
decodej6s で出来た PCM どーやれば鳴るの?
8 bit (u-law) PCM ってのは極めて汎用的なものなので、各プラットフォームに存在する音声関係のツールでほとんど鳴らすことが可能だと思います。
● Macintosh ですと、SoundMachine, SoundApp などで鳴ります。
● UNIX ですと、BSD/OS についてる sox ってやつで鳴るそうです。
(Jun-ichiro Itoh <itojun@csl.sony.co.jp> さん実験ありがとう)
● Windows は知りません。
私は個人では、これを AIFF にしてファイル化しております。decodej6s で吐き出されたファイルにヘッダを付けるだけで AIFF になります。これだと Macintosh な人は、QuickTime でそのまま鳴ります(ファイルダブルクリック)。Wave も同じようなもののようです。また、現在、リコーのデジカメを強力にサポートする各種アプリを作ってまして、そのうちリリース予定ですので Macintosh な人はもうちょっとお待ちくだされば、私が作って公開します。シェアウエアかもしれませんけど。
パワー溢れるデベロッパの皆さんは、DC-1/2 をより便利なものにするべく、このコードをパクるなり、自分で考えるなりしてどんどんツールを作りましょう。
RICOH DC-1/2 の画像・音声ファイルについてへ