構成 | |
| struct | CriAtomConfigTag |
| ライブラリ初期化用コンフィグ構造体 [詳細] | |
| struct | CriAtomPerformanceInfoTag |
| パフォーマンス情報 [詳細] | |
| struct | CriAtomFormatInfoTag |
| 音声データフォーマット情報 [詳細] | |
| struct | CriAtomStreamingInfoTag |
| ストリーミング情報 [詳細] | |
マクロ定義 | |
| #define | criAtom_SetDefaultConfig(p_config) |
| CriAtomConfigへのデフォルトパラメータをセット | |
| #define | criAtom_SetUserAllocator(p_malloc_func, p_free_func, p_obj) |
| ユーザアロケータの登録 | |
型定義 | |
| typedef enum CriAtomThreadModelTag | CriAtomThreadModel |
| スレッドモデル | |
| typedef struct CriAtomConfigTag | CriAtomConfig |
| ライブラリ初期化用コンフィグ構造体 | |
| typedef void *(CRIAPI * | CriAtomMallocFunc )(void *obj, CriUint32 size) |
| メモリ確保関数 | |
| typedef void(CRIAPI * | CriAtomFreeFunc )(void *obj, void *mem) |
| メモリ解放関数 | |
| typedef void(CRIAPI * | CriAtomAudioFrameStartCbFunc )(void *obj) |
| オーディオフレーム開始コールバック関数 | |
| typedef void(CRIAPI * | CriAtomAudioFrameEndCbFunc )(void *obj) |
| オーディオフレーム終了コールバック関数 | |
| typedef enum CriAtomSoundRendererTypeTag | CriAtomSoundRendererType |
| サウンドレンダラタイプ | |
| typedef enum CriAtomSpeakerIdTag | CriAtomSpeakerId |
| スピーカーID | |
| typedef struct CriAtomPerformanceInfoTag | CriAtomPerformanceInfo |
| パフォーマンス情報 | |
| typedef enum CriAtomEncodeQualityTag | CriAtomEncodeQuality |
| エンコード品質 | |
| typedef CriUint32 | CriAtomFormat |
| フォーマット種別 | |
| typedef struct CriAtomFormatInfoTag | CriAtomFormatInfo |
| 音声データフォーマット情報 | |
| typedef enum CriAtomPcmFormatTag | CriAtomPcmFormat |
| PCMフォーマット | |
| typedef struct CriAtomStreamingInfoTag | CriAtomStreamingInfo |
| ストリーミング情報 | |
| typedef enum CriAtomVoiceStopReasonTag | CriAtomVoiceStopReason |
| ボイス停止理由 | |
関数 | |
| CriUint32 CRIAPI | criAtom_GetVersionNumber (void) |
| ライブラリバージョン番号の取得 | |
| CriSint32 CRIAPI | criAtom_CalculateWorkSize (const CriAtomConfig *config) |
| ライブラリ初期化用ワーク領域サイズの計算 | |
| void CRIAPI | criAtom_Initialize (const CriAtomConfig *config, void *work, CriSint32 work_size) |
| ライブラリの初期化 | |
| void CRIAPI | criAtom_Finalize (void) |
| ライブラリの終了 | |
| CriBool CRIAPI | criAtom_IsInitialized (void) |
| ライブラリ初期化状態の取得 | |
| CriBool CRIAPI | criAtom_IsAudioOutputActive (void) |
| オーディオ出力が有効かどうかのチェック | |
| void CRIAPI | criAtom_ExecuteMain (void) |
| マルチスレッド用サーバ処理の実行 | |
| void CRIAPI | criAtom_ExecuteAudioProcess (void) |
| ユーザーマルチスレッド用サーバ処理の実行 | |
| void CRIAPI | criAtom_SetUserMallocFunction (CriAtomMallocFunc func, void *obj) |
| メモリ確保関数の登録 | |
| void CRIAPI | criAtom_SetUserFreeFunction (CriAtomFreeFunc func, void *obj) |
| メモリ解放関数の登録 | |
| void CRIAPI | criAtom_SetAudioFrameStartCallback (CriAtomAudioFrameStartCbFunc func, void *obj) |
| オーディオフレーム開始コールバック関数の登録 | |
| void CRIAPI | criAtom_SetAudioFrameEndCallback (CriAtomAudioFrameEndCbFunc func, void *obj) |
| オーディオフレーム終了コールバック関数の登録 | |
| void CRIAPI | criAtom_Lock (void) |
| サーバ処理の割り込みを防止 | |
| void CRIAPI | criAtom_Unlock (void) |
| サーバ処理の割り込み防止を解除 | |
| void CRIAPI | criAtom_SetChannelMapping (CriSint32 nch, CriUint32 type) |
| チャンネルマッピングパターンの指定 | |
| void CRIAPI | criAtom_AttachPerformanceMonitor (void) |
| パフォーマンスモニタ機能の追加 | |
| void CRIAPI | criAtom_DetachPerformanceMonitor (void) |
| パフォーマンスモニタ機能の削除 | |
| void CRIAPI | criAtom_ResetPerformanceMonitor (void) |
| パフォーマンスモニタのリセット | |
| void CRIAPI | criAtom_GetPerformanceInfo (CriAtomPerformanceInfo *info) |
| パフォーマンス情報の取得 | |
| CriSint32 CRIAPI | criAtom_CalculateAdxBitrate (CriSint32 num_channels, CriSint32 sampling_rate) |
| ADXデータのビットレート計算 | |
| CriSint32 CRIAPI | criAtom_CalculateHcaBitrate (CriSint32 num_channels, CriSint32 sampling_rate, CriAtomEncodeQuality quality) |
| HCAデータのビットレート計算 | |
| CriSint32 CRIAPI | criAtom_CalculateHcaMxBitrate (CriSint32 num_channels, CriSint32 sampling_rate, CriAtomEncodeQuality quality) |
| HCA-MXデータのビットレート計算 | |
| CriBool CRIAPI | criAtom_GetStreamingInfo (CriAtomStreamingInfo *streaming_info) |
| ストリーミング情報の取得 | |
| CriBool CRIAPI | criAtom_SetFreeTimeBufferingFlagForDefaultDevice (CriBool flag) |
| ファイルI/Oの空き時間を使ったストリーミング読み込みを行うかどうか | |
| #define criAtom_SetDefaultConfig | ( | p_config | ) |
{\
(p_config)->thread_model = CRIATOM_THREAD_MODEL_MULTI;\
(p_config)->server_frequency = 60.0f;\
(p_config)->fs_config = NULL;\
(p_config)->context = NULL;\
(p_config)->version = CRI_ATOM_VERSION;\
(p_config)->max_players = 16;\
}
CriAtomConfigへのデフォルトパラメータをセット
| [out] | p_config | 初期化用コンフィグ構造体へのポインタ |
| #define criAtom_SetUserAllocator | ( | p_malloc_func, | |
| p_free_func, | |||
| p_obj | |||
| ) |
{\
criAtom_SetUserMallocFunction(p_malloc_func, p_obj);\
criAtom_SetUserFreeFunction(p_free_func, p_obj);\
}
ユーザアロケータの登録
| [in] | p_malloc_func | メモリ確保関数 |
| [in] | p_free_func | メモリ解放関数 |
| [in] | p_obj | ユーザ指定オブジェクト |
| typedef enum CriAtomThreadModelTag CriAtomThreadModel |
スレッドモデル
| typedef struct CriAtomConfigTag CriAtomConfig |
ライブラリ初期化用コンフィグ構造体
| typedef void*(CRIAPI * CriAtomMallocFunc)(void *obj, CriUint32 size) |
メモリ確保関数
| [in] | obj | ユーザ指定オブジェクト |
| [in] | size | 要求メモリサイズ(バイト単位) |
| typedef void(CRIAPI * CriAtomFreeFunc)(void *obj, void *mem) |
メモリ解放関数
| [in] | obj | ユーザ指定オブジェクト |
| [in] | mem | 解放するメモリアドレス |
| typedef void(CRIAPI * CriAtomAudioFrameStartCbFunc)(void *obj) |
オーディオフレーム開始コールバック関数
| [in] | obj | ユーザ指定オブジェクト |
| typedef void(CRIAPI * CriAtomAudioFrameEndCbFunc)(void *obj) |
オーディオフレーム終了コールバック関数
| [in] | obj | ユーザ指定オブジェクト |
| typedef enum CriAtomSoundRendererTypeTag CriAtomSoundRendererType |
サウンドレンダラタイプ
| typedef enum CriAtomSpeakerIdTag CriAtomSpeakerId |
スピーカーID
| typedef struct CriAtomPerformanceInfoTag CriAtomPerformanceInfo |
パフォーマンス情報
| typedef enum CriAtomEncodeQualityTag CriAtomEncodeQuality |
エンコード品質
| typedef CriUint32 CriAtomFormat |
フォーマット種別
| typedef struct CriAtomFormatInfoTag CriAtomFormatInfo |
音声データフォーマット情報
| typedef enum CriAtomPcmFormatTag CriAtomPcmFormat |
| typedef struct CriAtomStreamingInfoTag CriAtomStreamingInfo |
| typedef enum CriAtomVoiceStopReasonTag CriAtomVoiceStopReason |
ボイス停止理由
スレッドモデル
| CRIATOM_THREAD_MODEL_MULTI |
マルチスレッド
|
| CRIATOM_THREAD_MODEL_MULTI_USER_DRIVEN |
マルチスレッド(ユーザ駆動式)
|
| CRIATOM_THREAD_MODEL_USER_MULTI |
ユーザマルチスレッド
|
| CRIATOM_THREAD_MODEL_SINGLE |
シングルスレッド
|
サウンドレンダラタイプ
| enum CriAtomSpeakerIdTag |
スピーカーID
エンコード品質
| enum CriAtomPcmFormatTag |
ボイス停止理由
| CriUint32 CRIAPI criAtom_GetVersionNumber | ( | void | ) |
ライブラリバージョン番号の取得
:
// ライブラリとヘッダの整合性をチェック
assert(CRI_ATOM_VERSION == criAtom_GetVersionNumber());
:
| CriSint32 CRIAPI criAtom_CalculateWorkSize | ( | const CriAtomConfig * | config | ) |
ライブラリ初期化用ワーク領域サイズの計算
| [in] | config | 初期化用コンフィグ構造体 |
| 0以上 | 正常に処理が完了 |
| -1 | エラーが発生 |
| void CRIAPI criAtom_Initialize | ( | const CriAtomConfig * | config, |
| void * | work, | ||
| CriSint32 | work_size | ||
| ) |
ライブラリの初期化
| [in] | config | 初期化用コンフィグ構造体 |
| [in] | work | ワーク領域 |
| [in] | work_size | ワーク領域サイズ |
// 独自のメモリ確保関数 void *user_malloc(void *obj, CriUint32 size) { void *mem; // メモリの確保 mem = malloc(size); return (mem); } // 独自のメモリ解放関数を用意 void user_free(void *obj, void *mem) { // メモリの解放 free(mem); return; } main() { CriAtomConfig config; // ライブラリ初期化用コンフィグ構造体 : // 独自のメモリ確保関数を登録 criAtom_SetUserMallocFunction(user_malloc, NULL); // 独自のメモリ解放関数を登録 criAtom_SetUserFreeFunction(user_free, NULL); // ライブラリ初期化用コンフィグ構造体にデフォルト値をセット criAtom_SetDefaultConfig(&config); // ライブラリの初期化 // ワーク領域にはNULLと0を指定する。 // →必要なメモリは、登録したメモリ確保関数を使って確保される。 criAtom_Initialize(&config, NULL, 0); : // アプリケーションのメイン処理 : // アプリケーションを終了する際に終了処理を行う // →初期化時に確保されたメモリは、登録したメモリ解放関数を使って解放される。 criAtom_Finalize(); : }
main()
{
CriAtomConfig config; // ライブラリ初期化用コンフィグ構造体
void *work; // ワーク領域アドレス
CriSint32 work_size; // ワーク領域サイズ
:
// ライブラリ初期化用コンフィグ構造体にデフォルト値をセット
criAtom_SetDefaultConfig(&config);
// ライブラリの初期化に必要なワーク領域のサイズを計算
work_size = criAtom_CalculateWorkSize(&config);
// ワーク領域用にメモリを確保
work = malloc((size_t)work_size);
// ライブラリの初期化
// →確保済みのワーク領域を指定する。
criAtom_Initialize(&config, NULL, 0);
:
// アプリケーションのメイン処理
// →この間、確保したメモリは保持し続ける。
:
// アプリケーションを終了する際に終了処理を行う
criAtom_Finalize();
// 必要なくなったワーク領域を解放する
free(work);
:
}
| void CRIAPI criAtom_Finalize | ( | void | ) |
| CriBool CRIAPI criAtom_IsInitialized | ( | void | ) |
ライブラリ初期化状態の取得
| CRI_FALSE | 未初期化状態 |
| CRI_TRUE | 初期化済み |
| CriBool CRIAPI criAtom_IsAudioOutputActive | ( | void | ) |
オーディオ出力が有効かどうかのチェック
| CRI_TRUE | 有効 |
| CRI_FALSE | 無効 |
| void CRIAPI criAtom_ExecuteMain | ( | void | ) |
マルチスレッド用サーバ処理の実行
| void CRIAPI criAtom_ExecuteAudioProcess | ( | void | ) |
ユーザーマルチスレッド用サーバ処理の実行
ファイルの読み込み管理や、データのデコード、音声の出力等、 音声再生に必要な処理のほぼ全てが本関数内で実行されます。
そのため、ライブラリ初期化時に指定したサーバ処理の実行頻度( CriAtomConfig 構造体の server_frequency )を下回る頻度で本関数を実行した場合、音切れ等の問題が発生する可能性 があります。
また、本関数は::criAtom_ExecuteMain 関数と異なり、CRI File Systemライブラリのサーバ処理を実行しません。
アプリケーションが必要なサーバ処理を正しい順序で実行してください。
| void CRIAPI criAtom_SetUserMallocFunction | ( | CriAtomMallocFunc | func, |
| void * | obj | ||
| ) |
メモリ確保関数の登録
| [in] | func | メモリ確保関数 |
| [in] | obj | ユーザ指定オブジェクト |
// 独自のメモリ確保関数を用意 void *user_malloc(void *obj, CriUint32 size) { void *mem; // メモリの確保 mem = malloc(size); return (mem); } main() { : // メモリ確保関数の登録 criAtom_SetUserMallocFunction(user_malloc, NULL); : }
| void CRIAPI criAtom_SetUserFreeFunction | ( | CriAtomFreeFunc | func, |
| void * | obj | ||
| ) |
メモリ解放関数の登録
| [in] | func | メモリ解放関数 |
| [in] | obj | ユーザ指定オブジェクト |
// 独自のメモリ解放関数を用意 void user_free(void *obj, void *mem) { // メモリの解放 free(mem); return; } main() { : // メモリ解放関数の登録 criAtom_SetUserFreeFunction(user_free, NULL); : }
| void CRIAPI criAtom_SetAudioFrameStartCallback | ( | CriAtomAudioFrameStartCbFunc | func, |
| void * | obj | ||
| ) |
オーディオフレーム開始コールバック関数の登録
| [in] | func | オーディオフレーム開始コールバック関数 |
| [in] | obj | ユーザ指定オブジェクト |
| void CRIAPI criAtom_SetAudioFrameEndCallback | ( | CriAtomAudioFrameEndCbFunc | func, |
| void * | obj | ||
| ) |
オーディオフレーム終了コールバック関数の登録
| [in] | func | オーディオフレーム終了コールバック関数 |
| [in] | obj | ユーザ指定オブジェクト |
| void CRIAPI criAtom_Lock | ( | void | ) |
サーバ処理の割り込みを防止
: // サーバ処理の割り込みを防止 criAtom_Lock(); // 複数の音声を同時に再生開始 criAtomPlayer_Start(player1); criAtomPlayer_Start(player2); criAtomPlayer_Start(player3); criAtomPlayer_Start(player4); // サーバ処理の割り込み防止を解除 criAtom_Unlock(); :
| void CRIAPI criAtom_Unlock | ( | void | ) |
| void CRIAPI criAtom_SetChannelMapping | ( | CriSint32 | nch, |
| CriUint32 | type | ||
| ) |
チャンネルマッピングパターンの指定
| [in] | nch | マッピングパターンを変更するチャンネル数 |
| [in] | type | マッピングパターン |
| void CRIAPI criAtom_AttachPerformanceMonitor | ( | void | ) |
パフォーマンスモニタ機能の追加
// パフォーマンス情報取得用構造体 CriAtomPerformanceInfo info; // ライブラリの初期化 criAtom_Initialize(…); // パフォーマンスモニタ機能の追加 criAtom_AttachPerformanceMonitor(); // パフォーマンスモニタのリセット criAtom_ResetPerformanceMonitor(); // パフォーマンス計測区間 … // パフォーマンス情報の取得 criAtom_GetPerformanceInfo(&info); // 計測結果の表示 printf( "Max CPU Load : %d (us)\n" \ "Average CPU Load : %d (us)\n" \ "Max Server Interval : %d (us)\n" \ "Average Server Interval : %d (us)\n", info.max_server_time, info.average_server_time, info.max_server_interval, info.average_server_interval );
| void CRIAPI criAtom_DetachPerformanceMonitor | ( | void | ) |
パフォーマンスモニタ機能の削除
| void CRIAPI criAtom_ResetPerformanceMonitor | ( | void | ) |
パフォーマンスモニタのリセット
| void CRIAPI criAtom_GetPerformanceInfo | ( | CriAtomPerformanceInfo * | info | ) |
パフォーマンス情報の取得
| CriSint32 CRIAPI criAtom_CalculateAdxBitrate | ( | CriSint32 | num_channels, |
| CriSint32 | sampling_rate | ||
| ) |
ADXデータのビットレート計算
| [in] | num_channels | データのチャンネル数 |
| [in] | sampling_rate | データのサンプリングレート |
| CriSint32 CRIAPI criAtom_CalculateHcaBitrate | ( | CriSint32 | num_channels, |
| CriSint32 | sampling_rate, | ||
| CriAtomEncodeQuality | quality | ||
| ) |
HCAデータのビットレート計算
| [in] | num_channels | データのチャンネル数 |
| [in] | sampling_rate | データのサンプリングレート |
| [in] | quality | データのエンコード品質 |
| CriSint32 CRIAPI criAtom_CalculateHcaMxBitrate | ( | CriSint32 | num_channels, |
| CriSint32 | sampling_rate, | ||
| CriAtomEncodeQuality | quality | ||
| ) |
HCA-MXデータのビットレート計算
| [in] | num_channels | データのチャンネル数 |
| [in] | sampling_rate | データのサンプリングレート |
| [in] | quality | データのエンコード品質 |
| CriBool CRIAPI criAtom_GetStreamingInfo | ( | CriAtomStreamingInfo * | streaming_info | ) |
ストリーミング情報の取得
| [out] | streaming_info | ストリーミング情報保存先のポインタ |
| CRI_TRUE | 値を取得できた |
| CRI_FALSE | 値を取得できなかった |
| CriBool CRIAPI criAtom_SetFreeTimeBufferingFlagForDefaultDevice | ( | CriBool | flag | ) |
ファイルI/Oの空き時間を使ったストリーミング読み込みを行うかどうか
| [in] | flag | CRI_TRUE=ファイルI/Oの空き時間を使って読み込む |
| CRI_TRUE | 正常に処理が完了 |
| CRI_FALSE | エラーが発生 |