構成 | マクロ定義 | 型定義 | 列挙型 | 関数
CriAtomPlayer API

構成

struct  CriAtomStandardPlayerConfigTag
struct  CriAtomAdxPlayerConfigTag
struct  CriAtomHcaPlayerConfigTag
struct  CriAtomHcaMxPlayerConfigTag
struct  CriAtomWavePlayerConfigTag
struct  CriAtomAiffPlayerConfigTag
struct  CriAtomRawPcmPlayerConfigTag
struct  CriAtomStreamingCacheConfigTag
 ストリーミングキャッシュ作成用コンフィグ構造体 [詳細]

マクロ定義

#define CRIATOMPLAYER_NO_LOOP_LIMITATION   (-1)
 ループ回数制御用
#define criAtomPlayer_SetDefaultConfigForStandardPlayer(p_config)
 CriAtomStandardPlayerConfigへのデフォルトパラメータのセット
#define criAtomPlayer_SetDefaultConfigForAdxPlayer(p_config)
 CriAtomAdxPlayerConfigへのデフォルトパラメータのセット
#define criAtomPlayer_SetDefaultConfigForHcaPlayer(p_config)
 CriAtomHcaPlayerConfigへのデフォルトパラメータのセット
#define criAtomPlayer_SetDefaultConfigForHcaMxPlayer(p_config)
 CriAtomHcaMxPlayerConfigへのデフォルトパラメータのセット
#define criAtomPlayer_SetDefaultConfigForWavePlayer(p_config)
 CriAtomWavePlayerConfigへのデフォルトパラメータのセット
#define criAtomPlayer_SetDefaultConfigForAiffPlayer(p_config)
 CriAtomAiffPlayerConfigへのデフォルトパラメータのセット
#define criAtomPlayer_SetDefaultConfigForRawPcmPlayer(p_config)
 CriAtomRawPcmPlayerConfigへのデフォルトパラメータのセット

型定義

typedef enum CriAtomParameterIdTag CriAtomParameterId
 パラメータID
typedef struct
CriAtomStandardPlayerConfigTag 
CriAtomStandardPlayerConfig
typedef struct
CriAtomAdxPlayerConfigTag 
CriAtomAdxPlayerConfig
typedef struct
CriAtomHcaPlayerConfigTag 
CriAtomHcaPlayerConfig
typedef struct
CriAtomHcaMxPlayerConfigTag 
CriAtomHcaMxPlayerConfig
typedef struct
CriAtomWavePlayerConfigTag 
CriAtomWavePlayerConfig
typedef struct
CriAtomAiffPlayerConfigTag 
CriAtomAiffPlayerConfig
typedef struct
CriAtomRawPcmPlayerConfigTag 
CriAtomRawPcmPlayerConfig
typedef enum CriAtomPlayerStatusTag CriAtomPlayerStatus
 再生ステータス
typedef struct CriAtomPlayerTag * CriAtomPlayerHn
 Atomプレーヤハンドル
typedef void(CRIAPI * CriAtomPlayerDataRequestCbFunc )(void *obj, CriAtomPlayerHn player)
 データ要求コールバック関数
typedef void(CRIAPI * CriAtomPlayerStatusChangeCbFunc )(void *obj, CriAtomPlayerHn player)
 ステータス変更コールバック関数
typedef void(CRIAPI * CriAtomPlayerParameterChangeCbFunc )(void *obj, CriAtomPlayerHn player, CriAtomParameterId id, CriFloat32 value)
 パラメータ変更コールバック関数
typedef void(CRIAPI * CriAtomPlayerFilterCbFunc )(void *obj, CriAtomPcmFormat format, CriSint32 num_channels, CriSint32 num_samples, void *data[])
 波形フィルタコールバック関数
typedef void(CRIAPI * CriAtomPlayerLoadRequestCbFunc )(void *obj, CriFsBinderHn binder, const CriChar8 *path, CriSint64 offset, CriSint64 length)
 ロード要求コールバック関数
typedef struct
CriAtomStreamingCacheConfigTag 
CriAtomStreamingCacheConfig
 ストリーミングキャッシュ作成用コンフィグ構造体

列挙型

enum  CriAtomParameterIdTag { CRIATOM_PARAMETER_ID_VOLUME = 0, CRIATOM_PARAMETER_ID_FREQUENCY_RATIO = 1 }
 パラメータID [詳細]
enum  CriAtomPlayerStatusTag {
  CRIATOMPLAYER_STATUS_STOP = 0, CRIATOMPLAYER_STATUS_PREP = 1, CRIATOMPLAYER_STATUS_PLAYING = 2, CRIATOMPLAYER_STATUS_PLAYEND = 3,
  CRIATOMPLAYER_STATUS_ERROR = 4
}
 再生ステータス [詳細]

関数

CriSint32 CRIAPI criAtomPlayer_CalculateWorkSizeForStandardPlayer (const CriAtomStandardPlayerConfig *config)
 標準プレーヤ作成用ワーク領域サイズの計算
CriAtomPlayerHn CRIAPI criAtomPlayer_CreateStandardPlayer (const CriAtomStandardPlayerConfig *config, void *work, CriSint32 work_size)
 標準プレーヤの作成
CriSint32 CRIAPI criAtomPlayer_CalculateWorkSizeForAdxPlayer (const CriAtomAdxPlayerConfig *config)
 ADXプレーヤ作成用ワーク領域サイズの計算
CriAtomPlayerHn CRIAPI criAtomPlayer_CreateAdxPlayer (const CriAtomAdxPlayerConfig *config, void *work, CriSint32 work_size)
 ADXプレーヤの作成
CriSint32 CRIAPI criAtomPlayer_CalculateWorkSizeForHcaPlayer (const CriAtomHcaPlayerConfig *config)
 HCAプレーヤ作成用ワーク領域サイズの計算
CriAtomPlayerHn CRIAPI criAtomPlayer_CreateHcaPlayer (const CriAtomHcaPlayerConfig *config, void *work, CriSint32 work_size)
 HCAプレーヤの作成
CriSint32 CRIAPI criAtomPlayer_CalculateWorkSizeForHcaMxPlayer (const CriAtomHcaMxPlayerConfig *config)
 HCA-MXプレーヤ作成用ワーク領域サイズの計算
CriAtomPlayerHn CRIAPI criAtomPlayer_CreateHcaMxPlayer (const CriAtomHcaMxPlayerConfig *config, void *work, CriSint32 work_size)
 HCA-MXプレーヤの作成
CriSint32 CRIAPI criAtomPlayer_CalculateWorkSizeForWavePlayer (const CriAtomWavePlayerConfig *config)
 WAVEプレーヤ作成用ワーク領域サイズの計算
CriAtomPlayerHn CRIAPI criAtomPlayer_CreateWavePlayer (const CriAtomWavePlayerConfig *config, void *work, CriSint32 work_size)
 WAVEプレーヤの作成
CriSint32 CRIAPI criAtomPlayer_CalculateWorkSizeForAiffPlayer (const CriAtomAiffPlayerConfig *config)
 AIFFプレーヤ作成用ワーク領域サイズの計算
CriAtomPlayerHn CRIAPI criAtomPlayer_CreateAiffPlayer (const CriAtomAiffPlayerConfig *config, void *work, CriSint32 work_size)
 AIFFプレーヤの作成
CriSint32 CRIAPI criAtomPlayer_CalculateWorkSizeForRawPcmPlayer (const CriAtomRawPcmPlayerConfig *config)
 RawPCMプレーヤ作成用ワーク領域サイズの計算
CriAtomPlayerHn CRIAPI criAtomPlayer_CreateRawPcmPlayer (const CriAtomRawPcmPlayerConfig *config, void *work, CriSint32 work_size)
 RawPCMプレーヤの作成
void CRIAPI criAtomPlayer_Destroy (CriAtomPlayerHn player)
 Atomプレーヤの破棄
void CRIAPI criAtomPlayer_SetData (CriAtomPlayerHn player, void *buffer, CriSint32 buffer_size)
 音声データのセット(オンメモリデータの指定)
void CRIAPI criAtomPlayer_SetFile (CriAtomPlayerHn player, CriFsBinderHn binder, const CriChar8 *path)
 音声データのセット(ファイルの指定)
void CRIAPI criAtomPlayer_SetContentId (CriAtomPlayerHn player, CriFsBinderHn binder, CriSint32 id)
 音声データのセット(CPKコンテンツIDの指定)
void CRIAPI criAtomPlayer_SetWaveId (CriAtomPlayerHn player, CriAtomAwbHn awb, CriSint32 id)
 音声データのセット(音声データIDの指定)
void CRIAPI criAtomPlayer_SetPreviousDataAgain (CriAtomPlayerHn player)
 同一音声データの再セット
void CRIAPI criAtomPlayer_DeferCallback (CriAtomPlayerHn player)
 コールバック関数の再実行要求
void CRIAPI criAtomPlayer_Start (CriAtomPlayerHn player)
 再生の開始
void CRIAPI criAtomPlayer_Stop (CriAtomPlayerHn player)
 再生の停止
void CRIAPI criAtomPlayer_Pause (CriAtomPlayerHn player, CriBool flag)
 再生のポーズ/ポーズ解除
CriBool CRIAPI criAtomPlayer_IsPaused (CriAtomPlayerHn player)
 ポーズされているかどうかのチェック
CriAtomPlayerStatus CRIAPI criAtomPlayer_GetStatus (CriAtomPlayerHn player)
 ステータスの取得
CriSint32 CRIAPI criAtomPlayer_GetNumChannels (CriAtomPlayerHn player)
 チャンネル数の取得
CriBool CRIAPI criAtomPlayer_GetNumPlayedSamples (CriAtomPlayerHn player, CriSint64 *num_played, CriSint32 *sampling_rate)
 再生済みサンプル数の取得
CriSint64 CRIAPI criAtomPlayer_GetDecodedDataSize (CriAtomPlayerHn player)
 デコードデータサイズの取得
CriSint64 CRIAPI criAtomPlayer_GetNumDecodedSamples (CriAtomPlayerHn player)
 デコードサンプル数の取得
CriSint64 CRIAPI criAtomPlayer_GetTime (CriAtomPlayerHn player)
 再生時刻の取得
CriBool CRIAPI criAtomPlayer_GetFormatInfo (CriAtomPlayerHn player, CriAtomFormatInfo *info)
 再生音声のフォーマット情報の取得
CriSint32 CRIAPI criAtomPlayer_GetInputBufferRemainSize (CriAtomPlayerHn player)
 入力バッファ内データ残量の取得
CriSint32 CRIAPI criAtomPlayer_GetOutputBufferRemainSamples (CriAtomPlayerHn player)
 出力バッファ内データ残量の取得
void CRIAPI criAtomPlayer_SetStartTime (CriAtomPlayerHn player, CriSint64 start_time_ms)
 再生開始位置の指定
void CRIAPI criAtomPlayer_SetVolume (CriAtomPlayerHn player, CriFloat32 vol)
 ボリュームの指定
CriFloat32 CRIAPI criAtomPlayer_GetVolume (CriAtomPlayerHn player)
 ボリュームの指定
void CRIAPI criAtomPlayer_SetChannelVolume (CriAtomPlayerHn player, CriSint32 ch, CriFloat32 vol)
 チャンネル単位のボリューム指定
void CRIAPI criAtomPlayer_SetSendLevel (CriAtomPlayerHn player, CriSint32 ch, CriAtomSpeakerId spk, CriFloat32 level)
 センドレベルの設定
void CRIAPI criAtomPlayer_ResetSendLevel (CriAtomPlayerHn player)
 センドレベルのリセット
void CRIAPI criAtomPlayer_SetPanAdx1Compatible (CriAtomPlayerHn player, CriSint32 ch, CriFloat32 pan)
 パンの設定
void CRIAPI criAtomPlayer_ResetPan (CriAtomPlayerHn player)
 パンのリセット
void CRIAPI criAtomPlayer_SetFrequencyRatio (CriAtomPlayerHn player, CriFloat32 ratio)
 周波数調整比の設定
void CRIAPI criAtomPlayer_SetMaxFrequencyRatio (CriAtomPlayerHn player, CriFloat32 ratio)
 最大周波数調整比の設定
void CRIAPI criAtomPlayer_LimitLoopCount (CriAtomPlayerHn player, CriSint32 count)
 ループ回数の制限
void CRIAPI criAtomPlayer_SetHcaMxMixerId (CriAtomPlayerHn player, CriSint32 mixer_id)
 HCA-MXデコード先ミキサIDの指定
void CRIAPI criAtomPlayer_SetAsrRackId (CriAtomPlayerHn player, CriSint32 rack_id)
 ASRラックIDの指定
void CRIAPI criAtomPlayer_SetRawPcmFormat (CriAtomPlayerHn player, CriAtomPcmFormat pcm_format, CriSint32 num_channels, CriSint32 sampling_rate)
 RawPCMフォーマットの指定
void CRIAPI criAtomPlayer_SetDataRequestCallback (CriAtomPlayerHn player, CriAtomPlayerDataRequestCbFunc func, void *obj)
 データ要求コールバック関数の登録
void CRIAPI criAtomPlayer_SetStatusChangeCallback (CriAtomPlayerHn player, CriAtomPlayerStatusChangeCbFunc func, void *obj)
 ステータス変更コールバック関数の登録
void CRIAPI criAtomPlayer_SetParameterChangeCallback (CriAtomPlayerHn player, CriAtomPlayerParameterChangeCbFunc func, void *obj)
 パラメータ変更コールバック関数の登録
void CRIAPI criAtomPlayer_SetFilterCallback (CriAtomPlayerHn player, CriAtomPlayerFilterCbFunc func, void *obj)
 波形フィルタコールバック関数の登録
void CRIAPI criAtomPlayer_SetLoadRequestCallback (CriAtomPlayerHn player, CriAtomPlayerLoadRequestCbFunc func, void *obj)
 ロード要求コールバック関数の登録
void CRIAPI criAtomPlayer_SetHcaFormat (CriAtomPlayerHn player, CriSint32 num_channels, CriSint32 sampling_rate, CriSint32 bitrate)
 HCAフォーマットの指定

説明


マクロ定義

#define CRIATOMPLAYER_NO_LOOP_LIMITATION   (-1)

ループ回数制御用

説明:ループ回数制限なし
#define criAtomPlayer_SetDefaultConfigForStandardPlayer (   p_config)
値:
{\
    (p_config)->max_channels        = CRIATOM_DEFAULT_INPUT_MAX_CHANNELS;\
    (p_config)->max_sampling_rate   = CRIATOM_DEFAULT_INPUT_MAX_SAMPLING_RATE;\
    (p_config)->streaming_flag      = CRI_TRUE;\
    (p_config)->sound_renderer_type = CRIATOM_SOUND_RENDERER_DEFAULT;\
    (p_config)->decode_latency      = CRIATOM_DEFAULT_DECODE_LATENCY;\
}

CriAtomStandardPlayerConfigへのデフォルトパラメータのセット

引数:
[out]p_config標準プレーヤ作成用コンフィグ構造体へのポインタ
説明:
criAtomPlayer_CreateStandardPlayer 関数に設定するコンフィグ構造体 ( CriAtomStandardPlayerConfig )に、デフォルトの値をセットします。
参照:
CriAtomStandardPlayerConfig, criAtomPlayer_CreateStandardPlayer
#define criAtomPlayer_SetDefaultConfigForAdxPlayer (   p_config)
値:
{\
    (p_config)->max_channels        = CRIATOM_DEFAULT_INPUT_MAX_CHANNELS;\
    (p_config)->max_sampling_rate   = CRIATOM_DEFAULT_INPUT_MAX_SAMPLING_RATE;\
    (p_config)->streaming_flag      = CRI_TRUE;\
    (p_config)->sound_renderer_type = CRIATOM_SOUND_RENDERER_DEFAULT;\
    (p_config)->decode_latency      = CRIATOM_DEFAULT_DECODE_LATENCY;\
}

CriAtomAdxPlayerConfigへのデフォルトパラメータのセット

引数:
[out]p_configADXプレーヤ作成用コンフィグ構造体へのポインタ
説明:
criAtomPlayer_CreateAdxPlayer 関数に設定するコンフィグ構造体 ( CriAtomAdxPlayerConfig )に、デフォルトの値をセットします。
参照:
CriAtomAdxPlayerConfig, criAtomPlayer_CreateAdxPlayer
#define criAtomPlayer_SetDefaultConfigForHcaPlayer (   p_config)
値:
{\
    (p_config)->max_channels        = CRIATOM_DEFAULT_INPUT_MAX_CHANNELS;\
    (p_config)->max_sampling_rate   = CRIATOM_DEFAULT_INPUT_MAX_SAMPLING_RATE;\
    (p_config)->streaming_flag      = CRI_TRUE;\
    (p_config)->sound_renderer_type = CRIATOM_SOUND_RENDERER_DEFAULT;\
    (p_config)->decode_latency      = CRIATOM_DEFAULT_DECODE_LATENCY;\
}

CriAtomHcaPlayerConfigへのデフォルトパラメータのセット

引数:
[out]p_configHCAプレーヤ作成用コンフィグ構造体へのポインタ
説明:
criAtomPlayer_CreateHcaPlayer 関数に設定するコンフィグ構造体 ( CriAtomHcaPlayerConfig )に、デフォルトの値をセットします。
参照:
CriAtomHcaPlayerConfig, criAtomPlayer_CreateHcaPlayer
#define criAtomPlayer_SetDefaultConfigForHcaMxPlayer (   p_config)
値:
{\
    (p_config)->max_channels        = CRIATOM_DEFAULT_INPUT_MAX_CHANNELS;\
    (p_config)->max_sampling_rate   = CRIATOM_DEFAULT_INPUT_MAX_SAMPLING_RATE;\
    (p_config)->streaming_flag      = CRI_TRUE;\
}

CriAtomHcaMxPlayerConfigへのデフォルトパラメータのセット

引数:
[out]p_configHCA-MXプレーヤ作成用コンフィグ構造体へのポインタ
説明:
criAtomPlayer_CreateHcaMxPlayer 関数に設定するコンフィグ構造体 ( CriAtomHcaMxPlayerConfig )に、デフォルトの値をセットします。
参照:
CriAtomHcaMxPlayerConfig, criAtomPlayer_CreateHcaMxPlayer
#define criAtomPlayer_SetDefaultConfigForWavePlayer (   p_config)
値:
{\
    (p_config)->max_channels        = CRIATOM_DEFAULT_INPUT_MAX_CHANNELS;\
    (p_config)->max_sampling_rate   = CRIATOM_DEFAULT_INPUT_MAX_SAMPLING_RATE;\
    (p_config)->streaming_flag      = CRI_TRUE;\
    (p_config)->sound_renderer_type = CRIATOM_SOUND_RENDERER_DEFAULT;\
    (p_config)->decode_latency      = CRIATOM_DEFAULT_DECODE_LATENCY;\
}

CriAtomWavePlayerConfigへのデフォルトパラメータのセット

引数:
[out]p_configWAVEプレーヤ作成用コンフィグ構造体へのポインタ
説明:
criAtomPlayer_CreateWavePlayer 関数に設定するコンフィグ構造体 ( CriAtomWavePlayerConfig )に、デフォルトの値をセットします。
参照:
CriAtomWavePlayerConfig, criAtomPlayer_CreateWavePlayer
#define criAtomPlayer_SetDefaultConfigForAiffPlayer (   p_config)
値:
{\
    (p_config)->max_channels        = CRIATOM_DEFAULT_INPUT_MAX_CHANNELS;\
    (p_config)->max_sampling_rate   = CRIATOM_DEFAULT_INPUT_MAX_SAMPLING_RATE;\
    (p_config)->streaming_flag      = CRI_TRUE;\
    (p_config)->sound_renderer_type = CRIATOM_SOUND_RENDERER_DEFAULT;\
    (p_config)->decode_latency      = CRIATOM_DEFAULT_DECODE_LATENCY;\
}

CriAtomAiffPlayerConfigへのデフォルトパラメータのセット

引数:
[out]p_configAIFFプレーヤ作成用コンフィグ構造体へのポインタ
説明:
criAtomPlayer_CreateAiffPlayer 関数に設定するコンフィグ構造体 ( CriAtomAiffPlayerConfig )に、デフォルトの値をセットします。
参照:
CriAtomAiffPlayerConfig, criAtomPlayer_CreateAiffPlayer
#define criAtomPlayer_SetDefaultConfigForRawPcmPlayer (   p_config)
値:
{\
    (p_config)->pcm_format          = CRIATOM_PCM_FORMAT_SINT16;\
    (p_config)->max_channels        = CRIATOM_DEFAULT_INPUT_MAX_CHANNELS;\
    (p_config)->max_sampling_rate   = CRIATOM_DEFAULT_INPUT_MAX_SAMPLING_RATE;\
    (p_config)->sound_renderer_type = CRIATOM_SOUND_RENDERER_DEFAULT;\
    (p_config)->decode_latency      = CRIATOM_DEFAULT_DECODE_LATENCY;\
}

CriAtomRawPcmPlayerConfigへのデフォルトパラメータのセット

引数:
[out]p_configRawPCMプレーヤ作成用コンフィグ構造体へのポインタ
説明:
criAtomPlayer_CreateRawPcmPlayer 関数に設定するコンフィグ構造体 ( CriAtomRawPcmPlayerConfig )に、デフォルトの値をセットします。
参照:
CriAtomRawPcmPlayerConfig, criAtomPlayer_CreateRawPcmPlayer

型定義

パラメータID

説明:
パラメータを指定するためのIDです。

標準プレーヤ作成用コンフィグ構造体

説明:
標準プレーヤ(ADXとHCAが再生可能なプレーヤ)を作成する際に、 動作仕様を指定するための構造体です。
criAtomPlayer_CreateStandardPlayer 関数の引数に指定します。

作成されるプレーヤは、ハンドル作成時に本構造体で指定された設定に応じて、 内部リソースを必要なだけ確保します。
プレーヤが必要とするワーク領域のサイズは、本構造体で指定されたパラメータに応じて変化します。
注意:
将来的にメンバが増える可能性があるため、 criAtomPlayer_SetDefaultConfigForStandardPlayer マクロを使用しない場合には、使用前に必ず構造体をゼロクリアしてください。
(構造体のメンバに不定値が入らないようご注意ください。)
参照:
criAtomPlayer_CreateStandardPlayer, criAtomPlayer_SetDefaultConfigForStandardPlayer

ADXプレーヤ作成用コンフィグ構造体

説明:
ADXが再生可能なプレーヤを作成する際に、動作仕様を指定するための構造体です。
criAtomPlayer_CreateAdxPlayer 関数の引数に指定します。

作成されるプレーヤは、ハンドル作成時に本構造体で指定された設定に応じて、 内部リソースを必要なだけ確保します。
プレーヤが必要とするワーク領域のサイズは、本構造体で指定されたパラメータに応じて変化します。
注意:
将来的にメンバが増える可能性があるため、 criAtomPlayer_SetDefaultConfigForAdxPlayer マクロを使用しない場合には、使用前に必ず構造体をゼロクリアしてください。
(構造体のメンバに不定値が入らないようご注意ください。)
参照:
criAtomPlayer_CreateAdxPlayer, criAtomPlayer_SetDefaultConfigForAdxPlayer

HCAプレーヤ作成用コンフィグ構造体

説明:
HCAが再生可能なプレーヤを作成する際に、動作仕様を指定するための構造体です。
criAtomPlayer_CreateHcaPlayer 関数の引数に指定します。

作成されるプレーヤは、ハンドル作成時に本構造体で指定された設定に応じて、 内部リソースを必要なだけ確保します。
プレーヤが必要とするワーク領域のサイズは、本構造体で指定されたパラメータに応じて変化します。
注意:
将来的にメンバが増える可能性があるため、 criAtomPlayer_SetDefaultConfigForHcaPlayer マクロを使用しない場合には、使用前に必ず構造体をゼロクリアしてください。
(構造体のメンバに不定値が入らないようご注意ください。)
参照:
criAtomPlayer_CreateHcaPlayer, criAtomPlayer_SetDefaultConfigForHcaPlayer

HCA-MXプレーヤ作成用コンフィグ構造体

説明:
HCA-MXが再生可能なプレーヤを作成する際に、動作仕様を指定するための構造体です。
criAtomPlayer_CreateHcaMxPlayer 関数の引数に指定します。

作成されるプレーヤは、ハンドル作成時に本構造体で指定された設定に応じて、 内部リソースを必要なだけ確保します。
プレーヤが必要とするワーク領域のサイズは、本構造体で指定されたパラメータに応じて変化します。
注意:
将来的にメンバが増える可能性があるため、 criAtomPlayer_SetDefaultConfigForHcaMxPlayer マクロを使用しない場合には、使用前に必ず構造体をゼロクリアしてください。
(構造体のメンバに不定値が入らないようご注意ください。)
参照:
criAtomPlayer_CreateHcaMxPlayer, criAtomPlayer_SetDefaultConfigForHcaMxPlayer

WAVEプレーヤ作成用コンフィグ構造体

説明:
WAVEが再生可能なプレーヤを作成する際に、動作仕様を指定するための構造体です。
criAtomPlayer_CreateWavePlayer 関数の引数に指定します。

作成されるプレーヤは、ハンドル作成時に本構造体で指定された設定に応じて、 内部リソースを必要なだけ確保します。
プレーヤが必要とするワーク領域のサイズは、本構造体で指定されたパラメータに応じて変化します。
注意:
将来的にメンバが増える可能性があるため、 criAtomPlayer_SetDefaultConfigForWavePlayer マクロを使用しない場合には、使用前に必ず構造体をゼロクリアしてください。
(構造体のメンバに不定値が入らないようご注意ください。)
参照:
criAtomPlayer_CreateWavePlayer, criAtomPlayer_SetDefaultConfigForWavePlayer

AIFFプレーヤ作成用コンフィグ構造体

説明:
AIFFが再生可能なプレーヤを作成する際に、動作仕様を指定するための構造体です。
criAtomPlayer_CreateAiffPlayer 関数の引数に指定します。

作成されるプレーヤは、ハンドル作成時に本構造体で指定された設定に応じて、 内部リソースを必要なだけ確保します。
プレーヤが必要とするワーク領域のサイズは、本構造体で指定されたパラメータに応じて変化します。
注意:
将来的にメンバが増える可能性があるため、 criAtomPlayer_SetDefaultConfigForAiffPlayer マクロを使用しない場合には、使用前に必ず構造体をゼロクリアしてください。
(構造体のメンバに不定値が入らないようご注意ください。)
参照:
criAtomPlayer_CreateAiffPlayer, criAtomPlayer_SetDefaultConfigForAiffPlayer

RawPCMプレーヤ作成用コンフィグ構造体

説明:
RawPCMが再生可能なプレーヤを作成する際に、動作仕様を指定するための構造体です。
criAtomPlayer_CreateRawPcmPlayer 関数の引数に指定します。

作成されるプレーヤは、ハンドル作成時に本構造体で指定された設定に応じて、 内部リソースを必要なだけ確保します。
プレーヤが必要とするワーク領域のサイズは、本構造体で指定されたパラメータに応じて変化します。
注意:
将来的にメンバが増える可能性があるため、 criAtomPlayer_SetDefaultConfigForRawPcmPlayer マクロを使用しない場合には、使用前に必ず構造体をゼロクリアしてください。
(構造体のメンバに不定値が入らないようご注意ください。)
参照:
criAtomPlayer_CreateRawPcmPlayer, criAtomPlayer_SetDefaultConfigForRawPcmPlayer

再生ステータス

説明:
Atomプレーヤの再生状態を示す値です。
criAtomPlayer_GetStatus 関数で取得可能です。
再生状態は、通常以下の順序で遷移します。
  1. CRIATOMPLAYER_STATUS_STOP
  2. CRIATOMPLAYER_STATUS_PREP
  3. CRIATOMPLAYER_STATUS_PLAYING
  4. CRIATOMPLAYER_STATUS_PLAYEND
Atomプレーヤ作成直後の状態は、停止状態( CRIATOMPLAYER_STATUS_STOP )です。
criAtomPlayer_SetData 関数等でデータをセットし、 criAtomPlayer_Start 関数を 実行すると、再生準備状態( CRIATOMPLAYER_STATUS_PREP )に遷移し、再生準備を始めます。
データが充分供給され、再生準備が整うと、ステータスは再生中( CRIATOMPLAYER_STATUS_PLAYING ) に変わり、音声を出力が開始されます。
セットされたデータを全て再生し終えた時点で、ステータスは再生完了 ( CRIATOMPLAYER_STATUS_PLAYEND )に変わります。
備考
再生中に criAtomPlayer_Stop 関数を実行した場合、上記の流れに関係なく、 最終的にステータスは CRIATOMPLAYER_STATUS_STOP に戻ります。
criAtomPlayer_Stop 関数の呼び出しタイミングによっては、 CRIATOMPLAYER_STATUS_STOP に遷移するまでに時間がかかる場合があります。)
また、再生中に不正なデータを読み込んだ場合や、ファイルアクセスに失敗した場合も、 上記の流れに関係なく、ステータスは CRIATOMPLAYER_STATUS_ERROR に遷移します。
注意:
ステータスが CRIATOMPLAYER_STATUS_PREP や CRIATOMPLAYER_STATUS_PLAYING のタイミングでは、 データのセット( criAtomPlayer_SetData 関数)や、再生の開始( criAtomPlayer_Start 関数) は行えません。
現在再生中のAtomプレーヤを停止して別のデータを再生したい場合は、一旦 criAtomPlayer_Stop 関数で再生を停止させ、ステータスが CRIATOMPLAYER_STATUS_STOP に遷移してから次のデータを セット/再生する必要があります。
参照:
criAtomPlayer_GetStatus, criAtomPlayer_SetData, criAtomPlayer_Start, criAtomPlayer_Stop
typedef struct CriAtomPlayerTag* CriAtomPlayerHn

Atomプレーヤハンドル

説明:
CriAtomPlayerHn は、音声再生用に作られたプレーヤを操作するためのハンドルです。
criAtomPlayer_CreateAdxPlayer 関数等で音声再生用のプレーヤを作成すると、 関数はプレーヤ操作用に、この"Atomプレーヤハンドル"を返します。
Atomプレーヤとは、コーデックに依存しない再生制御のためのインターフェースを提供する、 抽象化されたプレーヤオブジェクトです。
Atomプレーヤの作成方法は再生する音声コーデックにより異なりますが、 作成されたプレーヤの制御については、Atomプレーヤ用のAPIが共通で利用可能です。
データのセットや再生の開始、ステータスの取得等、プレーヤに対して行う操作は、 全てAtomプレーヤハンドルを介して実行されます。
参照:
criAtomPlayer_CreateAdxPlayer
typedef void(CRIAPI * CriAtomPlayerDataRequestCbFunc)(void *obj, CriAtomPlayerHn player)

データ要求コールバック関数

説明:
引数:
[in]objユーザ指定オブジェクト
[in]playerAtomプレーヤハンドル
戻り値:
なし
説明:
次に再生するデータを指定するためのコールバック関数です。
複数の音声データをシームレスに連結して再生する際に使用します。

コールバック関数の登録には criAtomPlayer_SetDataRequestCallback 関数を使用します。
登録したコールバック関数は、Atomプレーヤが連結再生用のデータを要求するタイミングで 実行されます。
(前回のデータを読み込み終えて、次に再生すべきデータを要求するタイミングで コールバック関数が実行されます。) 本関数内で criAtomPlayer_SetData 関数等を用いてAtomプレーヤにデータをセットすると、 セットされたデータは現在再生中のデータに続いてシームレスに連結されて再生されます。
また、本関数内で criAtomPlayer_SetPreviousDataAgain 関数を実行することで、 同一データを繰り返し再生し続けることも可能です。
備考:
本関数内でデータを指定しなかった場合、現在のデータを再生し終えた時点で、 Atomプレーヤのステータスが CRIATOMPLAYER_STATUS_PLAYEND に遷移します。

タイミング等の問題により、データを指定することができないが、ステータスを CRIATOMPLAYER_STATUS_PLAYEND に遷移させたくない場合には、コールバック関数内で criAtomPlayer_DeferCallback 関数を実行してください。
criAtomPlayer_DeferCallback 関数を実行することで、約1V後に再度データ要求 コールバック関数が呼び出されます。(コールバック処理をリトライ可能。)
ただし、 criAtomPlayer_DeferCallback 関数を実行した場合、再生が途切れる (連結箇所に一定時間無音が入る)可能性があります。
注意:
本コールバック関数内で長時間処理をブロックすると、音切れ等の問題が発生しますので、 ご注意ください。
参照:
criAtomPlayer_SetDataRequestCallback, criAtomPlayer_SetData, criAtomPlayer_SetPreviousDataAgain, criAtomPlayer_DeferCallback
typedef void(CRIAPI * CriAtomPlayerStatusChangeCbFunc)(void *obj, CriAtomPlayerHn player)

ステータス変更コールバック関数

説明:
引数:
[in]objユーザ指定オブジェクト
[in]playerAtomプレーヤハンドル
戻り値:
なし
説明:
Atomプレーヤのステータスが変更されるタイミングで実行されるコールバック関数です。

コールバック関数の登録には criAtomPlayer_SetStatusChangeCallback 関数を使用します。
登録したコールバック関数は、Atomプレーヤのステータスが更新されるタイミングで 実行されます。
変更されたステータスについては、引数で渡されるAtomプレーヤハンドル(player)に対し、 criAtomPlayer_GetStatus 関数を実行することで取得可能です。
備考:
厳密には、ステータス遷移〜コールバック関数実行までの間に他の処理が割り込みで動作する 余地があるため、ステータス遷移とコールバック関数実行のタイミングがズレる可能性があります。
注意:
本コールバック関数内で長時間処理をブロックすると、音切れ等の問題が発生しますので、 ご注意ください。
参照:
criAtomPlayer_SetStatusChangeCallback, criAtomPlayer_GetStatus
typedef void(CRIAPI * CriAtomPlayerParameterChangeCbFunc)(void *obj, CriAtomPlayerHn player, CriAtomParameterId id, CriFloat32 value)

パラメータ変更コールバック関数

説明:
引数:
[in]objユーザ指定オブジェクト
[in]playerAtomプレーヤハンドル
[in]idパラメータID
[in]valueパラメータ値
戻り値:
なし
説明:
Atomプレーヤのパラメータが変更されるタイミングで実行されるコールバック関数です。

コールバック関数の登録には criAtomPlayer_SetParameterChangeCallback 関数を使用します。
登録したコールバック関数は、Atomプレーヤのパラメータが更新されるタイミングで実行されます。
注意:
本コールバック関数内で長時間処理をブロックすると、音切れ等の問題が発生しますので、 ご注意ください。
参照:
criAtomPlayer_SetParameterChangeCallback
typedef void(CRIAPI * CriAtomPlayerFilterCbFunc)(void *obj, CriAtomPcmFormat format, CriSint32 num_channels, CriSint32 num_samples, void *data[])

波形フィルタコールバック関数

説明:
引数:
[in]objユーザ指定オブジェクト
[in]formatPCMの形式
[in]num_channelsチャンネル数
[in]num_samplesサンプル数
[in,out]dataPCMデータのチャンネル配列
戻り値:
なし
説明:
デコード結果の PCM データを受け取るコールバック関数です。

コールバック関数の登録には criAtomPlayer_SetFilterCallback 関数を使用します。
コールバック関数を登録すると、 Atom プレーヤが音声データをデコードする度に、 コールバック関数が実行されるようになります。

フィルタコールバック関数には、 PCM データのフォーマットやチャンネル数、 参照可能なサンプル数、 PCM データを格納した領域のアドレスが返されます。
コールバック内では PCM データの値を直接参照可能になるので、 再生中の音声の振幅をチェックするといった用途に利用可能です。

また、コールバック関数内で PCM データを加工すると、再生音に反映されるため、 PCM データに対してユーザ独自のエフェクトをかけることも可能です。
(ただし、タイムストレッチ処理のようなデータ量が増減する加工を行うことはできません。)
備考:
PCM データはチャンネル単位で分離されています。
(インターリーブされていません。)
第 6 引数( data 配列)には、各チャンネルの PCM データ配列の先頭アドレスが格納されています。
(二次元配列の先頭アドレスではなく、チャンネルごとの PCM データ配列の先頭アドレスを格納した 一次元のポインタ配列です。)

プラットフォームによって、 PCM データのフォーマットは異なります。
実行環境のデータフォーマットについては、第 3 引数( format )で判別可能です。
PCM データのフォーマットが 16 bit 整数型の場合、 format は CRIATOM_PCM_FORMAT_SINT16 となり、 PCM データのフォーマットが 32 bit 浮動小数点数型の場合、 format は CRIATOM_PCM_FORMAT_FLOAT32 となります。
それぞれのケースで PCM データの値域は異なりますのでご注意ください。
  • CRIATOM_PCM_FORMAT_SINT16 時は -32768 〜 +32767
  • CRIATOM_PCM_FORMAT_FLOAT32 時は -1.0f 〜 +1.0f
(デコード時点ではクリッピングが行われていないため、 CRIATOM_PCM_FORMAT_FLOAT32 時は上記範囲をわずかに超えた値が出る可能性があります。)
注意:
コールバック関数内で長時間処理をブロックすると、音切れ等の問題が発生する可能性があります。
参照:
criAtomPlayer_SetFilterCallback
typedef void(CRIAPI * CriAtomPlayerLoadRequestCbFunc)(void *obj, CriFsBinderHn binder, const CriChar8 *path, CriSint64 offset, CriSint64 length)

ロード要求コールバック関数

説明:
引数:
[in]objユーザ指定オブジェクト
[in]binderファイルロード先バインダ
[in]pathファイルパス
[in]offsetロード開始位置
[in]lengthロード要求サイズ
戻り値:
なし
説明:
Atomプレーヤのファイルロード状態を監視するための、デバッグ用のコールバック関数です。
コールバック関数の登録には criAtomPlayer_SetLoadRequestCallback 関数を使用します。

登録したコールバック関数は、Atomプレーヤが音声データのロード要求を発行するタイミングで実行されます。
備考:
注意:
本コールバック関数内で長時間処理をブロックすると、音切れ等の問題が発生しますので、 ご注意ください。
参照:
criAtomPlayer_SetLoadRequestCallback

ストリーミングキャッシュ作成用コンフィグ構造体

説明:
プレーヤにストリーミングキャッシュを作成する際に、 キャッシュ可能なファイルサイズ等を登録するための構造体です。
criAtomStreamingCache_CalculateWorkSize 関数、 criAtomStreamingCache_Create 関数の引数に指定します。

注意:
将来的にメンバが増える可能性があるため、使用前に必ず構造体をゼロクリアしてください。
(構造体のメンバに不定値が入らないようご注意ください。)
参照:
criAtomStreamingCache_CalculateWorkSize, criAtomStreamingCache_Create

列挙型

パラメータID

説明:
パラメータを指定するためのIDです。
列挙型の値:
CRIATOM_PARAMETER_ID_VOLUME 

ボリューム

CRIATOM_PARAMETER_ID_FREQUENCY_RATIO 

周波数比

再生ステータス

説明:
Atomプレーヤの再生状態を示す値です。
criAtomPlayer_GetStatus 関数で取得可能です。
再生状態は、通常以下の順序で遷移します。
  1. CRIATOMPLAYER_STATUS_STOP
  2. CRIATOMPLAYER_STATUS_PREP
  3. CRIATOMPLAYER_STATUS_PLAYING
  4. CRIATOMPLAYER_STATUS_PLAYEND
Atomプレーヤ作成直後の状態は、停止状態( CRIATOMPLAYER_STATUS_STOP )です。
criAtomPlayer_SetData 関数等でデータをセットし、 criAtomPlayer_Start 関数を 実行すると、再生準備状態( CRIATOMPLAYER_STATUS_PREP )に遷移し、再生準備を始めます。
データが充分供給され、再生準備が整うと、ステータスは再生中( CRIATOMPLAYER_STATUS_PLAYING ) に変わり、音声を出力が開始されます。
セットされたデータを全て再生し終えた時点で、ステータスは再生完了 ( CRIATOMPLAYER_STATUS_PLAYEND )に変わります。
備考
再生中に criAtomPlayer_Stop 関数を実行した場合、上記の流れに関係なく、 最終的にステータスは CRIATOMPLAYER_STATUS_STOP に戻ります。
criAtomPlayer_Stop 関数の呼び出しタイミングによっては、 CRIATOMPLAYER_STATUS_STOP に遷移するまでに時間がかかる場合があります。)
また、再生中に不正なデータを読み込んだ場合や、ファイルアクセスに失敗した場合も、 上記の流れに関係なく、ステータスは CRIATOMPLAYER_STATUS_ERROR に遷移します。
注意:
ステータスが CRIATOMPLAYER_STATUS_PREP や CRIATOMPLAYER_STATUS_PLAYING のタイミングでは、 データのセット( criAtomPlayer_SetData 関数)や、再生の開始( criAtomPlayer_Start 関数) は行えません。
現在再生中のAtomプレーヤを停止して別のデータを再生したい場合は、一旦 criAtomPlayer_Stop 関数で再生を停止させ、ステータスが CRIATOMPLAYER_STATUS_STOP に遷移してから次のデータを セット/再生する必要があります。
参照:
criAtomPlayer_GetStatus, criAtomPlayer_SetData, criAtomPlayer_Start, criAtomPlayer_Stop
列挙型の値:
CRIATOMPLAYER_STATUS_STOP 

停止中

CRIATOMPLAYER_STATUS_PREP 

再生準備中

CRIATOMPLAYER_STATUS_PLAYING 

再生中

CRIATOMPLAYER_STATUS_PLAYEND 

再生完了

CRIATOMPLAYER_STATUS_ERROR 

エラーが発生


関数

CriSint32 CRIAPI criAtomPlayer_CalculateWorkSizeForStandardPlayer ( const CriAtomStandardPlayerConfig config)

標準プレーヤ作成用ワーク領域サイズの計算

引数:
[in]config標準プレーヤ作成用コンフィグ構造体
戻り値:
CriSint32 ワーク領域サイズ
戻り値:
0以上正常に処理が完了
-1エラーが発生
説明:
標準プレーヤ(ADXとHCAを再生可能なプレーヤ)を作成するために必要な、 ワーク領域のサイズを取得します。

ワーク領域サイズの計算に失敗すると、本関数は -1 を返します。
ワーク領域サイズの計算に失敗した理由については、エラーコールバックのメッセージで確認可能です。
備考:
プレーヤの作成に必要なワークメモリのサイズは、プレーヤ作成用コンフィグ 構造体( CriAtomStandardPlayerConfig )の内容によって変化します。

引数にNULLを指定した場合、デフォルト設定 ( criAtomPlayer_SetDefaultConfigForStandardPlayer 適用時と同じパラメータ) でワーク領域サイズを計算します。
引数 config の情報は、関数内でのみ参照されます。
関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意:
ワーク領域のサイズはライブラリ初期化時( criAtom_Initialize 関数実行時) に指定したパラメータによって変化します。
そのため、本関数を実行する前に、ライブラリを初期化しておく必要があります。
参照:
CriAtomStandardPlayerConfig, criAtomPlayer_CreateStandardPlayer
CriAtomPlayerHn CRIAPI criAtomPlayer_CreateStandardPlayer ( const CriAtomStandardPlayerConfig config,
void *  work,
CriSint32  work_size 
)

標準プレーヤの作成

引数:
[in]config標準プレーヤ作成用コンフィグ構造体
[in]workワーク領域
[in]work_sizeワーク領域サイズ
戻り値:
CriAtomPlayerHn Atomプレーヤハンドル
説明:
ADXとHCAが再生可能なプレーヤを作成します。
本関数で作成されたAtomプレーヤには、ADXデータとHCAデータのデコード機能が付加されています。

作成されたプレーヤで再生できる音声のフォーマットは、第一引数(config)に指定した パラメータによって決まります。
例えば、configのmax_sampling_rateに24000を設定した場合、作成されたプレーヤでは 24kHzを超えるサンプリングレートの音声データは再生できなくなります。
configにNULLを指定した場合、デフォルト設定( criAtomPlayer_SetDefaultConfigForStandardPlayer 適用時と同じパラメータ)でプレーヤを作成します。
プレーヤを作成する際には、ライブラリが内部で利用するためのメモリ領域(ワーク領域) を確保する必要があります。
ワーク領域を確保する方法には、以下の2通りの方法があります。
(a) User Allocator方式:メモリの確保/解放に、ユーザが用意した関数を使用する方法。
(b) Fixed Memory方式:必要なメモリ領域を直接ライブラリに渡す方法。

User Allocator方式を用いる場合、ユーザがワーク領域を用意する必要はありません。
workにNULL、work_sizeに0を指定するだけで、必要なメモリを登録済みのメモリ確保関数から確保します。
標準プレーヤ作成時に確保されたメモリは、標準プレーヤ破棄時( criAtomPlayer_Destroy 関数実行時)に解放されます。

Fixed Memory方式を用いる場合、ワーク領域として別途確保済みのメモリ領域を本関数に 設定する必要があります。
ワーク領域のサイズは criAtomPlayer_CalculateWorkSizeForStandardPlayer 関数で取得可能です。
標準プレーヤ作成前に criAtomPlayer_CalculateWorkSizeForStandardPlayer 関数で取得した サイズ分のメモリを予め確保しておき、本関数に設定してください。
尚、Fixed Memory方式を用いた場合、ワーク領域は標準プレーヤの破棄 ( criAtomPlayer_Destroy 関数)を行うまでの間、ライブラリ内で利用され続けます。
標準プレーヤの破棄を行う前に、ワーク領域のメモリを解放しないでください。
例:
【User Allocator方式による標準プレーヤの作成】
User Allocator方式を用いる場合、標準プレーヤの作成/破棄の手順は以下のようになります。
  1. 標準プレーヤ作成前に、 criAtom_SetUserMallocFunction 関数と criAtom_SetUserFreeFunction 関数を用いてメモリ確保/解放関数を登録する。
  2. 標準プレーヤ作成用コンフィグ構造体にパラメータをセットする。
  3. criAtomPlayer_CreateStandardPlayer 関数で標準プレーヤを作成する。
    (workにはNULL、work_sizeには0を指定する。)
  4. ハンドルが不要になったら criAtomPlayer_Destroy 関数で標準プレーヤを破棄する。

具体的なコードは以下のとおりです。
 // 独自のメモリ確保関数
 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()
 {
    CriAtomStandardPlayerConfig config; // 標準プレーヤ作成用コンフィグ構造体
    CriAtomPlayerHn player;             // Atomプレーヤハンドル
        :
    // 独自のメモリ確保関数を登録
    criAtom_SetUserMallocFunction(user_malloc, NULL);

    // 独自のメモリ解放関数を登録
    criAtom_SetUserFreeFunction(user_free, NULL);

    // 標準プレーヤ作成用コンフィグ構造体を設定
    memset(&config, 0, sizeof(config));
    config.max_channels = 2;            // ステレオ再生可能なプレーヤを作成する
    config.max_sampling_rate = 48000;   // 最大で48000Hzの音声を再生する

    // 標準プレーヤの作成
    // ワーク領域にはNULLと0を指定する。
    // →必要なメモリは、登録したメモリ確保関数を使って確保される。
    player = criAtomPlayer_CreateStandardPlayer(&config, NULL, 0);
        :
    // 音声再生処理
        :
    // 標準プレーヤが不要になった時点で破棄
    // →標準プレーヤ作成時にライブラリ内で確保されたメモリが解放される。
    criAtomPlayer_Destroy(player);
        :
 }
※ライブラリ初期化時にメモリ確保/解放関数を登録済みの場合、標準プレーヤ作成時 に再度関数を登録する必要はありません。

【Fixed Memory方式による標準プレーヤの作成】
Fixed Memory方式を用いる場合、標準プレーヤの作成/破棄の手順は以下のようになります。
  1. 標準プレーヤ作成用コンフィグ構造体にパラメータをセットする。
  2. 標準プレーヤの作成に必要なワーク領域のサイズを、 criAtomPlayer_CalculateWorkSizeForStandardPlayer 関数を使って計算する。
  3. ワーク領域サイズ分のメモリを確保する。
  4. criAtomPlayer_CreateStandardPlayer 関数で標準プレーヤを作成する。
    (workには確保したメモリのアドレスを、work_sizeにはワーク領域のサイズを指定する。)
  5. ハンドルが不要になったら criAtomPlayer_Destroy 関数で標準プレーヤを破棄する。
  6. ワーク領域のメモリを解放する。

具体的なコードは以下のとおりです。
 main()
 {
    CriAtomStandardPlayerConfig config; // 標準プレーヤ作成用コンフィグ構造体
    CriAtomPlayerHn player;             // Atomプレーヤハンドル
    void *work;                         // ワーク領域アドレス
    CriSint32 work_size;                // ワーク領域サイズ
        :
    // 標準プレーヤ作成用コンフィグ構造体を設定
    memset(&config, 0, sizeof(config));
    config.max_channels = 2;            // ステレオ再生可能なプレーヤを作成する
    config.max_sampling_rate = 48000;   // 最大で48000Hzの音声を再生する

    // 標準プレーヤの作成に必要なワーク領域のサイズを計算
    work_size = criAtomPlayer_CalculateWorkSizeForStandardPlayer(&config);

    // ワーク領域用にメモリを確保
    work = malloc((size_t)work_size);

    // 標準プレーヤの作成
    // ワーク領域にはNULLと0を指定する。
    // →確保済みのワーク領域を指定する。
    player = criAtomPlayer_CreateStandardPlayer(&config, work, work_size);
        :
    // 音声再生処理
    // →この間、確保したメモリは保持し続ける。
        :
    // 標準プレーヤが不要になった時点で破棄
    criAtomPlayer_Destroy(player);

    // 必要なくなったワーク領域を解放する
    free(work);
        :
 }
criAtomPlayer_CreateStandardPlayer 関数を実行すると、Atomプレーヤが作成され、 プレーヤを制御するためのハンドル( CriAtomPlayerHn )が返されます。
データのセット、再生の開始、ステータスの取得等、Atomプレーヤに対して 行う操作は、全てハンドルに対して行います。

作成されたAtomプレーヤハンドルを使用して音声データを再生する手順は以下のとおりです。
  1. criAtomPlayer_SetData 関数を使用して、Atomプレーヤに再生するデータをセットする。
    (ファイル再生時は、 criAtomPlayer_SetFile 関数または criAtomPlayer_SetContentId 関数を使用する。)
  2. criAtomPlayer_Start 関数で再生を開始する。
備考:
引数 config の情報は、関数内でのみ参照されます。
関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意:
本関数を実行する前に、ライブラリを初期化しておく必要があります。

ストリーム再生用のAtomプレーヤは、内部的にローダ( CriFsLoaderHn )を確保します。
ストリーム再生用のAtomプレーヤを作成する場合、プレーヤハンドル数分のローダが確保 できる設定でAtomライブラリ(またはCRI File Systemライブラリ)を初期化する 必要があります。

本関数は完了復帰型の関数です。
標準プレーヤの作成にかかる時間は、プラットフォームによって異なります。
ゲームループ等の画面更新が必要なタイミングで本関数を実行するとミリ秒単位で 処理がブロックされ、フレーム落ちが発生する恐れがあります。
標準プレーヤの作成/破棄は、シーンの切り替わり等、負荷変動を許容できる タイミングで行うようお願いいたします。
参照:
CriAtomStandardPlayerConfig, criAtomPlayer_CalculateWorkSizeForStandardPlayer, CriAtomPlayerHn, criAtomPlayer_Destroy, criAtomPlayer_SetData, criAtomPlayer_SetFile, criAtomPlayer_SetContentId, criAtomPlayer_Start, criAtomPlayer_CreateStandardPlayer
CriSint32 CRIAPI criAtomPlayer_CalculateWorkSizeForAdxPlayer ( const CriAtomAdxPlayerConfig config)

ADXプレーヤ作成用ワーク領域サイズの計算

引数:
[in]configADXプレーヤ作成用コンフィグ構造体
戻り値:
CriSint32 ワーク領域サイズ
戻り値:
0以上正常に処理が完了
-1エラーが発生
説明:
ADX再生用プレーヤを作成するために必要な、ワーク領域のサイズを取得します。

ワーク領域サイズの計算に失敗すると、本関数は -1 を返します。
ワーク領域サイズの計算に失敗した理由については、エラーコールバックのメッセージで確認可能です。
備考:
プレーヤの作成に必要なワークメモリのサイズは、プレーヤ作成用コンフィグ 構造体( CriAtomAdxPlayerConfig )の内容によって変化します。

引数にNULLを指定した場合、デフォルト設定 ( criAtomPlayer_SetDefaultConfigForAdxPlayer 適用時と同じパラメータ)で ワーク領域サイズを計算します。
引数 config の情報は、関数内でのみ参照されます。
関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意:
ワーク領域のサイズはライブラリ初期化時( criAtom_Initialize 関数実行時) に指定したパラメータによって変化します。
そのため、本関数を実行する前に、ライブラリを初期化しておく必要があります。
参照:
CriAtomAdxPlayerConfig, criAtomPlayer_CreateAdxPlayer
CriAtomPlayerHn CRIAPI criAtomPlayer_CreateAdxPlayer ( const CriAtomAdxPlayerConfig config,
void *  work,
CriSint32  work_size 
)

ADXプレーヤの作成

引数:
[in]configADXプレーヤ作成用コンフィグ構造体
[in]workワーク領域
[in]work_sizeワーク領域サイズ
戻り値:
CriAtomPlayerHn Atomプレーヤハンドル
説明:
ADXが再生可能なプレーヤを作成します。
本関数で作成されたAtomプレーヤには、ADXデータのデコード機能が付加されています。

作成されたプレーヤで再生できる音声のフォーマットは、第一引数(config)に指定した パラメータによって決まります。
例えば、configのmax_sampling_rateに24000を設定した場合、作成されたプレーヤでは 24kHzを超えるサンプリングレートの音声データは再生できなくなります。
configにNULLを指定した場合、デフォルト設定( criAtomPlayer_SetDefaultConfigForAdxPlayer 適用時と同じパラメータ)でプレーヤを作成します。
プレーヤを作成する際には、ライブラリが内部で利用するためのメモリ領域(ワーク領域) を確保する必要があります。
ワーク領域を確保する方法には、以下の2通りの方法があります。
(a) User Allocator方式:メモリの確保/解放に、ユーザが用意した関数を使用する方法。
(b) Fixed Memory方式:必要なメモリ領域を直接ライブラリに渡す方法。

User Allocator方式を用いる場合、ユーザがワーク領域を用意する必要はありません。
workにNULL、work_sizeに0を指定するだけで、必要なメモリを登録済みのメモリ確保関数から確保します。
ADXプレーヤ作成時に確保されたメモリは、ADXプレーヤ破棄時( criAtomPlayer_Destroy 関数実行時)に解放されます。

Fixed Memory方式を用いる場合、ワーク領域として別途確保済みのメモリ領域を本関数に 設定する必要があります。
ワーク領域のサイズは criAtomPlayer_CalculateWorkSizeForAdxPlayer 関数で取得可能です。
ADXプレーヤ作成前に criAtomPlayer_CalculateWorkSizeForAdxPlayer 関数で取得した サイズ分のメモリを予め確保しておき、本関数に設定してください。
尚、Fixed Memory方式を用いた場合、ワーク領域はADXプレーヤの破棄 ( criAtomPlayer_Destroy 関数)を行うまでの間、ライブラリ内で利用され続けます。
ADXプレーヤの破棄を行う前に、ワーク領域のメモリを解放しないでください。
例:
【User Allocator方式によるADXプレーヤの作成】
User Allocator方式を用いる場合、ADXプレーヤの作成/破棄の手順は以下のようになります。
  1. ADXプレーヤ作成前に、 criAtom_SetUserMallocFunction 関数と criAtom_SetUserFreeFunction 関数を用いてメモリ確保/解放関数を登録する。
  2. ADXプレーヤ作成用コンフィグ構造体にパラメータをセットする。
  3. criAtomPlayer_CreateAdxPlayer 関数でADXプレーヤを作成する。
    (workにはNULL、work_sizeには0を指定する。)
  4. ハンドルが不要になったら criAtomPlayer_Destroy 関数でADXプレーヤを破棄する。

具体的なコードは以下のとおりです。
 // 独自のメモリ確保関数
 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()
 {
    CriAtomAdxPlayerConfig config;  // ADXプレーヤ作成用コンフィグ構造体
    CriAtomPlayerHn player;         // Atomプレーヤハンドル
        :
    // 独自のメモリ確保関数を登録
    criAtom_SetUserMallocFunction(user_malloc, NULL);

    // 独自のメモリ解放関数を登録
    criAtom_SetUserFreeFunction(user_free, NULL);

    // ADXプレーヤ作成用コンフィグ構造体を設定
    memset(&config, 0, sizeof(config));
    config.max_channels = 2;            // ステレオ再生可能なプレーヤを作成する
    config.max_sampling_rate = 48000;   // 最大で48000Hzの音声を再生する

    // ADXプレーヤの作成
    // ワーク領域にはNULLと0を指定する。
    // →必要なメモリは、登録したメモリ確保関数を使って確保される。
    player = criAtomPlayer_CreateAdxPlayer(&config, NULL, 0);
        :
    // 音声再生処理
        :
    // ADXプレーヤが不要になった時点で破棄
    // →ADXプレーヤ作成時にライブラリ内で確保されたメモリが解放される。
    criAtomPlayer_Destroy(player);
        :
 }
※ライブラリ初期化時にメモリ確保/解放関数を登録済みの場合、ADXプレーヤ作成時 に再度関数を登録する必要はありません。

【Fixed Memory方式によるADXプレーヤの作成】
Fixed Memory方式を用いる場合、ADXプレーヤの作成/破棄の手順は以下のようになります。
  1. ADXプレーヤ作成用コンフィグ構造体にパラメータをセットする。
  2. ADXプレーヤの作成に必要なワーク領域のサイズを、 criAtomPlayer_CalculateWorkSizeForAdxPlayer 関数を使って計算する。
  3. ワーク領域サイズ分のメモリを確保する。
  4. criAtomPlayer_CreateAdxPlayer 関数でADXプレーヤを作成する。
    (workには確保したメモリのアドレスを、work_sizeにはワーク領域のサイズを指定する。)
  5. ハンドルが不要になったら criAtomPlayer_Destroy 関数でADXプレーヤを破棄する。
  6. ワーク領域のメモリを解放する。

具体的なコードは以下のとおりです。
 main()
 {
    CriAtomAdxPlayerConfig config;  // ADXプレーヤ作成用コンフィグ構造体
    CriAtomPlayerHn player;         // Atomプレーヤハンドル
    void *work;                     // ワーク領域アドレス
    CriSint32 work_size;            // ワーク領域サイズ
        :
    // ADXプレーヤ作成用コンフィグ構造体を設定
    memset(&config, 0, sizeof(config));
    config.max_channels = 2;            // ステレオ再生可能なプレーヤを作成する
    config.max_sampling_rate = 48000;   // 最大で48000Hzの音声を再生する

    // ADXプレーヤの作成に必要なワーク領域のサイズを計算
    work_size = criAtomPlayer_CalculateWorkSizeForAdxPlayer(&config);

    // ワーク領域用にメモリを確保
    work = malloc((size_t)work_size);

    // ADXプレーヤの作成
    // ワーク領域にはNULLと0を指定する。
    // →確保済みのワーク領域を指定する。
    player = criAtomPlayer_CreateAdxPlayer(&config, work, work_size);
        :
    // 音声再生処理
    // →この間、確保したメモリは保持し続ける。
        :
    // ADXプレーヤが不要になった時点で破棄
    criAtomPlayer_Destroy(player);

    // 必要なくなったワーク領域を解放する
    free(work);
        :
 }
criAtomPlayer_CreateAdxPlayer 関数を実行すると、Atomプレーヤが作成され、 プレーヤを制御するためのハンドル( CriAtomPlayerHn )が返されます。
データやデコーダのセット、再生の開始、ステータスの取得等、Atomプレーヤに対して 行う操作は、全てハンドルに対して行います。

作成されたAtomプレーヤハンドルを使用して音声データを再生する手順は以下のとおりです。
  1. criAtomPlayer_SetData 関数を使用して、Atomプレーヤに再生するデータをセットする。
    (ファイル再生時は、 criAtomPlayer_SetFile 関数または criAtomPlayer_SetContentId 関数を使用する。)
  2. criAtomPlayer_Start 関数で再生を開始する。
備考:
引数 config の情報は、関数内でのみ参照されます。
関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意:
本関数を実行する前に、ライブラリを初期化しておく必要があります。

ストリーム再生用のAtomプレーヤは、内部的にローダ( CriFsLoaderHn )を確保します。
ストリーム再生用のAtomプレーヤを作成する場合、プレーヤハンドル数分のローダが確保 できる設定でAtomライブラリ(またはCRI File Systemライブラリ)を初期化する 必要があります。

本関数は完了復帰型の関数です。
ADXプレーヤの作成にかかる時間は、プラットフォームによって異なります。
ゲームループ等の画面更新が必要なタイミングで本関数を実行するとミリ秒単位で 処理がブロックされ、フレーム落ちが発生する恐れがあります。
ADXプレーヤの作成/破棄は、シーンの切り替わり等、負荷変動を許容できる タイミングで行うようお願いいたします。
参照:
CriAtomAdxPlayerConfig, criAtomPlayer_CalculateWorkSizeForAdxPlayer, CriAtomPlayerHn, criAtomPlayer_Destroy, criAtomPlayer_SetData, criAtomPlayer_SetFile, criAtomPlayer_SetContentId, criAtomPlayer_Start, criAtomPlayer_CreateAdxPlayer
CriSint32 CRIAPI criAtomPlayer_CalculateWorkSizeForHcaPlayer ( const CriAtomHcaPlayerConfig config)

HCAプレーヤ作成用ワーク領域サイズの計算

引数:
[in]configHCAプレーヤ作成用コンフィグ構造体
戻り値:
CriSint32 ワーク領域サイズ
戻り値:
0以上正常に処理が完了
-1エラーが発生
説明:
HCA再生用プレーヤを作成するために必要な、ワーク領域のサイズを取得します。

ワーク領域サイズの計算に失敗すると、本関数は -1 を返します。
ワーク領域サイズの計算に失敗した理由については、エラーコールバックのメッセージで確認可能です。
備考:
プレーヤの作成に必要なワークメモリのサイズは、プレーヤ作成用コンフィグ 構造体( CriAtomHcaPlayerConfig )の内容によって変化します。

引数にNULLを指定した場合、デフォルト設定 ( criAtomPlayer_SetDefaultConfigForHcaPlayer 適用時と同じパラメータ)で ワーク領域サイズを計算します。
引数 config の情報は、関数内でのみ参照されます。
関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意:
ワーク領域のサイズはライブラリ初期化時( criAtom_Initialize 関数実行時) に指定したパラメータによって変化します。
そのため、本関数を実行する前に、ライブラリを初期化しておく必要があります。
参照:
CriAtomHcaPlayerConfig, criAtomPlayer_CreateHcaPlayer
CriAtomPlayerHn CRIAPI criAtomPlayer_CreateHcaPlayer ( const CriAtomHcaPlayerConfig config,
void *  work,
CriSint32  work_size 
)

HCAプレーヤの作成

引数:
[in]configHCAプレーヤ作成用コンフィグ構造体
[in]workワーク領域
[in]work_sizeワーク領域サイズ
戻り値:
CriAtomPlayerHn Atomプレーヤハンドル
説明:
HCAが再生可能なプレーヤを作成します。
本関数で作成されたAtomプレーヤには、HCAデータのデコード機能が付加されています。

作成されたプレーヤで再生できる音声のフォーマットは、第一引数(config)に指定した パラメータによって決まります。
例えば、configのmax_sampling_rateに24000を設定した場合、作成されたプレーヤでは 24kHzを超えるサンプリングレートの音声データは再生できなくなります。
configにNULLを指定した場合、デフォルト設定( criAtomPlayer_SetDefaultConfigForHcaPlayer 適用時と同じパラメータ)でプレーヤを作成します。
プレーヤを作成する際には、ライブラリが内部で利用するためのメモリ領域(ワーク領域) を確保する必要があります。
ワーク領域を確保する方法には、以下の2通りの方法があります。
(a) User Allocator方式:メモリの確保/解放に、ユーザが用意した関数を使用する方法。
(b) Fixed Memory方式:必要なメモリ領域を直接ライブラリに渡す方法。
各方式の詳細については、別途 criAtomPlayer_CreateAdxPlayer 関数の説明をご参照ください。

criAtomPlayer_CreateHcaPlayer 関数を実行すると、Atomプレーヤが作成され、 プレーヤを制御するためのハンドル( CriAtomPlayerHn )が返されます。
データやデコーダのセット、再生の開始、ステータスの取得等、Atomプレーヤに対して 行う操作は、全てハンドルに対して行います。

作成されたAtomプレーヤハンドルを使用して音声データを再生する手順は以下のとおりです。
  1. criAtomPlayer_SetData 関数を使用して、Atomプレーヤに再生するデータをセットする。
    (ファイル再生時は、 criAtomPlayer_SetFile 関数または criAtomPlayer_SetContentId 関数を使用する。)
  2. criAtomPlayer_Start 関数で再生を開始する。
備考:
引数 config の情報は、関数内でのみ参照されます。
関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意:
本関数を実行する前に、ライブラリを初期化しておく必要があります。

ストリーム再生用のAtomプレーヤは、内部的にローダ( CriFsLoaderHn )を確保します。
ストリーム再生用のAtomプレーヤを作成する場合、プレーヤハンドル数分のローダが確保 できる設定でAtomライブラリ(またはCRI File Systemライブラリ)を初期化する 必要があります。

本関数は完了復帰型の関数です。
HCAプレーヤの作成にかかる時間は、プラットフォームによって異なります。
ゲームループ等の画面更新が必要なタイミングで本関数を実行するとミリ秒単位で 処理がブロックされ、フレーム落ちが発生する恐れがあります。
HCAプレーヤの作成/破棄は、シーンの切り替わり等、負荷変動を許容できる タイミングで行うようお願いいたします。
参照:
CriAtomHcaPlayerConfig, criAtomPlayer_CalculateWorkSizeForHcaPlayer, CriAtomPlayerHn, criAtomPlayer_Destroy, criAtomPlayer_SetData, criAtomPlayer_SetFile, criAtomPlayer_SetContentId, criAtomPlayer_Start, criAtomPlayer_CreateHcaPlayer
CriSint32 CRIAPI criAtomPlayer_CalculateWorkSizeForHcaMxPlayer ( const CriAtomHcaMxPlayerConfig config)

HCA-MXプレーヤ作成用ワーク領域サイズの計算

引数:
[in]configHCA-MXプレーヤ作成用コンフィグ構造体
戻り値:
CriSint32 ワーク領域サイズ
戻り値:
0以上正常に処理が完了
-1エラーが発生
説明:
HCA-MX再生用プレーヤを作成するために必要な、ワーク領域のサイズを取得します。

ワーク領域サイズの計算に失敗すると、本関数は -1 を返します。
ワーク領域サイズの計算に失敗した理由については、エラーコールバックのメッセージで確認可能です。
備考:
プレーヤの作成に必要なワークメモリのサイズは、プレーヤ作成用コンフィグ 構造体( CriAtomHcaMxPlayerConfig )の内容によって変化します。

引数にNULLを指定した場合、デフォルト設定 ( criAtomPlayer_SetDefaultConfigForHcaMxPlayer 適用時と同じパラメータ)で ワーク領域サイズを計算します。
引数 config の情報は、関数内でのみ参照されます。
関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意:
ワーク領域のサイズはHCA-MX初期化時( criAtomHcaMx_Initialize 関数実行時) に指定したパラメータによって変化します。
そのため、本関数を実行する前に、HCA-MXを初期化しておく必要があります。
参照:
CriAtomHcaMxPlayerConfig, criAtomPlayer_CreateHcaMxPlayer
CriAtomPlayerHn CRIAPI criAtomPlayer_CreateHcaMxPlayer ( const CriAtomHcaMxPlayerConfig config,
void *  work,
CriSint32  work_size 
)

HCA-MXプレーヤの作成

引数:
[in]configHCA-MXプレーヤ作成用コンフィグ構造体
[in]workワーク領域
[in]work_sizeワーク領域サイズ
戻り値:
CriAtomPlayerHn Atomプレーヤハンドル
説明:
HCA-MXが再生可能なプレーヤを作成します。
本関数で作成されたAtomプレーヤには、HCA-MXデータのデコード機能が付加されています。

作成されたプレーヤで再生できる音声のフォーマットは、第一引数(config)に指定した パラメータによって決まります。
例えば、configのmax_sampling_rateに24000を設定した場合、作成されたプレーヤでは 24kHzを超えるサンプリングレートの音声データは再生できなくなります。
configにNULLを指定した場合、デフォルト設定( criAtomPlayer_SetDefaultConfigForHcaMxPlayer 適用時と同じパラメータ)でプレーヤを作成します。
プレーヤを作成する際には、ライブラリが内部で利用するためのメモリ領域(ワーク領域) を確保する必要があります。
ワーク領域を確保する方法には、以下の2通りの方法があります。
(a) User Allocator方式:メモリの確保/解放に、ユーザが用意した関数を使用する方法。
(b) Fixed Memory方式:必要なメモリ領域を直接ライブラリに渡す方法。
各方式の詳細については、別途 criAtomPlayer_CreateAdxPlayer 関数の説明をご参照ください。

criAtomPlayer_CreateHcaMxPlayer 関数を実行すると、Atomプレーヤが作成され、 プレーヤを制御するためのハンドル( CriAtomPlayerHn )が返されます。
データやデコーダのセット、再生の開始、ステータスの取得等、Atomプレーヤに対して 行う操作は、全てハンドルに対して行います。

作成されたAtomプレーヤハンドルを使用して音声データを再生する手順は以下のとおりです。
  1. criAtomPlayer_SetData 関数を使用して、Atomプレーヤに再生するデータをセットする。
    (ファイル再生時は、 criAtomPlayer_SetFile 関数または criAtomPlayer_SetContentId 関数を使用する。)
  2. criAtomPlayer_Start 関数で再生を開始する。
備考:
引数 config の情報は、関数内でのみ参照されます。
関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意:
ストリーム再生用のAtomプレーヤは、内部的にローダ( CriFsLoaderHn )を確保します。
ストリーム再生用のAtomプレーヤを作成する場合、プレーヤハンドル数分のローダが確保 できる設定でAtomライブラリ(またはCRI File Systemライブラリ)を初期化する 必要があります。

本関数を実行する前に、HCA-MXを初期化しておく必要があります。

本関数は完了復帰型の関数です。
HCA-MXプレーヤの作成にかかる時間は、プラットフォームによって異なります。
ゲームループ等の画面更新が必要なタイミングで本関数を実行するとミリ秒単位で 処理がブロックされ、フレーム落ちが発生する恐れがあります。
HCA-MXプレーヤの作成/破棄は、シーンの切り替わり等、負荷変動を許容できる タイミングで行うようお願いいたします。
参照:
CriAtomHcaMxPlayerConfig, criAtomPlayer_CalculateWorkSizeForHcaMxPlayer, CriAtomPlayerHn, criAtomPlayer_Destroy, criAtomPlayer_SetData, criAtomPlayer_SetFile, criAtomPlayer_SetContentId, criAtomPlayer_Start, criAtomPlayer_CreateHcaMxPlayer
CriSint32 CRIAPI criAtomPlayer_CalculateWorkSizeForWavePlayer ( const CriAtomWavePlayerConfig config)

WAVEプレーヤ作成用ワーク領域サイズの計算

引数:
[in]configWAVEプレーヤ作成用コンフィグ構造体
戻り値:
CriSint32 ワーク領域サイズ
戻り値:
0以上正常に処理が完了
-1エラーが発生
説明:
WAVE再生用プレーヤを作成するために必要な、ワーク領域のサイズを取得します。

ワーク領域サイズの計算に失敗すると、本関数は -1 を返します。
ワーク領域サイズの計算に失敗した理由については、エラーコールバックのメッセージで確認可能です。
備考:
プレーヤの作成に必要なワークメモリのサイズは、プレーヤ作成用コンフィグ 構造体( CriAtomWavePlayerConfig )の内容によって変化します。

引数にNULLを指定した場合、デフォルト設定 ( criAtomPlayer_SetDefaultConfigForWavePlayer 適用時と同じパラメータ)で ワーク領域サイズを計算します。
引数 config の情報は、関数内でのみ参照されます。
関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意:
ワーク領域のサイズはライブラリ初期化時( criAtom_Initialize 関数実行時) に指定したパラメータによって変化します。
そのため、本関数を実行する前に、ライブラリを初期化しておく必要があります。
参照:
CriAtomWavePlayerConfig, criAtomPlayer_CreateWavePlayer
CriAtomPlayerHn CRIAPI criAtomPlayer_CreateWavePlayer ( const CriAtomWavePlayerConfig config,
void *  work,
CriSint32  work_size 
)

WAVEプレーヤの作成

引数:
[in]configWAVEプレーヤ作成用コンフィグ構造体
[in]workワーク領域
[in]work_sizeワーク領域サイズ
戻り値:
CriAtomPlayerHn Atomプレーヤハンドル
説明:
WAVEが再生可能なプレーヤを作成します。
本関数で作成されたAtomプレーヤには、WAVEデータのデコード機能が付加されています。

作成されたプレーヤで再生できる音声のフォーマットは、第一引数(config)に指定した パラメータによって決まります。
例えば、configのmax_sampling_rateに24000を設定した場合、作成されたプレーヤでは 24kHzを超えるサンプリングレートの音声データは再生できなくなります。
configにNULLを指定した場合、デフォルト設定( criAtomPlayer_SetDefaultConfigForWavePlayer 適用時と同じパラメータ)でプレーヤを作成します。
プレーヤを作成する際には、ライブラリが内部で利用するためのメモリ領域(ワーク領域) を確保する必要があります。
ワーク領域を確保する方法には、以下の2通りの方法があります。
(a) User Allocator方式:メモリの確保/解放に、ユーザが用意した関数を使用する方法。
(b) Fixed Memory方式:必要なメモリ領域を直接ライブラリに渡す方法。
各方式の詳細については、別途 criAtomPlayer_CreateAdxPlayer 関数の説明をご参照ください。

criAtomPlayer_CreateWavePlayer 関数を実行すると、Atomプレーヤが作成され、 プレーヤを制御するためのハンドル( CriAtomPlayerHn )が返されます。
データやデコーダのセット、再生の開始、ステータスの取得等、Atomプレーヤに対して 行う操作は、全てハンドルに対して行います。

作成されたAtomプレーヤハンドルを使用して音声データを再生する手順は以下のとおりです。
  1. criAtomPlayer_SetData 関数を使用して、Atomプレーヤに再生するデータをセットする。
    (ファイル再生時は、 criAtomPlayer_SetFile 関数または criAtomPlayer_SetContentId 関数を使用する。)
  2. criAtomPlayer_Start 関数で再生を開始する。
備考:
引数 config の情報は、関数内でのみ参照されます。
関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意:
本関数を実行する前に、ライブラリを初期化しておく必要があります。

ストリーム再生用のAtomプレーヤは、内部的にローダ( CriFsLoaderHn )を確保します。
ストリーム再生用のAtomプレーヤを作成する場合、プレーヤハンドル数分のローダが確保 できる設定でAtomライブラリ(またはCRI File Systemライブラリ)を初期化する 必要があります。

本関数は完了復帰型の関数です。
WAVEプレーヤの作成にかかる時間は、プラットフォームによって異なります。
ゲームループ等の画面更新が必要なタイミングで本関数を実行するとミリ秒単位で 処理がブロックされ、フレーム落ちが発生する恐れがあります。
WAVEプレーヤの作成/破棄は、シーンの切り替わり等、負荷変動を許容できる タイミングで行うようお願いいたします。

現状、Waveファイルのチャンク解析は厳密には行っていません。
チャンクの並び順がFORMチャンク、COMMチャンク、SSNDチャンクではない場合や、 その他のチャンクを含むWaveファイルは、解析に失敗する可能性があります。
また、現時点で対応しているフォーマットは、モノラルまたはステレオの 16bit 非圧縮データのみです。
参照:
CriAtomWavePlayerConfig, criAtomPlayer_CalculateWorkSizeForWavePlayer, CriAtomPlayerHn, criAtomPlayer_Destroy, criAtomPlayer_SetData, criAtomPlayer_SetFile, criAtomPlayer_SetContentId, criAtomPlayer_Start, criAtomPlayer_CreateWavePlayer
CriSint32 CRIAPI criAtomPlayer_CalculateWorkSizeForAiffPlayer ( const CriAtomAiffPlayerConfig config)

AIFFプレーヤ作成用ワーク領域サイズの計算

引数:
[in]configAIFFプレーヤ作成用コンフィグ構造体
戻り値:
CriSint32 ワーク領域サイズ
戻り値:
0以上正常に処理が完了
-1エラーが発生
説明:
AIFF再生用プレーヤを作成するために必要な、ワーク領域のサイズを取得します。

ワーク領域サイズの計算に失敗すると、本関数は -1 を返します。
ワーク領域サイズの計算に失敗した理由については、エラーコールバックのメッセージで確認可能です。
備考:
プレーヤの作成に必要なワークメモリのサイズは、プレーヤ作成用コンフィグ 構造体( CriAtomAiffPlayerConfig )の内容によって変化します。

引数にNULLを指定した場合、デフォルト設定 ( criAtomPlayer_SetDefaultConfigForAiffPlayer 適用時と同じパラメータ)で ワーク領域サイズを計算します。
引数 config の情報は、関数内でのみ参照されます。
関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意:
ワーク領域のサイズはライブラリ初期化時( criAtom_Initialize 関数実行時) に指定したパラメータによって変化します。
そのため、本関数を実行する前に、ライブラリを初期化しておく必要があります。
参照:
CriAtomAiffPlayerConfig, criAtomPlayer_CreateAiffPlayer
CriAtomPlayerHn CRIAPI criAtomPlayer_CreateAiffPlayer ( const CriAtomAiffPlayerConfig config,
void *  work,
CriSint32  work_size 
)

AIFFプレーヤの作成

引数:
[in]configAIFFプレーヤ作成用コンフィグ構造体
[in]workワーク領域
[in]work_sizeワーク領域サイズ
戻り値:
CriAtomPlayerHn Atomプレーヤハンドル
説明:
AIFFが再生可能なプレーヤを作成します。
本関数で作成されたAtomプレーヤには、AIFFデータのデコード機能が付加されています。

作成されたプレーヤで再生できる音声のフォーマットは、第一引数(config)に指定した パラメータによって決まります。
例えば、configのmax_sampling_rateに24000を設定した場合、作成されたプレーヤでは 24kHzを超えるサンプリングレートの音声データは再生できなくなります。
configにNULLを指定した場合、デフォルト設定( criAtomPlayer_SetDefaultConfigForAiffPlayer 適用時と同じパラメータ)でプレーヤを作成します。
プレーヤを作成する際には、ライブラリが内部で利用するためのメモリ領域(ワーク領域) を確保する必要があります。
ワーク領域を確保する方法には、以下の2通りの方法があります。
(a) User Allocator方式:メモリの確保/解放に、ユーザが用意した関数を使用する方法。
(b) Fixed Memory方式:必要なメモリ領域を直接ライブラリに渡す方法。
各方式の詳細については、別途 criAtomPlayer_CreateAdxPlayer 関数の説明をご参照ください。

criAtomPlayer_CreateAiffPlayer 関数を実行すると、Atomプレーヤが作成され、 プレーヤを制御するためのハンドル( CriAtomPlayerHn )が返されます。
データやデコーダのセット、再生の開始、ステータスの取得等、Atomプレーヤに対して 行う操作は、全てハンドルに対して行います。

作成されたAtomプレーヤハンドルを使用して音声データを再生する手順は以下のとおりです。
  1. criAtomPlayer_SetData 関数を使用して、Atomプレーヤに再生するデータをセットする。
    (ファイル再生時は、 criAtomPlayer_SetFile 関数または criAtomPlayer_SetContentId 関数を使用する。)
  2. criAtomPlayer_Start 関数で再生を開始する。
備考:
引数 config の情報は、関数内でのみ参照されます。
関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意:
本関数を実行する前に、ライブラリを初期化しておく必要があります。

ストリーム再生用のAtomプレーヤは、内部的にローダ( CriFsLoaderHn )を確保します。
ストリーム再生用のAtomプレーヤを作成する場合、プレーヤハンドル数分のローダが確保 できる設定でAtomライブラリ(またはCRI File Systemライブラリ)を初期化する 必要があります。

本関数は完了復帰型の関数です。
AIFFプレーヤの作成にかかる時間は、プラットフォームによって異なります。
ゲームループ等の画面更新が必要なタイミングで本関数を実行するとミリ秒単位で 処理がブロックされ、フレーム落ちが発生する恐れがあります。
AIFFプレーヤの作成/破棄は、シーンの切り替わり等、負荷変動を許容できる タイミングで行うようお願いいたします。

現状、AIFFファイルのチャンク解析は厳密には行っていません。
チャンクの並び順がFORMチャンク、COMMチャンク、SSNDチャンクではない場合や、 その他のチャンクを含むAIFFファイルは、解析に失敗する可能性があります。
また、現時点で対応しているフォーマットは、モノラルまたはステレオの 16bit 非圧縮データのみです。
参照:
CriAtomAiffPlayerConfig, criAtomPlayer_CalculateWorkSizeForAiffPlayer, CriAtomPlayerHn, criAtomPlayer_Destroy, criAtomPlayer_SetData, criAtomPlayer_SetFile, criAtomPlayer_SetContentId, criAtomPlayer_Start, criAtomPlayer_CreateAiffPlayer
CriSint32 CRIAPI criAtomPlayer_CalculateWorkSizeForRawPcmPlayer ( const CriAtomRawPcmPlayerConfig config)

RawPCMプレーヤ作成用ワーク領域サイズの計算

引数:
[in]configRawPCMプレーヤ作成用コンフィグ構造体
戻り値:
CriSint32 ワーク領域サイズ
戻り値:
0以上正常に処理が完了
-1エラーが発生
説明:
RawPCM再生用プレーヤを作成するために必要な、ワーク領域のサイズを取得します。

ワーク領域サイズの計算に失敗すると、本関数は -1 を返します。
ワーク領域サイズの計算に失敗した理由については、エラーコールバックのメッセージで確認可能です。
備考:
プレーヤの作成に必要なワークメモリのサイズは、プレーヤ作成用コンフィグ 構造体( CriAtomRawPcmPlayerConfig )の内容によって変化します。

引数にNULLを指定した場合、デフォルト設定 ( criAtomPlayer_SetDefaultConfigForRawPcmPlayer 適用時と同じパラメータ)で ワーク領域サイズを計算します。
引数 config の情報は、関数内でのみ参照されます。
関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意:
ワーク領域のサイズはライブラリ初期化時( criAtom_Initialize 関数実行時) に指定したパラメータによって変化します。
そのため、本関数を実行する前に、ライブラリを初期化しておく必要があります。
参照:
CriAtomRawPcmPlayerConfig, criAtomPlayer_CreateRawPcmPlayer
CriAtomPlayerHn CRIAPI criAtomPlayer_CreateRawPcmPlayer ( const CriAtomRawPcmPlayerConfig config,
void *  work,
CriSint32  work_size 
)

RawPCMプレーヤの作成

引数:
[in]configRawPCMプレーヤ作成用コンフィグ構造体
[in]workワーク領域
[in]work_sizeワーク領域サイズ
戻り値:
CriAtomPlayerHn Atomプレーヤハンドル
説明:
RawPCMが再生可能なプレーヤを作成します。
本関数で作成されたAtomプレーヤには、RawPCMデータのデコード機能が付加されています。

作成されたプレーヤで再生できる音声のフォーマットは、第一引数(config)に指定した パラメータによって決まります。
例えば、configのmax_sampling_rateに24000を設定した場合、作成されたプレーヤでは 24kHzを超えるサンプリングレートの音声データは再生できなくなります。
configにNULLを指定した場合、デフォルト設定( criAtomPlayer_SetDefaultConfigForRawPcmPlayer 適用時と同じパラメータ)でプレーヤを作成します。
プレーヤを作成する際には、ライブラリが内部で利用するためのメモリ領域(ワーク領域) を確保する必要があります。
ワーク領域を確保する方法には、以下の2通りの方法があります。
(a) User Allocator方式:メモリの確保/解放に、ユーザが用意した関数を使用する方法。
(b) Fixed Memory方式:必要なメモリ領域を直接ライブラリに渡す方法。
各方式の詳細については、別途 criAtomPlayer_CreateAdxPlayer 関数の説明をご参照ください。

criAtomPlayer_CreateRawPcmPlayer 関数を実行すると、Atomプレーヤが作成され、 プレーヤを制御するためのハンドル( CriAtomPlayerHn )が返されます。
データやデコーダのセット、再生の開始、ステータスの取得等、Atomプレーヤに対して 行う操作は、全てハンドルに対して行います。

作成されたAtomプレーヤハンドルを使用して音声データを再生する手順は以下のとおりです。
  1. criAtomPlayer_SetData 関数を使用して、Atomプレーヤに再生するデータをセットする。
    (ファイル再生時は、 criAtomPlayer_SetFile 関数または criAtomPlayer_SetContentId 関数を使用する。)
  2. criAtomPlayer_Start 関数で再生を開始する。
備考:
引数 config の情報は、関数内でのみ参照されます。
関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意:
本関数を実行する前に、ライブラリを初期化しておく必要があります。

ストリーム再生用のAtomプレーヤは、内部的にローダ( CriFsLoaderHn )を確保します。
ストリーム再生用のAtomプレーヤを作成する場合、プレーヤハンドル数分のローダが確保 できる設定でAtomライブラリ(またはCRI File Systemライブラリ)を初期化する 必要があります。

本関数は完了復帰型の関数です。
RawPCMプレーヤの作成にかかる時間は、プラットフォームによって異なります。
ゲームループ等の画面更新が必要なタイミングで本関数を実行するとミリ秒単位で 処理がブロックされ、フレーム落ちが発生する恐れがあります。
RawPCMプレーヤの作成/破棄は、シーンの切り替わり等、負荷変動を許容できる タイミングで行うようお願いいたします。
参照:
CriAtomRawPcmPlayerConfig, criAtomPlayer_CalculateWorkSizeForRawPcmPlayer, CriAtomPlayerHn, criAtomPlayer_Destroy, criAtomPlayer_SetData, criAtomPlayer_SetFile, criAtomPlayer_SetContentId, criAtomPlayer_Start, criAtomPlayer_CreateRawPcmPlayer
void CRIAPI criAtomPlayer_Destroy ( CriAtomPlayerHn  player)

Atomプレーヤの破棄

引数:
[in]playerAtomプレーヤハンドル
説明:
Atomプレーヤを破棄します。
本関数を実行した時点で、Atomプレーヤ作成時に確保されたリソースが全て解放されます。
また、引数に指定したAtomプレーヤハンドルも無効になります。
注意:
本関数は完了復帰型の関数です。
音声再生中のAtomプレーヤを破棄しようとした場合、本関数内で再生停止を 待ってからリソースの解放が行われます。
(ファイルから再生している場合は、さらに読み込み完了待ちが行われます。)
そのため、本関数内で処理が長時間(数フレーム)ブロックされる可能性があります。
Atomプレーヤの作成/破棄は、シーンの切り替わり等、負荷変動を許容できる タイミングで行うようお願いいたします。
参照:
criAtomPlayer_CreateAdxPlayer, CriAtomPlayerHn
void CRIAPI criAtomPlayer_SetData ( CriAtomPlayerHn  player,
void *  buffer,
CriSint32  buffer_size 
)

音声データのセット(オンメモリデータの指定)

引数:
[in]playerAtomプレーヤハンドル
[in]bufferバッファアドレス
[in]buffer_sizeバッファサイズ
説明:
メモリ上に配置された音声データを、Atomプレーヤに関連付けます。
本関数でメモリアドレスとサイズを指定後、 criAtomPlayer_Start 関数で再生を 開始すると、指定されたデータが再生されます。
例:
 main()
 {
        :
    // 音声データをセット
    criAtomPlayer_SetData(player, buffer, buffer_size);

    // セットされた音声データを再生
    criAtomPlayer_Start(player);
        :
 }
尚、一旦セットしたデータの情報は、他のデータがセットされるまでAtomプレーヤ内に保持 されます。
そのため、同じデータを何度も再生する場合には、再生毎にデータをセットしなおす必要 はありません。
備考:
データ要求コールバック関数( CriAtomPlayerDataRequestCbFunc )内で本関数を実行すると、 前回セットした音声の終端に連結して次のデータが再生されます。
例えば、以下のコードを実行すると、buffer1のデータとbuffer2のデータがシームレスに 連結して再生されます。
(その後はbuffer2のデータが繰り返し再生されます。)
 // データ要求コールバック関数
 void on_data_request(void *obj, CriAtomPlayerHn player)
 {
    // 続けて再生するデータをセット
    criAtomPlayer_SetData(player, buffer2, buffer_size2);
 }

 main()
 {
        :
    // データ要求コールバック関数の登録
    criAtomPlayer_SetDataRequestCallback(player, on_data_request, NULL);

    // 音声データをセット
    criAtomPlayer_SetData(player, buffer1, buffer_size1);

    // セットされた音声データを再生
    criAtomPlayer_Start(player);
        :
 }
データ要求コールバック関数内で criAtomPlayer_SetFile 関数を実行することで、 オンメモリデータとファイルを連結して再生することも可能です。
(ただし、先に再生するオンメモリデータが短すぎる場合、次に再生するファイルの 読み込みが間に合わず、音声が途切れる可能性があります。)
注意:
プレーヤが記憶するのはバッファのアドレスとサイズのみです。
(バッファ内のデータがコピーされるわけではありません。)
そのため、指定したデータの再生が終了するまでの間、 アプリケーション側でバッファを保持し続ける必要があります。

本関数は停止中のプレーヤに対してのみ実行可能です。
参照:
criAtomPlayer_Start
void CRIAPI criAtomPlayer_SetFile ( CriAtomPlayerHn  player,
CriFsBinderHn  binder,
const CriChar8 *  path 
)

音声データのセット(ファイルの指定)

引数:
[in]playerAtomプレーヤハンドル
[in]binderバインダハンドル
[in]pathファイルパス
説明:
音声ファイルをAtomプレーヤに関連付けます。
本関数でファイルを指定後、 criAtomPlayer_Start 関数で再生を開始すると、 指定されたファイルがストリーミング再生されます。
尚、本関数を実行した時点では、ファイルの読み込みは開始されません。
ファイルの読み込みが開始されるのは、 criAtomPlayer_Start 関数実行後です。
例:
 main()
 {
        :
    // 音声ファイルをセット
    criAtomPlayer_SetFile(player, NULL, "sample.adx");

    // セットされた音声データを再生
    criAtomPlayer_Start(player);
        :
 }
尚、一旦セットしたファイルの情報は、他のデータがセットされるまでAtomプレーヤ内に保持 されます。
そのため、同じデータを何度も再生する場合には、再生毎にデータをセットしなおす必要 はありません。
備考:
データ要求コールバック関数( CriAtomPlayerDataRequestCbFunc )内で本関数を実行すると、 前回セットした音声の終端に連結して次のデータが再生されます。
例えば、以下のコードを実行すると、"sample1.adx"と"sample2.adx"とがシームレスに 連結して再生されます。
(その後は"sample2.adx"が繰り返し再生されます。)
 // データ要求コールバック関数
 void on_data_request(void *obj, CriAtomPlayerHn player)
 {
    // 続けて再生するファイルをセット
    criAtomPlayer_SetFile(player, NULL, "sample2.adx");
 }

 main()
 {
        :
    // データ要求コールバック関数の登録
    criAtomPlayer_SetDataRequestCallback(player, on_data_request, NULL);

    // 音声ファイルをセット
    criAtomPlayer_SetFile(player, NULL, "sample1.adx");

    // セットされた音声データを再生
    criAtomPlayer_Start(player);
        :
 }
尚、第二引数(binder)にバインダを指定することで、 CPKファイル内のコンテンツを再生することも可能です。
 main()
 {
        :
    // CPKファイルをバインド
    criFsBinder_BindCpk(binder, "sample.cpk", work, work_size, &bind_id);

    // バインド完了待ち
    for (;;) {
        // ステータスのチェック
        criFsBinder_GetStatus(binder, &status);
        if (status == CRIFSBINDER_STATUS_COMPLETE) {
            break;
        }

        // サーバ処理の実行
        criFs_ExecuteMain();

        // Vsync待ち等
            :
    }
        :
    // 音声ファイルをセット
    // sample.cpk内のcontent.adxをセット
    criAtomPlayer_SetFile(player, binder, "content.adx");

    // セットされた音声データを再生
    criAtomPlayer_Start(player);
        :
 }
データ要求コールバック関数内で criAtomPlayer_SetData 関数を実行することで、 ファイルとオンメモリデータを連結して再生することも可能です。
注意:
ファイルからの再生を行う場合には、ストリーミング再生に対応した Atomプレーヤを使用する必要があります。
CriAtomAdxPlayerConfig のstreaming_flagにCRI_TRUEを設定して Atomプレーヤを作成する必要があります。)

本関数は停止中のプレーヤに対してのみ実行可能です。
参照:
CriAtomAdxPlayerConfig, criAtomPlayer_CreateAdxPlayer, criAtomPlayer_Start
void CRIAPI criAtomPlayer_SetContentId ( CriAtomPlayerHn  player,
CriFsBinderHn  binder,
CriSint32  id 
)

音声データのセット(CPKコンテンツIDの指定)

引数:
[in]playerAtomプレーヤハンドル
[in]binderバインダハンドル
[in]idコンテンツID
説明:
コンテンツをAtomプレーヤに関連付けます。
CRI File Systemライブラリを使用してCPKファイル内のコンテンツファイルを ID指定で再生するために使用します。
本関数にバインダとコンテンツIDを指定後、 criAtomPlayer_Start 関数で再生を 開始すると、指定されたコンテンツファイルがストリーミング再生されます。
尚、本関数を実行した時点では、ファイルの読み込みは開始されません。
ファイルの読み込みが開始されるのは、 criAtomPlayer_Start 関数実行後です。
例:
 main()
 {
        :
    // CPKファイルをバインド
    criFsBinder_BindCpk(binder, "sample.cpk", work, work_size, &bind_id);

    // バインド完了待ち
    for (;;) {
        // ステータスのチェック
        criFsBinder_GetStatus(binder, &status);
        if (status == CRIFSBINDER_STATUS_COMPLETE) {
            break;
        }

        // サーバ処理の実行
        criFs_ExecuteMain();

        // Vsync待ち等
            :
    }
        :
    // 音声ファイルをセット
    // sample.cpk内の1番のコンテンツをセット
    criAtomPlayer_SetContentId(player, binder, 1);

    // セットされた音声データを再生
    criAtomPlayer_Start(player);
        :
 }
尚、一旦セットしたファイルの情報は、他のデータがセットされるまでAtomプレーヤ内に保持 されます。
そのため、同じデータを何度も再生する場合には、再生毎にデータをセットしなおす必要 はありません。
備考:
データ要求コールバック関数( CriAtomPlayerDataRequestCbFunc )内で本関数を実行すると、 前回セットした音声の終端に連結して次のデータが再生されます。
例えば、以下のコードを実行すると、1番のデータと2番のデータとがシームレスに 連結して再生されます。
(その後は2番のデータが繰り返し再生されます。)
 // データ要求コールバック関数
 void on_data_request(void *obj, CriAtomPlayerHn player)
 {
    // バインダの取得
    binder = (CriFsBinderHn)obj;

    // 続けて再生するファイルをセット
    // →バインダ内の2番のコンテンツをセット
    criAtomPlayer_SetContentId(player, binder, 2);
 }

 main()
 {
        :
    // データ要求コールバック関数の登録
    criAtomPlayer_SetDataRequestCallback(player, on_data_request, binder);

    // 音声ファイルをセット
    // →バインダ内の1番のコンテンツをセット
    criAtomPlayer_SetContentId(player, binder, 1);

    // セットされた音声データを再生
    criAtomPlayer_Start(player);
        :
 }
データ要求コールバック関数内で criAtomPlayer_SetData 関数を実行することで、 ファイルとオンメモリデータを連結して再生することも可能です。
注意:
ファイルからの再生を行う場合には、ストリーミング再生に対応した Atomプレーヤを使用する必要があります。
CriAtomAdxPlayerConfig のstreaming_flagにCRI_TRUEを設定して Atomプレーヤを作成する必要があります。)

本関数は停止中のプレーヤに対してのみ実行可能です。
参照:
CriAtomAdxPlayerConfig, criAtomPlayer_CreateAdxPlayer, criAtomPlayer_Start
void CRIAPI criAtomPlayer_SetWaveId ( CriAtomPlayerHn  player,
CriAtomAwbHn  awb,
CriSint32  id 
)

音声データのセット(音声データIDの指定)

引数:
[in]playerAtomプレーヤハンドル
[in]awbAWBハンドル
[in]id波形データID
説明:
再生する波形データをAtomプレーヤに関連付けます。
本関数にAWBハンドルと波形データIDを指定後、 criAtomPlayer_Start 関数で再生を 開始すると、指定した波形データがストリーミング再生されます。
尚、本関数を実行した時点では、ファイルの読み込みは開始されません。
ファイルの読み込みが開始されるのは、 criAtomPlayer_Start 関数実行後です。
例:
 main()
 {
        :
    // AWBのTOC情報をロードしてAWBハンドルを作成
    awb = criAtomAwb_LoadToc(NULL, "sample.awb", NULL, 0);
        :
    // 波形データをセット
    // AWB内の1番の波形データをセット
    criAtomPlayer_SetWaveId(player, awb, 1);

    // セットされた音声データを再生
    criAtomPlayer_Start(player);
        :
 }
尚、一旦セットしたファイルの情報は、他のデータがセットされるまでAtomプレーヤ内に保持 されます。
そのため、同じデータを何度も再生する場合には、再生毎にデータをセットしなおす必要 はありません。
備考:
データ要求コールバック関数( CriAtomPlayerDataRequestCbFunc )内で本関数を実行すると、 前回セットした音声の終端に連結して次のデータが再生されます。
例えば、以下のコードを実行すると、1番のデータと2番のデータとがシームレスに 連結して再生されます。
(その後は2番のデータが繰り返し再生されます。)
 // データ要求コールバック関数
 void on_data_request(void *obj, CriAtomPlayerHn player)
 {
    // AWBハンドルの取得
    awb = (CriAtomAwbHn)obj;

    // 続けて再生するファイルをセット
    // →AWB内の2番の波形データをセット
    criAtomPlayer_SetWaveId(player, awb, 2);
 }

 main()
 {
        :
    // データ要求コールバック関数の登録
    criAtomPlayer_SetDataRequestCallback(player, on_data_request, awb);

    // 波形データをセット
    // →AWB内の1番の波形データをセット
    criAtomPlayer_SetWaveId(player, awb, 1);

    // セットされた波形データを再生
    criAtomPlayer_Start(player);
        :
 }
データ要求コールバック関数内で criAtomPlayer_SetData 関数を実行することで、 ファイルとオンメモリデータを連結して再生することも可能です。
注意:
ファイルからの再生を行う場合には、ストリーミング再生に対応した Atomプレーヤを使用する必要があります。
CriAtomAdxPlayerConfig のstreaming_flagにCRI_TRUEを設定して Atomプレーヤを作成する必要があります。)

本関数は停止中のプレーヤに対してのみ実行可能です。
参照:
CriAtomAdxPlayerConfig, criAtomPlayer_CreateAdxPlayer, criAtomPlayer_Start
void CRIAPI criAtomPlayer_SetPreviousDataAgain ( CriAtomPlayerHn  player)

同一音声データの再セット

引数:
[in]playerAtomプレーヤハンドル
説明:
前回再生したデータを、再度再生するようAtomプレーヤに指示します。
例:
以下の処理により、同一音声データを無限にループ再生可能です。
 // データ要求コールバック関数
 void on_data_request(void *obj, CriAtomPlayerHn player)
 {
    // 前回再生したデータを再セット
    criAtomPlayer_SetPreviousDataAgain(player);
 }

 main()
 {
        :
    // データ要求コールバック関数の登録
    criAtomPlayer_SetDataRequestCallback(player, on_data_request, NULL);

    // 音声データをセット
    criAtomPlayer_SetData(player, buffer, buffer_size);

    // セットされた音声データを再生
    criAtomPlayer_Start(player);
        :
 }
注意:
本関数はデータ要求コールバック関数内でのみ使用します。
(データ要求コールバック関数外でも実行可能ですが、その場合何の効果もありません。)
参照:
criAtomPlayer_SetDataRequestCallback
void CRIAPI criAtomPlayer_DeferCallback ( CriAtomPlayerHn  player)

コールバック関数の再実行要求

引数:
[in]playerAtomプレーヤハンドル
説明:
データ要求コールバック関数の処理を先延ばしします。
データ要求コールバック関数が実行された時点で、次に再生する音声データが まだ決まっていない場合、本関数を実行することで、コールバック関数をリトライ することが可能になります。
(数ミリ秒後に再度データ要求コールバック関数が呼ばれます。)
備考:
データ要求コールバック関数内で何もしなかった場合、Atomプレーヤのステータスは CRIATOMPLAYER_STATUS_PLAYEND に遷移します。
しかし、データ要求コールバック関数内で本関数を実行した場合、Atomプレーヤの ステータスは CRIATOMPLAYER_STATUS_PLAYING を維持し続けます。
注意:
本関数を実行した場合、Atomプレーヤのステータスは CRIATOMPLAYER_STATUS_PLAYING を維持し続けますが、音声出力は途切れる可能性があります。
(データの読み込みが間に合わない場合、前回再生した音声と、次にセットする音声 との間に、無音が入る可能性があります。)

本関数はデータ要求コールバック関数内でのみ使用可能です。
(データ要求コールバック関数外で実行した場合、エラーが発生します。)
参照:
criAtomPlayer_SetDataRequestCallback
void CRIAPI criAtomPlayer_Start ( CriAtomPlayerHn  player)

再生の開始

引数:
[in]playerAtomプレーヤハンドル
説明:
音声データの再生処理を開始します。
本関数を実行する前に、事前に criAtomPlayer_SetData 関数等を使用し、再生する 音声データをAtomプレーヤにセットしておく必要があります。
例えば、オンメモリの音声データを再生する場合には、以下のように事前に criAtomPlayer_SetData 関数を使って音声データをセットした後、本関数を実行する 必要があります。
 main()
 {
        :
    // 音声データをセット
    criAtomPlayer_SetData(player, buffer, buffer_size);

    // セットされた音声データを再生
    criAtomPlayer_Start(player);
        :
 }
本関数実行後、再生の進み具合(発音が開始されたか、再生が完了したか等)がどうなって いるかは、ステータスを取得することで確認が可能です。
ステータスの取得には、 criAtomPlayer_GetStatus 関数を使用します。
criAtomPlayer_GetStatus 関数は以下の5通りのステータスを返します。
  1. CRIATOMPLAYER_STATUS_STOP
  2. CRIATOMPLAYER_STATUS_PREP
  3. CRIATOMPLAYER_STATUS_PLAYING
  4. CRIATOMPLAYER_STATUS_PLAYEND
  5. CRIATOMPLAYER_STATUS_ERROR
Atomプレーヤを作成した時点では、Atomプレーヤのステータスは停止状態 ( CRIATOMPLAYER_STATUS_STOP )です。
再生する音声データをセット後、本関数を実行することで、Atomプレーヤのステータスが 準備状態( CRIATOMPLAYER_STATUS_PREP )に変更されます。
(CRIATOMPLAYER_STATUS_PREP は、データ供給やデコードの開始を待っている状態です。)
再生の開始に充分なデータが供給された時点で、Atomプレーヤはステータスを 再生状態( CRIATOMPLAYER_STATUS_PLAYING )に変更し、音声の出力を開始します。
セットされたデータを全て再生し終えると、Atomプレーヤはステータスを再生終了状態 ( CRIATOMPLAYER_STATUS_PLAYEND )に変更します。
尚、再生中にエラーが発生した場合には、Atomプレーヤはステータスをエラー状態 ( CRIATOMPLAYER_STATUS_ERROR )に変更します。

Atomプレーヤのステータスをチェックし、ステータスに応じて処理を切り替えることで、 音声の再生状態に連動したプログラムを作成することが可能です。
例えば、音声の再生完了を待って処理を進めたい場合には、以下のようなコードになります。
 main()
 {
        :
    // 音声データをセット
    criAtomPlayer_SetData(player, buffer, buffer_size);

    // セットされた音声データを再生
    criAtomPlayer_Start(player);

    // 再生完了待ち
    for (;;) {
        // ステータスの取得
        status = criAtomPlayer_GetStatus(player);

        // ステータスのチェック
        if (status == CRIATOMPLAYER_STATUS_PLAYEND) {
            // 再生終了時はループを抜ける
            break;
        }

        // サーバ処理の実行
        criAtom_ExecuteMain();

        // 画面表示の更新等
            :
    }
        :
 }
備考:
再生開始後、実際に音声が出力されるまでには、タイムラグがあります。
オンメモリのデータ再生時( criAtomPlayer_SetData 関数でデータをセットした場合)は、 本関数実行後、最初にサーバ処理が実行されたタイミングでステータスが CRIATOMPLAYER_STATUS_PLAYING に遷移します。
しかし、ストリーミング再生時は、再生を維持するために必要なデータが充分バッファリング されるまでの間、CRIATOMPLAYER_STATUS_PREP を維持し続けます。
(必要充分なデータが供給された時点で、 CRIATOMPLAYER_STATUS_PLAYING に遷移します。)

尚、ステータスが CRIATOMPLAYER_STATUS_PLAYING に遷移するタイミングは、 あくまで"サウンドライブラリに対して再生指示を発行する"タイミングになります。
そのため、実際にスピーカーから音が出るタイミングは、各プラットフォームのサウンド ライブラリの処理時間に依存します。

ストリーミング再生時に発音が開始されるタイミングは、同時にストリーミング再生を行う 音声の数や、デバイスの読み込み速度によって変化します。
ストリーミング再生時に意図としたタイミングで発音を開始させたい場合には、 criAtomPlayer_Pause 関数で事前にポーズをかけておき、Atomプレーヤのステータスが CRIATOMPLAYER_STATUS_PLAYING に遷移した時点で、ポーズを解除してください。
(ポーズをかけた状態でステータスが CRIATOMPLAYER_STATUS_PLAYING に遷移した場合、 ポーズ解除後最初のサーバ処理が実行されたタイミングで、発音が開始されます。

具体的なコードは以下のとおりです。
 main()
 {
        :
    // 音声ファイルをセット
    criAtomPlayer_SetData(player, NULL, "sample.adx");

    // 再生開始前にポーズをかけておく
    criAtomPlayer_Pause(player, CRI_TRUE);

    // セットされた音声データを再生
    criAtomPlayer_Start(player);

    // ステータスがCRIATOMPLAYER_STATUS_PLAYINGに遷移するのを待つ
    for (;;) {
        // ステータスの取得
        status = criAtomPlayer_GetStatus(player);

        // ステータスのチェック
        if (status == CRIATOMPLAYER_STATUS_PLAYING) {
            // CRIATOMPLAYER_STATUS_PLAYING状態になった時点でループを抜ける
            break;
        }

        // サーバ処理の実行
        criAtom_ExecuteMain();

        // 画面表示の更新等
            :
    }

    // ポーズの解除
    // →次のサーバ処理が実行されるタイミングで発音が開始される
    criAtomPlayer_Pause(player, CRI_FALSE);
        :
 }
注意:
既に再生を開始したAtomプレーヤに対して本関数を実行することはできません。
(ADXライブラリとは異なり、再生中のAtomプレーヤに対して再度再生の開始を指示した場合、 エラーになります。)
Atomプレーヤに対して再生を指示する場合には、必ず事前にステータスをチェックし、 ステータスが準備中( CRIATOMPLAYER_STATUS_PREP )や再生中( CRIATOMPLAYER_STATUS_PLAYING ) になっていないことをご確認ください。
参照:
criAtomPlayer_SetData, criAtomPlayer_SetFile, criAtomPlayer_GetStatus, criAtomPlayer_Pause, criAtom_ExecuteMain
void CRIAPI criAtomPlayer_Stop ( CriAtomPlayerHn  player)

再生の停止

引数:
[in]playerAtomプレーヤハンドル
説明:
再生の停止要求を発行します。
音声再生中のAtomプレーヤに対して本関数を実行すると、Atomプレーヤは再生を停止 (ファイルの読み込みや、発音を止める)し、ステータスを停止状態 ( CRIATOMPLAYER_STATUS_STOP )に遷移します。
既に停止しているAtomプレーヤ(ステータスが CRIATOMPLAYER_STATUS_PLAYEND や CRIATOMPLAYER_STATUS_ERROR のAtomプレーヤ) に対して本関数を実行すると、 Atomプレーヤのステータスを CRIATOMPLAYER_STATUS_STOP に変更します。
注意:
音声再生中のAtomプレーヤに対して本関数を実行した場合、ステータスが即座に CRIATOMPLAYER_STATUS_STOP になるとは限りません。
(停止状態になるまでに、時間がかかる場合があります。)
そのため、本関数で再生を停止後、続けて別の音声データを再生する場合には、 必ずステータスが CRIATOMPLAYER_STATUS_STOP に遷移したことを確認してから 次のデータをセット(または再生の開始)を行ってください。

 main()
 {
        :
    // 再生の停止を要求
    criAtomPlayer_Stop(player);

    // ステータスがCRIATOMPLAYER_STATUS_STOPに遷移するのを待つ
    for (;;) {
        // ステータスの取得
        status = criAtomPlayer_GetStatus(player);

        // ステータスのチェック
        if (status == CRIATOMPLAYER_STATUS_STOP) {
            // CRIATOMPLAYER_STATUS_STOP状態になった時点でループを抜ける
            break;
        }

        // サーバ処理の実行
        criAtom_ExecuteMain();

        // 画面表示の更新等
            :
    }

    // 別の音声ファイルをセット
    criAtomPlayer_SetData(player, NULL, "sample.adx");

    // セットされた音声データを再生
    criAtomPlayer_Start(player);
        :
 }
参照:
criAtomPlayer_Start, criAtomPlayer_GetStatus
void CRIAPI criAtomPlayer_Pause ( CriAtomPlayerHn  player,
CriBool  flag 
)

再生のポーズ/ポーズ解除

引数:
[in]playerAtomプレーヤハンドル
[in]flag動作フラグ(CRI_TRUE = ポーズ、CRI_FALSE = ポーズ解除)
説明:
再生をポーズ(一時停止)したり、ポーズを解除します。
ポーズするか、ポーズを解除するかは、引数のflagで指定します。
flagにCRI_TRUEを指定した場合、再生はポーズされます。
flagにCRI_FALSEを指定した場合、ポーズが解除されます。
Atomプレーヤがポーズされているかどうかは criAtomPlayer_IsPaused 関数を使用する ことで確認が可能です。

本関数は主に以下の2通りの用途に利用します。
  • 音声出力の一時停止/一時停止解除。
  • ストリーミング再生の頭出し。

【音声出力の一時停止/一時停止解除について】 再生中のAtomプレーヤに対してポーズを行うと、その時点で音声の出力を中断します。
ポーズされたAtomプレーヤに対してポーズ解除を行うと、ポーズ時に中断された箇所から 再生が再開されます。

【ストリーミング再生の頭出しについて】 ポーズ処理は再生開始前のAtomプレーヤに対しても有効です。
再生開始前のAtomプレーヤに対してポーズをかけた場合、ポーズされたAtomプレーヤに criAtomPlayer_Start 関数で再生指示しても、音声の出力は行われません。
しかし、再生準備は行われるため、データが充分に供給されていれば、ステータスは CRIATOMPLAYER_STATUS_PLAYING まで遷移します。

ステータスが CRIATOMPLAYER_STATUS_PLAYING の状態でポーズされているAtomプレーヤ については、ポーズ解除を行ったタイミングで発音を開始させることが可能です。
そのため、以下の処理手順を踏むことで、ストリーミング再生の発音タイミングを 他のアクションに同期させることが可能です。
  1. criAtomPlayer_Pause 関数でAtomプレーヤをポーズさせる。
  2. criAtomPlayer_Start 関数でAtomプレーヤに再生開始を指示する。
  3. Atomプレーヤのステータスが CRIATOMPLAYER_STATUS_PLAYING になるのを待つ。
  4. 発音を開始したいタイミングで criAtomPlayer_Pause 関数を実行し、ポーズを解除する。

具体的なコードは以下のとおりです。
 main()
 {
        :
    // 音声ファイルをセット
    criAtomPlayer_SetData(player, NULL, "sample.adx");

    // 再生開始前にポーズをかけておく
    criAtomPlayer_Pause(player, CRI_TRUE);

    // セットされた音声データを再生
    criAtomPlayer_Start(player);

    // ステータスがCRIATOMPLAYER_STATUS_PLAYINGに遷移するのを待つ
    for (;;) {
        // ステータスの取得
        status = criAtomPlayer_GetStatus(player);

        // ステータスのチェック
        if (status == CRIATOMPLAYER_STATUS_PLAYING) {
            // CRIATOMPLAYER_STATUS_PLAYING状態になった時点でループを抜ける
            break;
        }

        // サーバ処理の実行
        criAtom_ExecuteMain();

        // 画面表示の更新等
            :
    }

    // ポーズの解除
    // →次のサーバ処理が実行されるタイミングで発音が開始される
    criAtomPlayer_Pause(player, CRI_FALSE);
        :
 }
備考:
厳密には、 criAtomPlayer_Pause 関数実行後、最初にサーバ処理が動作した時点で ポーズ処理が行われます。
そのため、サーバ処理が実行される前にポーズ⇒ポーズ解除の操作が行われた場合を 行うと、音声が止まることなく再生が進むことになります。
尚、ポーズされたAtomプレーヤに対して再度ポーズを行ったり、ポーズされていない Atomプレーヤに対してポーズ解除を行っても、エラーは発生しません。
(何も処理されずに関数を抜けます。)
参照:
criAtomPlayer_IsPaused, criAtomPlayer_Start
CriBool CRIAPI criAtomPlayer_IsPaused ( CriAtomPlayerHn  player)

ポーズされているかどうかのチェック

引数:
[in]playerAtomプレーヤハンドル
戻り値:
CriBool ポーズ状態(CRI_TRUE = ポーズされている、CRI_FALSE = ポーズされていない)
説明:
Atomプレーヤがポーズされているかどうかをチェックします。
ポーズされているかどうかは、引数のflagにセットされる値で判定します。
flagがCRI_TRUEだった場合、Atomプレーヤはポーズされています。
flagがCRI_FALSEだった場合、Atomプレーヤはポーズされていません。
備考:
本関数は criAtomPlayer_Pause 関数で指定された動作フラグをそのまま返します。
criAtomPlayer_Pause 関数の第2引数にセットした値がflagとして返されます。)
そのため、本関数の結果と実際に音声出力が停止しているかどうかは、必ずしも一致するとは 限りません。
criAtomPlayer_Pause 関数の実行タイミングと、実際に音声出力が停止するタイミングに タイムラグが存在するため。)
参照:
criAtomPlayer_Pause
CriAtomPlayerStatus CRIAPI criAtomPlayer_GetStatus ( CriAtomPlayerHn  player)

ステータスの取得

引数:
[in]playerAtomプレーヤハンドル
戻り値:
CriAtomPlayerStatus ステータス
説明:
Atomプレーヤのステータスを取得します。
ステータスはAtomプレーヤの再生状態を示す値で、以下の5通りの値が存在します。
  1. CRIATOMPLAYER_STATUS_STOP
  2. CRIATOMPLAYER_STATUS_PREP
  3. CRIATOMPLAYER_STATUS_PLAYING
  4. CRIATOMPLAYER_STATUS_PLAYEND
  5. CRIATOMPLAYER_STATUS_ERROR
Atomプレーヤを作成した時点では、Atomプレーヤのステータスは停止状態 ( CRIATOMPLAYER_STATUS_STOP )です。
再生する音声データをセット後、::criAtomPlayer_Start 関数を実行することで、 Atomプレーヤのステータスが準備状態( CRIATOMPLAYER_STATUS_PREP )に変更されます。
CRIATOMPLAYER_STATUS_PREP は、データ供給やデコードの開始を待っている状態です。)
再生の開始に充分なデータが供給された時点で、Atomプレーヤはステータスを 再生状態( CRIATOMPLAYER_STATUS_PLAYING )に変更し、音声の出力を開始します。
セットされたデータを全て再生し終えると、Atomプレーヤはステータスを再生終了状態 ( CRIATOMPLAYER_STATUS_PLAYEND )に変更します。
尚、再生中にエラーが発生した場合には、Atomプレーヤはステータスをエラー状態 ( CRIATOMPLAYER_STATUS_ERROR )に変更します。

Atomプレーヤのステータスをチェックし、ステータスに応じて処理を切り替えることで、 音声の再生状態に連動したプログラムを作成することが可能です。
例えば、音声の再生完了を待って処理を進めたい場合には、以下のようなコードになります。
 main()
 {
        :
    // 音声データをセット
    criAtomPlayer_SetData(player, buffer, buffer_size);

    // セットされた音声データを再生
    criAtomPlayer_Start(player);

    // 再生完了待ち
    for (;;) {
        // ステータスの取得
        status = criAtomPlayer_GetStatus(player);

        // ステータスのチェック
        if (status == CRIATOMPLAYER_STATUS_PLAYEND) {
            // 再生終了時はループを抜ける
            break;
        }

        // サーバ処理の実行
        criAtom_ExecuteMain();

        // 画面表示の更新等
            :
    }
        :
 }
備考:
デバイスからのデータ読み込みに失敗した場合や、データエラーが発生した場合 (不正なデータを読み込んだ場合)、Atomプレーヤのステータスはエラー状態になります。
データ読み込みエラー発生時にアプリケーションでエラーメッセージ等を表示する場合には、 ステータスが CRIATOMPLAYER_STATUS_ERROR になっていないかどうかをチェックし、 適宜エラーメッセージの表示を行ってください。
 main()
 {
        :
    // ステータスの取得
    status = criAtomPlayer_GetStatus(player);

    // ステータスのチェック
    if (status == CRIATOMPLAYER_STATUS_ERROR) {
        // CRIATOMPLAYER_STATUS_ERRORになった時点でエラーメッセージを表示する
            :
    }
        :
 }
参照:
criAtomPlayer_Start
CriSint32 CRIAPI criAtomPlayer_GetNumChannels ( CriAtomPlayerHn  player)

チャンネル数の取得

引数:
[in]playerAtomプレーヤハンドル
戻り値:
CriSint32 チャンネル数
説明:
Atomプレーヤで再生中の音声について、チャンネル数を取得します。

チャンネル数が取得できなかった場合、本関数は -1 を返します。
注意:
再生時刻は、プレーヤのステータスが CRIATOMPLAYER_STATUS_PLAYING になるまで取得できません。
CRIATOMPLAYER_STATUS_PREP 時に本関数を実行した場合、エラー値が返されます。)
CriBool CRIAPI criAtomPlayer_GetNumPlayedSamples ( CriAtomPlayerHn  player,
CriSint64 *  num_played,
CriSint32 *  sampling_rate 
)

再生済みサンプル数の取得

引数:
[in]playerAtomプレーヤハンドル
[out]num_played再生済みサンプル数(サンプル数単位)
[out]sampling_rateサンプリングレート(Hz単位)
戻り値:
CriBool サンプル数が取得できたかどうか( CRI_TRUE = 取得できた、 CRI_FALSE = 取得できなかった)
説明:
Atomプレーヤで再生中の音声について、再生済みのサンプル数、 およびサンプリングレートを取得します。
再生時刻はサンプル数単位、サンプリングレートはHz単位です。

サンプル数が正しく取得できた場合、戻り値は CRI_TRUE になります。
再生済みサンプル数が取得できなかった場合、戻り値は CRI_FALSE になります。
(同時に、 sampling_rate は -1 になります。)
備考
取得する必要のない引数については、 NULL を指定可能です。
例えば、サンプリングレートのみを取得したい場合、第2引数( num_played ) には NULL を指定可能です。
本関数が返す再生済みサンプル数は、出力済み音声データの累積値です。
そのため、ループ再生時や、シームレス連結再生時を行った場合でも、 再生位置に応じてサンプル数が巻き戻ることはありません。
また、 criAtomPlayer_Pause 関数でポーズをかけた場合、 再生済みサンプル数のカウントアップも停止します。
(ポーズを解除すればカウントアップが再開されます。)
注意:
再生済みサンプル数は、プレーヤのステータスが CRIATOMPLAYER_STATUS_PLAYING になるまで取得できません。
CRIATOMPLAYER_STATUS_PREP 時に本関数を実行した場合、エラー値が返されます。)

再生サンプル数の精度は、プラットフォームのサウンドライブラリに依存します。
CriSint64 CRIAPI criAtomPlayer_GetDecodedDataSize ( CriAtomPlayerHn  player)

デコードデータサイズの取得

引数:
[in]playerAtomプレーヤハンドル
戻り値:
CriSint64 デコードデータ量(単位はバイト)
説明:
Atomプレーヤ内でデコードした音声データのバイト数を返します。
備考
本関数が返すデコード量は、再生開始時点からの累積値です。
そのため、ループ再生時や、シームレス連結再生時を行った場合でも、 再生位置に応じてデコード量が巻き戻ることはありません。
また、 criAtomPlayer_Pause 関数でポーズをかけた場合、 デコード量のカウントアップも停止します。
(ポーズを解除すればカウントアップが再開されます。)
注意:
HCA-MXを使用する場合や、圧縮された音声データを直接ハードウェアに送信するプラットフォーム (デコード処理がプラットフォームSDKに隠蔽されているコーデック) については、本関数でデコード量を取得できません。
CriSint64 CRIAPI criAtomPlayer_GetNumDecodedSamples ( CriAtomPlayerHn  player)

デコードサンプル数の取得

引数:
[in]playerAtomプレーヤハンドル
戻り値:
CriSint64 デコードサンプル数
説明:
Atomプレーヤ内でデコードした音声データのバイト数を返します。
備考
本関数が返すデコードサンプル数は、再生開始時点からの累積値です。
そのため、ループ再生時や、シームレス連結再生時を行った場合でも、 再生位置に応じてデコードサンプル数が巻き戻ることはありません。
また、 criAtomPlayer_Pause 関数でポーズをかけた場合、 デコードサンプル数のカウントアップも停止します。
(ポーズを解除すればカウントアップが再開されます。)
注意:
HCA-MXを使用する場合や、圧縮された音声データを直接ハードウェアに送信するプラットフォーム (デコード処理がプラットフォームSDKに隠蔽されているコーデック) については、本関数でデコードサンプル数を取得できません。
CriSint64 CRIAPI criAtomPlayer_GetTime ( CriAtomPlayerHn  player)

再生時刻の取得

引数:
[in]playerAtomプレーヤハンドル
戻り値:
CriSint64 再生時刻(ミリ秒単位)
説明:
Atomプレーヤで再生中の音声について、現在の再生時刻を取得します。
再生時刻の単位はミリ秒単位です。

引数に誤りがある場合( player が NULL の場合)、本関数は -1 を返します。
停止中や再生準備中等、再生時刻が取得できないタイミングで本関数を実行した場合、 本関数は 0 を返します。
備考
再生時刻は再生済みサンプル数を元に計算されています。
そのため、 criAtomPlayer_SetFrequencyRatio 関数を用いてピッチを上げた場合、 再生時刻は実時間よりも早く進みます。
(ピッチを下げた場合、再生時刻は実時刻よりも遅く進みます。)

本関数が返す再生時刻は、出力済み音声データの累積値です。
そのため、ループ再生時や、シームレス連結再生時を行った場合でも、 再生位置に応じて時刻が巻き戻ることはありません。
また、 criAtomPlayer_Pause 関数でポーズをかけた場合、 再生時刻のカウントアップも停止します。
(ポーズを解除すればカウントアップが再開されます。)
注意:
再生時刻は、プレーヤのステータスが CRIATOMPLAYER_STATUS_PLAYING になるまで取得できません。
CRIATOMPLAYER_STATUS_PREP 時に本関数を実行した場合、 0 が返されます。)

再生時刻の精度は、プラットフォームのサウンドライブラリに依存します。
参照:
criAtomPlayer_GetStatus, criAtomPlayer_SetFrequencyRatio
CriBool CRIAPI criAtomPlayer_GetFormatInfo ( CriAtomPlayerHn  player,
CriAtomFormatInfo info 
)

再生音声のフォーマット情報の取得

引数:
[in]playerAtomプレーヤハンドル
[out]infoフォーマット情報
戻り値:
CriBool 情報が取得できたかどうか( CRI_TRUE = 取得できた、 CRI_FALSE = 取得できなかった)
説明:
criAtomPlayer_Start 関数で再生された音声のフォーマット情報を取得します。

フォーマット情報が取得できた場合、本関数は CRI_TRUE を返します。
フォーマット情報が取得できなかった場合、本関数は CRI_FALSE を返します。
注意:
本関数は、音声再生中のみフォーマット情報を取得可能です。
再生開始前や再生準備中に本関数を実行すると、フォーマット情報の取得に失敗します。
参照:
criAtomPlayer_Start, criAtomPlayer_GetStatus
CriSint32 CRIAPI criAtomPlayer_GetInputBufferRemainSize ( CriAtomPlayerHn  player)

入力バッファ内データ残量の取得

引数:
[in]playerAtomプレーヤハンドル
戻り値:
CriSint32 入力バッファ内のデータ残量(Byte単位)
説明:
Atomプレーヤの入力バッファ内のデータ残量を取得します。
備考:
本関数は情報取得用途にのみに利用可能なデバッグ関数です。

音途切れの不具合が発生した際、本関数を使用して再生中のプレーヤの 入力バッファにデータが残っているかどうかをチェック可能です。
プレーヤのステータスが CRIATOMPLAYER_STATUS_PLAYING にもかかわらず、 データ残量が長時間 0 の場合、何らかの異常によりデータの供給が ブロックされている可能性があります。
CriSint32 CRIAPI criAtomPlayer_GetOutputBufferRemainSamples ( CriAtomPlayerHn  player)

出力バッファ内データ残量の取得

引数:
[in]playerAtomプレーヤハンドル
戻り値:
CriSint32 出力バッファ内のデータ残量(サンプル数単位)
説明:
Atomプレーヤの出力バッファ内のデータ残量を取得します。
備考:
本関数は情報取得用途にのみに利用可能なデバッグ関数です。

音途切れの不具合が発生した際、本関数を使用して再生中のプレーヤの 出力バッファにデータが残っているかどうかをチェック可能です。
プレーヤのステータスが CRIATOMPLAYER_STATUS_PLAYING にもかかわらず、 データ残量が長時間 0 の場合、何らかの異常によりデコード処理が 行われていない可能性があります。
注意:
本関数は、音声データをAtomライブラリ内でデコードするケースについてのみ有効です。
圧縮された音声データを直接ハードウェアに送信するプラットフォーム (デコード処理がプラットフォームSDKに隠蔽されているコーデック) については、本関数でデータ残量を取得できません。
void CRIAPI criAtomPlayer_SetStartTime ( CriAtomPlayerHn  player,
CriSint64  start_time_ms 
)

再生開始位置の指定

引数:
[in]playerAtomプレーヤハンドル
[in]start_time_ms再生開始位置(ミリ秒指定)
説明:
Atomプレーヤで再生する音声について、再生を開始する位置を指定します。
音声データを途中から再生したい場合、再生開始前に本関数で再生開始位置を 指定する必要があります。

再生開始位置の指定はミリ秒単位で行います。
例えば、 start_time_ms に 10000 をセットして本関数を実行すると、 次に再生する音声データは 10 秒目の位置から再生されます。
備考
本関数で再生位置を指定した場合でも、指定した時刻ぴったりの位置から再生が 開始されるとは限りません。
(使用する音声コーデックによっては、指定時刻の少し手前から再生が開始されます。)

音声データ途中からの再生は、音声データ先頭からの再生に比べ、発音開始の タイミングが遅くなります。
これは、一旦音声データのヘッダを解析後、指定位置にジャンプしてからデータを読み 直して再生を開始するためです。
注意:
start_time_ms には64bit値をセット可能ですが、現状、32bit以上の再生時刻を 指定することはできません。

音声再生中に本関数を実行しても、再生中の音声の再生位置は変更されません。
本関数で設定した値は、 criAtomPlayer_Start 関数で音声の再生を開始する タイミングでのみ参照されます。

機種固有の音声フォーマットについても、再生開始位置を指定できない場合があります。
参照:
criAtomPlayer_Start
void CRIAPI criAtomPlayer_SetVolume ( CriAtomPlayerHn  player,
CriFloat32  vol 
)

ボリュームの指定

引数:
[in]playerAtomプレーヤハンドル
[in]volボリューム値
説明:
出力音声のボリュームを指定します。
本関数を使用することで、Atomプレーヤで再生する音声のボリュームを自由に 変更可能です。

ボリューム値は音声データの振幅に対する倍率です(単位はデシベルではありません)。
例えば、1.0fを指定した場合、原音はそのままのボリュームで出力されます。
0.5fを指定した場合、原音波形の振幅を半分にしたデータと同じ音量(-6dB)で 音声が出力されます。
0.0fを指定した場合、音声はミュートされます(無音になります)。 \備考: ボリューム値には0.0f以上の値が設定可能です。
(Atomライブラリ Ver.1.21.07より、 ボリューム値に1.0fを超える値を指定できるようになりました。)
1.0fを超える値をセットした場合、プラットフォームによっては、 波形データを元素材よりも大きな音量で再生可能です。
ボリューム値に0.0f未満の値を指定した場合、値は0.0fにクリップされます。
(ボリューム値に負の値を設定した場合でも、 波形データの位相が反転されることはありません。)

本関数の設定値と、以下の関数のボリューム設定値は独立して制御されます。
例えば、本関数に0.5fを、 criAtomPlayer_SetChannelVolume 関数にも0.5fを設定した場合、 出力音声のボリュームは原音を0.25f倍したボリュームで出力されます。
(0.5f×0.5f=0.25fの演算が行われます。)
注意:
1.0fを超えるボリュームを指定する場合、以下の点に注意する必要があります。
  • プラットフォームごとに挙動が異なる可能性がある。
  • 音割れが発生する可能性がある。

本関数に1.0fを超えるボリューム値を設定した場合でも、 音声が元の波形データよりも大きな音量で再生されるかどうかは、 プラットフォームや音声圧縮コーデックの種別によって異なります。
そのため、マルチプラットフォームタイトルでボリュームを調整する場合には、 1.0fを超えるボリューム値を使用しないことをおすすめします。
(1.0fを超えるボリューム値を指定した場合、同じ波形データを再生した場合でも、 機種ごとに異なる音量で出力される可能性があります。)

また、音量を上げることが可能な機種であっても、 ハードウェアで出力可能な音量には上限があるため、 音割れによるノイズが発生する可能性があります。
参照:
criAtomPlayer_GetVolume
CriFloat32 CRIAPI criAtomPlayer_GetVolume ( CriAtomPlayerHn  player)

ボリュームの指定

引数:
[in]playerAtomプレーヤハンドル
戻り値:
CriFloat32 ボリューム値
説明:
出力音声のボリュームを取得します。
ボリューム値は音声データの振幅に対する倍率です(単位はデシベルではありません)。
参照:
criAtomPlayer_SetVolume
void CRIAPI criAtomPlayer_SetChannelVolume ( CriAtomPlayerHn  player,
CriSint32  ch,
CriFloat32  vol 
)

チャンネル単位のボリューム指定

引数:
[in]playerAtomプレーヤハンドル
[in]chチャンネル番号
[in]volボリューム値(0.0f〜1.0f)
説明:
出力音声のボリュームをチャンネル単位で指定します。
本関数を使用することで、Atomプレーヤで再生する音声のボリュームを、 チャンネル単位で自由に変更可能です。

第2引数のチャンネル番号は"音声データのチャンネル番号"を指定します。
(出力スピーカーのIDではありません。)
例えば、モノラル音声の0番のボリュームを変更した場合、 スピーカーから出力される音声のボリューム全てが変更されます。
criAtomPlayer_SetVolume 関数を実行するのと同じ動作をします。)
これに対し、ステレオ音声の0番のボリュームを変更すると、デフォルト設定 ではレフトスピーカーから出力される音声のボリュームのみが変更されます。
criAtomPlayer_SetSendLevel 関数を併用している場合は、 必ずしもレフトスピーカーから出力される音量のボリュームが変更される とは限りません。)

ボリューム値には、0.0f〜1.0fの範囲で実数値を指定します。
ボリューム値は音声データの振幅に対する倍率です(単位はデシベルではありません)。
例えば、1.0fを指定した場合、原音はそのままのボリュームで出力されます。
0.5fを指定した場合、原音波形の振幅を半分にしたデータと同じ音量(-6dB)で 音声が出力されます。
0.0fを指定した場合、音声はミュートされます(無音になります)。 \備考: ボリューム値に1.0fを超える値を指定した場合、値は1.0fにクリップされます。
(原音より大きな音量で音声が再生されることはありません。)
同様に、ボリューム値に0.0f未満の値を指定した場合も、値は0.0fにクリップされます。
(位相が反転されることはありません。)
本関数の設定値と、以下の関数のボリューム設定値は独立して制御されます。
参照:
criAtomPlayer_SetVolume, criAtomPlayer_SetSendLevel, criAtomPlayer_SetPanAdx1Compatible
void CRIAPI criAtomPlayer_SetSendLevel ( CriAtomPlayerHn  player,
CriSint32  ch,
CriAtomSpeakerId  spk,
CriFloat32  level 
)

センドレベルの設定

引数:
[in]playerAtomプレーヤハンドル
[in]chチャンネル番号
[in]spkスピーカーID
[in]levelボリューム値(0.0f〜1.0f)
説明:
センドレベルを指定します。
センドレベルは、音声データの各チャンネルの音声を、どのスピーカーから どの程度の音量で出力するかを指定するための仕組みです。

第2引数のチャンネル番号は"音声データのチャンネル番号"を指定します。
第3引数のスピーカーIDには、指定したチャンネル番号のデータをどのスピーカーから 出力するかを指定し、第4引数の送信時のボリュームを指定します。
ボリューム値は、0.0f〜1.0fの範囲で実数値を指定します。
ボリューム値は音声データの振幅に対する倍率です(単位はデシベルではありません)。
例えば、1.0fを指定した場合、原音はそのままのボリュームで出力されます。
0.5fを指定した場合、原音波形の振幅を半分にしたデータと同じ音量(-6dB)で 音声が出力されます。
0.0fを指定した場合、音声はミュートされます(無音になります)。
例えば、音声データのチャンネル0番のデータをライトスピーカーから フルボリューム(1.0f)で出力したい場合、指定は以下のようになります。
 criAtomPlayer_SetSendLevel(player, 0, CRIATOM_SPEAKER_FRONT_RIGHT, 1.0f);
チャンネル単位のボリューム指定( criAtomPlayer_SetChannelVolume 関数) と異なり、本関数では1つのチャンネルのデータを複数のスピーカーから異なる ボリュームで出力することが可能です。
例えば、チャンネル1番の音声をレフトスピーカーから0.3f、ライトスピーカー から0.5f、センタースピーカーから0.7fで出力したい場合、指定は以下のようになります。
 criAtomPlayer_SetSendLevel(player, 1, CRIATOM_SPEAKER_FRONT_LEFT, 0.3f);
 criAtomPlayer_SetSendLevel(player, 1, CRIATOM_SPEAKER_FRONT_RIGHT, 0.5f);
 criAtomPlayer_SetSendLevel(player, 1, CRIATOM_SPEAKER_FRONT_CENTER, 0.7f);
尚、セットされたセンドレベルの値は criAtomPlayer_ResetSendLevel 関数で リセットすることが可能です。
\備考: センドレベルの設定には「自動設定」「手動設定」の2通りが存在します。
Atomプレーヤを作成した直後や、 criAtomPlayer_ResetSendLevel 関数で センドレベルをクリアした場合、センドレベルの設定は「自動設定」となります。
本関数を実行した場合、センドレベルの設定は「手動設定」となります。

「自動設定」の場合、Atomプレーヤは以下のように音声をルーティングします。

【モノラル音声を再生する場合】
チャンネル0の音声を左右のスピーカーから約0.7f(-3dB)のボリュームで出力します。

【ステレオ音声を再生する場合】
チャンネル0の音声をレフトスピーカーから、 チャンネル1の音声をライトスピーカーから出力します。

【4ch音声を再生する場合】
チャンネル0の音声をレフトスピーカーから、チャンネル1の音声をライトスピーカーから、 チャンネル2の音声をサラウンドレフトスピーカーから、 チャンネル3の音声をサラウンドライトスピーカーからでそれぞれ出力します。

【5ch音声を再生する場合】
チャンネル0の音声をレフトスピーカーから、チャンネル1の音声をライトスピーカーから、 チャンネル2の音声をセンタースピーカーから、 チャンネル3の音声をサラウンドレフトスピーカーから、 チャンネル4の音声をサラウンドライトスピーカーからそれぞれ出力します。
( 5ch音声を再生する場合、 criAtom_SetChannelMapping 関数で別の並び順に変更することも可能です。)

【5.1ch音声を再生する場合】
チャンネル0の音声をレフトスピーカーから、チャンネル1の音声をライトスピーカーから、 チャンネル2の音声をセンタースピーカーから、チャンネル3の音声をLFEから、 チャンネル4の音声をサラウンドレフトスピーカーから、 チャンネル5の音声をサラウンドライトスピーカーからそれぞれ出力します。
( 6ch音声を再生する場合、 criAtom_SetChannelMapping 関数で別の並び順に変更することも可能です。)

【7.1ch音声を再生する場合】
チャンネル0の音声をレフトスピーカーから、チャンネル1の音声をライトスピーカーから、 チャンネル2の音声をセンタースピーカーから、チャンネル3の音声をLFEから、 チャンネル4の音声をサラウンドレフトスピーカーから、 チャンネル5の音声をサラウンドライトスピーカーから、
チャンネル6の音声をサラウンドバックレフトスピーカーから、 チャンネル7の音声をサラウンドバックライトスピーカーからそれぞれ出力します。

これに対し、本関数を用いて「手動設定」を行った場合、音声データのチャンネル数に 関係なく、指定されたルーティングで音声が出力されます。
(センドレベルを設定していないチャンネルの音声は出力されません。)
センドレベルの設定をクリアし、ルーティングを「自動設定」の状態に戻したい場合は、 criAtomPlayer_ResetSendLevel 関数を実行してください。

ボリューム値に1.0fを超える値を指定した場合、値は1.0fにクリップされます。
(原音より大きな音量で音声が再生されることはありません。)
同様に、ボリューム値に0.0f未満の値を指定した場合も、値は0.0fにクリップされます。
(位相が反転されることはありません。)
本関数の設定値と、以下の関数のボリューム設定値は独立して制御されます。
注意:
再生する音声データがマルチチャンネルのデータであっても、センドレベルが一部の チャンネルのみにしか設定されていない場合、センドレベルの設定されていない チャンネルの音声は出力されません。

本関数と criAtomPlayer_SetPanAdx1Compatible 関数を併用しないでください。
criAtomPlayer_SetPanAdx1Compatible 関数が、内部的に本関数を呼び出すため、 両者を併用した場合、後から実行した関数により設定が上書きされる可能性があります。
音源の定位をコントロールする際には、本関数かまたは criAtomPlayer_SetPanAdx1Compatible 関数 のいずれか一方のみをご利用ください。
(3Dパンを利用する場合は本関数を、2Dパンのみを行う場合は criAtomPlayer_SetPanAdx1Compatible 関数をご利用ください。)
本関数は一部の機種でのみ利用が可能です。
(プラットフォームのサウンドライブラリの仕様によっては実装が困難な場合が あるため、全ての環境で利用できるワケではありません。)
本関数が利用可能かどうかは、別途マニュアルの機種依存情報のページをご参照ください。
参照:
criAtomPlayer_SetVolume, criAtomPlayer_SetChannelVolume, criAtomPlayer_SetPanAdx1Compatible, criAtomPlayer_ResetSendLevel, criAtom_SetChannelMapping
void CRIAPI criAtomPlayer_ResetSendLevel ( CriAtomPlayerHn  player)

センドレベルのリセット

引数:
[in]playerAtomプレーヤハンドル
説明:
センドレベルの設定をリセットします。
本関数を実行することで、過去にセットされたセンドレベル設定が全てクリアされます。
\備考: センドレベルの設定には「自動設定」「手動設定」の2通りが存在します。
Atomプレーヤを作成した直後や、本関数でセンドレベルをリセットした場合、 センドレベルの設定は「自動設定」となります。
(自動設定時のルーティングについては、 criAtomPlayer_SetSendLevel 関数の説明を参照してください。)
注意:
本関数と criAtomPlayer_ResetPan 関数を併用しないでください。
criAtomPlayer_ResetPan 関数が、内部的に本関数を呼び出すため、 両者を併用した場合、後から実行した関数により設定が上書きされる可能性があります。
参照:
criAtomPlayer_SetSendLevel, criAtomPlayer_ResetPan
void CRIAPI criAtomPlayer_SetPanAdx1Compatible ( CriAtomPlayerHn  player,
CriSint32  ch,
CriFloat32  pan 
)

パンの設定

引数:
[in]playerAtomプレーヤハンドル
[in]chチャンネル番号
[in]panパン設定値(-1.0f〜1.0f)
説明:
パン(音源の定位位置)を指定します。
本関数を実行することで、モノラル音声やステレオ音声に対し、音源の定位位置を自由 にコントロールすることが可能です。

第2引数のチャンネル番号は"音声データのチャンネル番号"を指定します。
第3引数のパン設定値には、指定したチャンネル番号のデータの定位をどの位置にする かを指定します。
パン設定値は、-1.0f〜1.0fの範囲で実数値を指定します。
音源は、負の値を指定すると中央より左側(値が小さいほど左寄り)、0.0fを指定すると 中央、正の値を指定すると中央より右側(値が大きいほど右寄り)に定位します。
(キリのいい値では、-1.0fが左端、0.0fが中央、1.0fが右端になります。)
-1.0fと1.0fの間では、音源の位置はリニアに変化します。 つまり、パン設定値を一定量ずつ変化させながら-1.0〜1.0まで変更した場合、 音源は左端から右端へ一定速度で移動することになります。
備考:
パンの設定には「自動設定」「手動設定」の2通りが存在します。
Atomプレーヤを作成した直後や、 criAtomPlayer_ResetPan 関数で パンをクリアした場合、パンの設定は「自動設定」となります。
本関数を実行した場合、パンの設定は「手動設定」となります。

「自動設定」の場合、Atomプレーヤは以下のように音声をルーティングします。

【モノラル音声を再生する場合】
チャンネル0の音声を左右のスピーカーから約0.7f(-3dB)のボリュームで出力します。

【ステレオ音声を再生する場合】
チャンネル0の音声をレフトスピーカーから、 チャンネル1の音声をライトスピーカーから出力します。

これに対し、本関数を用いて「手動設定」を行った場合、音声データのチャンネル数に 関係なく、指定されたルーティングで音声が出力されます。
パンの設定をクリアし、ルーティングを「自動設定」の状態に戻したい場合は、 criAtomPlayer_ResetPan 関数を実行してください。
注意:
本関数でパンをコントロール可能なのは、モノラル音声とステレオ音声のみです。
3ch以上の音声に対してパンをコントロールしたい場合には、 criAtomPlayer_SetSendLevel 関数を使用する必要があります。

再生する音声データがステレオの場合、チャンネル0番とチャンネル1番のそれぞれの について、独立してパンをコントロールすることが可能です。
ただし、設定されたパンがモノラル音声向けなのか、ステレオ音声向けなのかは区別 されないため、ステレオ設定用にパン設定を行ったAtomプレーヤでモノラル音声を再生 した場合、意図としない位置に音源が定位する可能性があります。

再生する音声データがステレオにもかかわらず、どちらか一方のチャンネルに対して しかパンが設定されていない場合、パンを設定していないチャンネルの音声の定位位置 は 0.0f (中央からの出力)になります。
ステレオ音声のパンをコントロールする際には、必ず両方のチャンネルについてパンの 設定を行ってください。

本関数と criAtomPlayer_SetSendLevel 関数を併用しないでください。
本関数が内部的に criAtomPlayer_SetSendLevel 関数を呼び出すため、 両者を併用した場合、後から実行した関数により設定が上書きされる可能性があります。
音源の定位をコントロールする際には、本関数かまたは criAtomPlayer_SetSendLevel 関数 のいずれか一方のみをご利用ください。
(3Dパンを利用する場合は criAtomPlayer_SetSendLevel 関数を、2Dパンのみを行う場合は 本関数をご利用ください。)
参照:
criAtomPlayer_SetVolume, criAtomPlayer_SetChannelVolume, criAtomPlayer_SetPanAdx1Compatible criAtomPlayer_ResetPan
void CRIAPI criAtomPlayer_ResetPan ( CriAtomPlayerHn  player)

パンのリセット

引数:
[in]playerAtomプレーヤハンドル
説明:
パンの設定をリセットします。
本関数を実行することで、過去にセットされたパン設定が全てクリアされます。
\備考: パンの設定には「自動設定」「手動設定」の2通りが存在します。
Atomプレーヤを作成した直後や、本関数でパンをリセットした場合、 パンの設定は「自動設定」となります。
(自動設定時のルーティングについては、 criAtomPlayer_SetPanAdx1Compatible 関数の説明を参照してください。)
注意:
本関数と criAtomPlayer_ResetSendLevel 関数を併用しないでください。
本関数が内部的に criAtomPlayer_ResetSendLevel 関数を呼び出すため、 両者を併用した場合、後から実行した関数により設定が上書きされる可能性があります。
参照:
criAtomPlayer_SetPanAdx1Compatible, criAtomPlayer_ResetSendLevel
void CRIAPI criAtomPlayer_SetFrequencyRatio ( CriAtomPlayerHn  player,
CriFloat32  ratio 
)

周波数調整比の設定

引数:
[in]playerAtomプレーヤハンドル
[in]ratio周波数調整比
説明:
音声の周波数調整比を設定します。
周波数調整比は、音声データの周波数と再生周波数の比率で、再生速度の倍率と等価です。
周波数比が1.0fを超える場合、音声データは原音より高速に再生され、 1.0f未満の場合は、音声データは原音より低速で再生されます。

周波数比は、音声のピッチにも影響します。
例えば、周波数比を1.0fで再生した場合、音声データは原音通りのピッチで再生されますが、 周波数比を2.0fに変更した場合、ピッチは1オクターブ上がます。
(再生速度が2倍になるため。)
例:
 // 1/2の速度(-1オクターブ)で音声を再生するよう指定
 criAtomPlayer_SetFrequencyRatio(player, 0.5f);
注意:
周波数比に1.0fを超える値を設定した場合、再生する音声のデータが通常より 速く消費されるため、音声データの供給や、データのデコードが間に合わなくなる 可能性があります。
(音切れ等の問題が発生する可能性があります。)
周波数比に1.0fを超える値を設定する場合には、Atomプレーヤ作成時に指定する 最大サンプリングレートの値を、周波数比を考慮した値に設定してください。
(Atomプレーヤ作成時に指定する CriAtomAdxPlayerConfig 構造体 の max_sampling_rate の値に、「原音のサンプリングレート×周波数比」で 計算される値を指定する必要があります。)
 main()
 {
    CriAtomAdxPlayerConfig config;  // Atomプレーヤ作成用コンフィグ構造体
    CriAtomAdxPlayerHn player;      // Atomプレーヤハンドル
        :
    // Atomプレーヤ作成用コンフィグ構造体を設定
    memset(&config, 0, sizeof(config));
    config.max_channels = 2;            // ステレオ再生可能なプレーヤを作成する

    // 48000Hzの音声を1.5倍速で再生する場合
    // 48000×1.5=72000Hzの設定でAtomプレーヤを作成する
    config.max_sampling_rate = 72000;   // 最大で72000Hzの音声を再生する

    // Atomプレーヤの作成
    // ワーク領域にはNULLと0を指定する。
    // →必要なメモリはライブラリ内で動的に確保される。
    player = criAtomPlayer_CreateAdxPlayer(&config, NULL, 0);
        :
    // 周波数比を変更する
    criAtomPlayer_SetFrequencyRatio(player, 1.5f);
        :
 }
本関数は一部の機種でのみ利用が可能です。
(プラットフォームのサウンドライブラリの仕様によっては実装が困難な場合が あるため、全ての環境で利用できるワケではありません。)
本関数が利用可能かどうかは、別途マニュアルの機種依存情報のページをご参照ください。
参照:
CriAtomAdxPlayerConfig, criAtomPlayer_CreateAdxPlayer, criAtomPlayer_SetMaxFrequencyRatio
void CRIAPI criAtomPlayer_SetMaxFrequencyRatio ( CriAtomPlayerHn  player,
CriFloat32  ratio 
)

最大周波数調整比の設定

引数:
[in]playerAtomプレーヤハンドル
[in]ratio最大周波数調整比
説明:
音声の最大周波数調整比を設定します。
本関数で最大周波数調整比を指定することで、指定範囲内でのピッチ変更が即座に反映されるようになります。
備考:
Atom Ver.2.10.00以前のライブラリでは、ピッチを上げた際に音が途切れる (再生速度が速くなった結果、音声データの供給が足りなくなる)ケースがありました。
この対策として、Atom Ver.2.10.00ではピッチを上げても音が途切れないよう、 音声を充分にバッファリングしてからピッチを上げるよう動作を変更しています。
修正により、ピッチ操作によって音が途切れることはなくなりましたが、 ピッチを上げる際にバッファリングを待つ時間分だけピッチ変更が遅れる形になるため、 音の変化が以前のバージョンと比べて緩慢になる可能性があります。
(短時間にピッチを上げ下げするケースにおいて、音の鳴り方が変わる可能性があります。)

本関数で最大周波数調整比をあらかじめ設定した場合、 指定された速度を想定して常にバッファリングが行われるようになるため、 (指定された範囲内の周波数においては)バッファリングなしにピッチ変更が即座に行われます。
短時間にピッチを上げ下げするケースについては、 予想される最大周波数調整比をあらかじめ本関数で設定してから再生を行ってください。
参照:
criAtomPlayer_SetFrequencyRatio
void CRIAPI criAtomPlayer_LimitLoopCount ( CriAtomPlayerHn  player,
CriSint32  count 
)

ループ回数の制限

引数:
[in]playerAtomプレーヤハンドル
[in]countループ制限回数
説明:
波形データのループ再生回数を制限します。
例えば、countに1を指定した場合、ループ波形データは1回のみループして再生を終了します。
(ループエンドポイントに到達後、1回だけループスタート位置に戻ります。)
備考:
デフォルト状態では、ループポイント付きの音声データは無限にループ再生されます。
ループ回数を一旦制限した後、ループ回数を再度無限回に戻したい場合には、 count に CRIATOMPLAYER_NO_LOOP_LIMITATION を指定してください。

count に CRIATOMPLAYER_IGNORE_LOOP を指定することで、 ループポイント付きの音声データをループさせずに再生することも可能です。
注意:
ループ制限回数の指定は、音声再生開始前に行う必要があります。
再生中に本関数を実行しても、ループ回数は変更されません。
再生中の任意のタイミングでループ再生を停止したい場合、 ループ再生ではなく、シームレス連結再生で制御を行ってください。

本関数で指定したループ制限回数は、 あらかじめループポイントが設定された波形データを再生する場合にのみ適用されます。
波形データ自体にループポイントが設定されていない場合、 本関数を実行しても何の効果もありません。

本関数を使用してループ回数を指定した場合でも、 ループ終了時にループエンドポイント以降の波形データが再生されることはありません。
(指定回数分ループした後、ループエンドポイントで再生が停止します。)

例外的に、以下の条件を満たす場合に限り、(ループはされませんが) ワンショットでループポイント以降のデータを含めて再生することが可能です。
  • criatomencd.exe で -nodelterm を指定してデータをエンコードする。
  • 本関数に CRIATOMPLAYER_IGNORE_LOOP を指定してから再生を行う。

本関数でループ回数を制限できるのは、ADXコーデックとHCAコーデックのみです。
プラットフォーム依存の音声コーデックに対して本関数を実行しないでください。
(再生が終了しない、ノイズが発生する等の問題が発生します。)
void CRIAPI criAtomPlayer_SetHcaMxMixerId ( CriAtomPlayerHn  player,
CriSint32  mixer_id 
)

HCA-MXデコード先ミキサIDの指定

引数:
[in]playerAtomプレーヤハンドル
[in]mixer_idミキサID
説明:
HCA-MXのデコード先ミキサIDを指定します。
注意:
本関数は criAtomPlayer_CreateHcaMxPlayer 関数で作成されたプレーヤに対してのみ効果があります。
(他の関数で作成されたプレーヤに対しては、何の効果もありません。)

本関数は停止中のプレーヤに対してのみ実行可能です。
参照:
criAtomPlayer_CreateHcaMxPlayer
void CRIAPI criAtomPlayer_SetAsrRackId ( CriAtomPlayerHn  player,
CriSint32  rack_id 
)

ASRラックIDの指定

引数:
[in]playerAtomプレーヤハンドル
[in]rack_idラックID
説明:
ボイスの出力先のラックIDを指定します。
注意:
本関数は停止中のプレーヤに対してのみ実行可能です。
void CRIAPI criAtomPlayer_SetRawPcmFormat ( CriAtomPlayerHn  player,
CriAtomPcmFormat  pcm_format,
CriSint32  num_channels,
CriSint32  sampling_rate 
)

RawPCMフォーマットの指定

引数:
[in]playerAtomプレーヤハンドル
[in]pcm_formatRawPCMのデータフォーマット
[in]num_channelsチャンネル数
[in]sampling_rateサンプリングレート
説明:
RawPCMのデータフォーマット情報を指定します。
注意:
本関数は criAtomPlayer_CreateRawPcmPlayer 関数で作成されたプレーヤに対してのみ効果があります。
(他の関数で作成されたプレーヤに対しては、何の効果もありません。)

本関数は停止中のプレーヤに対してのみ実行可能です。
参照:
criAtomPlayer_CreateRawPcmPlayer
void CRIAPI criAtomPlayer_SetDataRequestCallback ( CriAtomPlayerHn  player,
CriAtomPlayerDataRequestCbFunc  func,
void *  obj 
)

データ要求コールバック関数の登録

引数:
[in]playerAtomプレーヤハンドル
[in]funcデータ要求コールバック関数
[in]objユーザ指定オブジェクト
説明:
データ要求コールバック関数の登録を行います。

データ要求コールバックは、複数の音声データをシームレスに連結して再生する際に 使用します。
登録したコールバック関数は、Atomプレーヤが連結再生用のデータを要求するタイミングで 実行されます。
(前回のデータを読み込み終えて、次に再生すべきデータを要求するタイミングで コールバック関数が実行されます。)
登録したコールバック関数内で criAtomPlayer_SetData 関数等を用いてAtomプレーヤに データをセットすると、セットされたデータは現在再生中のデータに続いてシームレスに 連結されて再生されます。
また、コールバック関数内で criAtomPlayer_SetPreviousDataAgain 関数を実行することで、 同一データを繰り返し再生し続けることも可能です。
備考:
登録したコールバック関数内でデータを指定しなかった場合、現在のデータを再生し 終えた時点で、Atomプレーヤのステータスが CRIATOMPLAYER_STATUS_PLAYEND に遷移します。

タイミング等の問題により、データを指定することができないが、ステータスを CRIATOMPLAYER_STATUS_PLAYEND に遷移させたくない場合には、コールバック関数内で criAtomPlayer_DeferCallback 関数を実行してください。
criAtomPlayer_DeferCallback 関数を実行することで、約1V後に再度データ要求 コールバック関数が呼び出されます。(コールバック処理をリトライ可能。)
ただし、 criAtomPlayer_DeferCallback 関数を実行した場合、再生が途切れる (連結箇所に一定時間無音が入る)可能性があります。
例:
以下のコードを実行すると、buffer1のデータとbuffer2のデータがシームレスに 連結して再生されます。
(その後はbuffer2のデータが繰り返し再生されます。)
 // データ要求コールバック関数
 void on_data_request(void *obj, CriAtomPlayerHn player)
 {
    // 続けて再生するデータをセット
    criAtomPlayer_SetData(player, buffer2, buffer_size2);
 }

 main()
 {
        :
    // データ要求コールバック関数の登録
    criAtomPlayer_SetDataRequestCallback(player, on_data_request, NULL);

    // 音声データをセット
    criAtomPlayer_SetData(player, buffer1, buffer_size1);

    // セットされた音声データを再生
    criAtomPlayer_Start(player);
        :
 }
以下の処理により、同一音声データを無限にループ再生可能です。
 // データ要求コールバック関数
 void on_data_request(void *obj, CriAtomPlayerHn player)
 {
    // 前回再生したデータを再セット
    criAtomPlayer_SetPreviousDataAgain(player);
 }

 main()
 {
        :
    // データ要求コールバック関数の登録
    criAtomPlayer_SetDataRequestCallback(player, on_data_request, NULL);

    // 音声データをセット
    criAtomPlayer_SetData(player, buffer, buffer_size);

    // セットされた音声データを再生
    criAtomPlayer_Start(player);
        :
 }
注意:
データ要求コールバック関数内で長時間処理をブロックすると、音切れ等の問題が 発生しますので、ご注意ください。

シームレス連結再生をサポートしないコーデックを使用している場合、 データ要求コールバック関数内で次のデータをセットしても、 データは続けて再生されません。
(HCA-MXやプラットフォーム固有の音声圧縮コーデックを使用している場合、 シームレス連結再生はできません。)

シームレス連結再生に使用する波形データのフォーマットは、 全て同じにする必要があります。
具体的には、以下のパラメータが同じである必要があります。
  • コーデック
  • チャンネル数
  • サンプリングレート
パラメータが異なる波形を連結しようとした場合、 意図としない速度で音声データが再生されたり、 エラーコールバックが発生する等の問題が発生します。

コールバック関数内でループ付きの波形データをセットした場合でも、 ループ再生は行われません。
(ループポイントが無視され、再生が終了します。)

コールバック関数内でAtomプレーヤを破棄しないでください。
コールバックを抜けた後も、しばらくの間はサーバ処理内で当該ハンドルのリソース が参照されるため、アクセス違反等の重大な問題が発生する可能性があります。
コールバック関数は1つしか登録できません。
登録操作を複数回行った場合、既に登録済みのコールバック関数が、 後から登録したコールバック関数により上書きされてしまいます。

funcにNULLを指定するとことで登録済み関数の登録解除が行えます。
参照:
CriAtomPlayerDataRequestCbFunc, criAtomPlayer_SetData, criAtomPlayer_SetPreviousDataAgain, criAtomPlayer_DeferCallback
void CRIAPI criAtomPlayer_SetStatusChangeCallback ( CriAtomPlayerHn  player,
CriAtomPlayerStatusChangeCbFunc  func,
void *  obj 
)

ステータス変更コールバック関数の登録

引数:
[in]playerAtomプレーヤハンドル
[in]funcステータス変更コールバック関数
[in]objユーザ指定オブジェクト
説明:
ステータス変更コールバック関数を登録します。
登録したコールバック関数は、Atomプレーヤのステータスが更新されるタイミングで 実行されます。
変更されたステータスについては、コールバック関数の引数として渡されるAtomプレーヤ ハンドルに対し、 criAtomPlayer_GetStatus 関数を実行することで取得可能です。

ステータス変更コールバックを利用することで、Atomプレーヤのステータス変更に 合わせて特定の処理を行うことが可能になります。
例えば、以下のようなコードで、ステータスが CRIATOMPLAYER_STATUS_ERROR になった 場合にリードエラーメッセージを表示することが可能です。
 // ステータス変更コールバック関数
 void on_status_change(void *obj, CriAtomPlayerHn player)
 {
    CriAtomPlayerStatus status;

    // ステータスの取得
    status = criAtomPlayer_GetStatus(player);
    if (status == CRIATOMPLAYER_STATUS_ERROR) {
        // リードエラー発生時の処理
            :
    }
 }

 main()
 {
        :
    // ステータス変更コールバック関数の登録
    criAtomPlayer_SetStatusChangeCallback(player, on_status_change, NULL);

    // 音声ファイルをセット
    criAtomPlayer_SetFile(player, NULL, "sample.adx");

    // セットされた音声ファイルを再生
    criAtomPlayer_Start(player);
        :
 }
備考:
厳密には、ステータス遷移〜コールバック関数実行までの間に他の処理が割り込みで動作する 余地があるため、ステータス遷移とコールバック関数実行のタイミングがズレる可能性があります。
注意:
ステータス変更コールバック関数内で長時間処理をブロックすると、音切れ等の問題 が発生しますので、ご注意ください。

ステータス変更コールバック関数を抜けるまでは、Atomプレーヤのステータスが 変更されることはありません。
そのため、ステータス変更コールバック関数内でAtomプレーヤのステータス遷移を 待つ処理を行うと、デッドロックが発生し、処理が先に進まなくなります。

コールバック関数内でAtomプレーヤを破棄しないでください。
コールバックを抜けた後も、しばらくの間はサーバ処理内で当該ハンドルのリソース が参照されるため、アクセス違反等の重大な問題が発生する可能性があります。
コールバック関数は1つしか登録できません。
登録操作を複数回行った場合、既に登録済みのコールバック関数が、 後から登録したコールバック関数により上書きされてしまいます。

funcにNULLを指定するとことで登録済み関数の登録解除が行えます。
参照:
criAtomPlayer_GetStatus
void CRIAPI criAtomPlayer_SetParameterChangeCallback ( CriAtomPlayerHn  player,
CriAtomPlayerParameterChangeCbFunc  func,
void *  obj 
)

パラメータ変更コールバック関数の登録

引数:
[in]playerAtomプレーヤハンドル
[in]funcパラメータ変更コールバック関数
[in]objユーザ指定オブジェクト
説明:
パラメータ変更コールバック関数を登録します。
登録したコールバック関数は、Atomプレーヤのパラメータが更新されるタイミングで実行されます。
注意:
パラメータ変更コールバック関数内で長時間処理をブロックすると、音切れ等の問題 が発生しますので、ご注意ください。

コールバック関数内でAtomプレーヤを破棄しないでください。
コールバックを抜けた後も、しばらくの間はサーバ処理内で当該ハンドルのリソース が参照されるため、アクセス違反等の重大な問題が発生する可能性があります。
コールバック関数は1つしか登録できません。
登録操作を複数回行った場合、既に登録済みのコールバック関数が、 後から登録したコールバック関数により上書きされてしまいます。

funcにNULLを指定するとことで登録済み関数の登録解除が行えます。
void CRIAPI criAtomPlayer_SetFilterCallback ( CriAtomPlayerHn  player,
CriAtomPlayerFilterCbFunc  func,
void *  obj 
)

波形フィルタコールバック関数の登録

引数:
[in]playerAtomプレーヤハンドル
[in]func波形フィルタコールバック関数
[in]objユーザ指定オブジェクト
説明:
デコード結果の PCM データを受け取るコールバック関数を登録します。
登録されたコールバック関数は、 Atom プレーヤが音声データをデコードしたタイミングで呼び出されます。
注意:
ステータス変更コールバック関数内で長時間処理をブロックすると、音切れ等の問題 が発生しますので、ご注意ください。

HCA-MXコーデックやプラットフォーム固有の音声圧縮コーデックを使用している場合、 フィルタコールバックは利用できません。

コールバック関数は1つしか登録できません。
登録操作を複数回行った場合、既に登録済みのコールバック関数が、 後から登録したコールバック関数により上書きされてしまいます。

funcにNULLを指定するとことで登録済み関数の登録解除が行えます。
参照:
CriAtomPlayerFilterCbFunc
void CRIAPI criAtomPlayer_SetLoadRequestCallback ( CriAtomPlayerHn  player,
CriAtomPlayerLoadRequestCbFunc  func,
void *  obj 
)

ロード要求コールバック関数の登録

引数:
[in]playerAtomプレーヤハンドル
[in]funcロード要求コールバック関数
[in]objユーザ指定オブジェクト
説明:
ロード要求コールバック関数の登録を行います。

ロード要求コールバックは、Atomプレーヤのファイルロード状態を監視する際に使用します。
(デバッグ目的の関数なので、通常本関数を使用する必要はありません。)
注意:
ロード要求コールバック関数内で長時間処理をブロックすると、音切れ等の問題が 発生しますので、ご注意ください。

コールバック関数内でAtomプレーヤを破棄しないでください。
コールバックを抜けた後も、しばらくの間はサーバ処理内で当該ハンドルのリソース が参照されるため、アクセス違反等の重大な問題が発生する可能性があります。
コールバック関数は1つしか登録できません。
登録操作を複数回行った場合、既に登録済みのコールバック関数が、 後から登録したコールバック関数により上書きされてしまいます。

funcにNULLを指定するとことで登録済み関数の登録解除が行えます。
参照:
CriAtomPlayerLoadRequestCbFunc
void CRIAPI criAtomPlayer_SetHcaFormat ( CriAtomPlayerHn  player,
CriSint32  num_channels,
CriSint32  sampling_rate,
CriSint32  bitrate 
)

HCAフォーマットの指定

引数:
[in]playerAtomプレーヤ
[in]num_channelsチャンネル数
[in]sampling_rateサンプリング周波数
[in]bitrateビットレート
説明:
HCAデータのフォーマット情報を設定します。
本関数を実行することで、ヘッダレスのHCAデータを再生することが可能になります。

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