HCA-MXコーデックの再生について
HCA-MXコーデックはADX2独自の音声圧縮のひとつで、たくさんの圧縮音声を同時に再生してもCPU負荷が低く抑えられるコーデックです。
(コーデックの特徴や比較については「 音声圧縮コーデック 」を参照してください。)
ただし、ADX2のライブラリをデフォルト設定で初期化しただけではHCA-MX再生機能は有効になりません。
本章では HCA-MX コーデックを再生するための初期化処理について説明します。

HCA-MX再生のためのライブラリ初期化

HCA-MXコーデックを再生するためには次の初期化処理が必要です。
  • Atomライブラリ初期化時にHCA-MXのサンプリングレートをデータと一致する数値に指定する。
  • HCA-MXコーデック用のボイスプールを作成する。
HCA-MXのサンプリングレート指定
Atomライブラリ初期化時のパラメータ構造体に、HCA-MXのサンプリングレートを指定します。
ストリーミング再生が増えても大丈夫なように読み込みのためのパラメータも一緒に調整します。
このサンプルコードではPC用に初期化していますが、他機種でも同様です。
/* ADX2ライブラリの初期化 */
/* CRI File System の初期化パラメータ */
CriFsConfig fs_config;
criFs_SetDefaultConfig(&fs_config);
fs_config.num_loaders = 32;             /* ストリーミングボイスの最大数+1以上 */
/* CRI Atom の初期化パラメータ */
CriAtomExConfig_WASAPI atom_wasapi_config;
criAtomEx_SetDefaultConfig_WASAPI(&atom_wasapi_config);
atom_wasapi_config.atom_ex.fs_config = &fs_config;
atom_wasapi_config.hca_mx.output_sampling_rate = 32000;     /* HCA-MXのサンプリングレート */
criAtomEx_Initialize_WASAPI(&atom_wasapi_config, NULL, 0);


HCA-MXのサンプリングレートは、CRI Atom Craftのプロジェクトファイルで設定した値と同じにします。
atomcraft_hcamx_srate.PNG
HCA-MX用ボイスプールの作成
HCA-MXコーデックを再生するためには、専用のボイスプールを作成する必要があります。
スタンダードボイスプールとは別に作成してください。
(※HCA-MXコーデックのみ使用する場合はスタンダードボイスプールの作成は不要です。)
/* HCA-MX再生用のボイスプール作成 */
CriAtomExHcaMxVoicePoolConfig hcamx_config;
criAtomExVoicePool_SetDefaultConfigForHcaMxVoicePool(&hcamx_config);
hcamx_config.num_voices                         = 8;                /* ボイスプールのリソース数 */
hcamx_config.player_config.streaming_flag       = CRI_TRUE;         /* ストリーム再生有効にしておく */
hcamx_config.player_config.max_sampling_rate    = 32000;            /* HCA-MXのサンプリングレート */
g_hcamx_voice_pool = criAtomExVoicePool_AllocateHcaMxVoicePool(&hcamx_config, NULL, 0);


ボイスプールを複数作る場合の注意
HCA-MXボイスプールとスダンだーどボイスプールのように、複数のボイスプールを作成する場合の注意点を説明します。
ボイスプールのストリーム再生を有効にすると、そのボイスプールは最大ボイス数と同じだけの読み込みハンドルを確保します。
ADX2ライブラリ全体での最大読み込み数は CRI Atom ライブラリの初期化時にパラメータとして指定しますので、複数ボイスプールを作ると気づかないうちに最大読み込み数が不足する場合があります。
この場合、ライブラリ初期化時に次のようなメッセージのエラーコールバックが発生します。
E2008070931:Can not allocate loader handle. (Increase num_loaders of CriFsConfig.)
ライブラリ初期化のサンプルコードを参考にして、最大読み込み数を多めに設定しするように修正してください。
具体的には、ストリーム再生するボイスプールの最大ボイス数の合計+1以上であれば大丈夫です。

CRI Middleware logo Copyright (c) 2012-2018 CRI Middleware Co., Ltd. CRI ADX2 LE マニュアル (for Cocos2d-x) SDKVer.2.10版