2007年12月27日

libttaをNDS向けにポーティングする

とりあえず最低限のフォーマットが鳴ったぞうれしいなと浮かれているワケですが、興奮が冷めないうちにいろいろメモを残そうかと思います。
TTAは、The True Audioという名前の音楽フォーマットです。詳しい解説は、wikipediaに任せます。
公式サイトは、true-audio.comです。各種ファイルはここから取ってきます。
wikipediaの記事にもあるのですが、FLACやMonkey's Audioと比較されていますが、TTAはビルドが楽です。
(試していないので)Monkey's Audioはさておき、FLACは通せませんでしたorz
ライブラリの規模も小さく、扱いやすい印象を受けました。
公式サイトのファイル置き場から、
"Download TTA library version 1.2 for hardware players (Source code)"(ttalib-hwplayer-1.2.tgz)
をダウンロードします。
展開したファイルを、以下のような配置にします。

ルートである./libttaには、makefileがあります。
# devkitProのサンプルにあるexamples/nds/templates/arm9libを使ってもいいようです
これをmakeすれば、もれなく完成なわけですが、少しだけ追記する箇所があります。
int check_tta_file( tta_info *info, unsigned int data_offset )
{
(略)
    // check for player supported formats
    if (ttahdr.AudioFormat != WAVE_FORMAT_PCM ||
        ttahdr.NumChannels > MAX_NCH ||
        ttahdr.BitsPerSample > MAX_BPS ||(
        ttahdr.SampleRate != 16000 &&
        ttahdr.SampleRate != 16384 && // NDS Native
        ttahdr.SampleRate != 22050 &&
        ttahdr.SampleRate != 24000 &&
        ttahdr.SampleRate != 32000 &&
        ttahdr.SampleRate != 32768 && // NDS Native
        ttahdr.SampleRate != 44100 &&
        ttahdr.SampleRate != 48000 &&
        ttahdr.SampleRate != 64000 &&
        ttahdr.SampleRate != 88200 &&
        ttahdr.SampleRate != 96000)) {
        info->CALLBACK.close_func (info->HANDLE);
        info->STATE = FORMAT_ERROR;
        return -1;
    }
太字の部分を追記します。
この周波数(16384Hzと32768Hz)は、NDSで再生するうえで相性のよい数字のようです。
と、言うことで、エラーにしないようにします。
makeが通った後は、次のディレクトリをdevkitproのルートウィンドウにコピーします。
./libtta
./libtta/include
./libtta/lib
devkitproのルートウィンドウがD:/devkiProだとすると、ヘッダファイルがあるところは、"D:/devkitPro/libtta/include"になります。
ライブラリ構築手順は以上です。

0 件のコメント: