09/08/17 17:45:20 AmW/62Bq
それ構造的にVAG。これについては前スレ半ばあたりにも書いたんだけどね。
あと、PS、PS2の場合、音声、シーケンス関連のデータは本体(*B、*BD)とヘッダ(*H、*HD)を分ける形式が標準らしい。
----------------------------------------------------
16Bytes/1ブロックとして処理。
+0は下4bitがshift_factor、上4bitがpredict_nrというパラメータ。
+1はflagsとなっていて、bITmASTER氏のソースでは0x07の場合に処理を終了するという仕様になってる。
+2~+fがサンプルで、4bit/sampleとなっている。(14Bytesで28サンプル)
まず、スケーリング。
サンプルデータ(4bit)を取り出し、12bit分の左シフト。
符号付き(signed)として扱うため、場合により符号拡張の処理を行う。
その後、shift_factor 分の右シフトを行う(最大15bit分)。結果は倍精度値としてsamples[i]へ。
これを1ブロック分行う。
次にFIRフィルタ処理。
先ほどのsamples[i]に対して行う。うまく説明できない(説明できるほどよく知らない)から処理内容はソース読んだほうがいいくらい。
変数の意味合いは、
f[][] : FIRフィルタの係数。ADXの場合は1組しかないが、これの場合は5組。
s_1、s_2 :それぞれ1サンプル前、2サンプル前のデコード結果。
predict_nr : 先ほど取り出した値の一つ。FIRフィルタにどのパラメータを適用するかがこれで決まる。
--------------------------------------------------