Class CriAtom
CriAtom API
Inherited Members
Namespace: CriWare
Assembly: CriWare.CriAtom.dll
Syntax
public static class CriAtom
Fields
DefaultOutputSamplingRate
Declaration
public const int DefaultOutputSamplingRate = 48000
Field Value
Type | Description |
---|---|
int |
FormatAdx
ADX
Declaration
public const int FormatAdx = 1
Field Value
Type | Description |
---|---|
int |
FormatAiff
AIFF
Declaration
public const int FormatAiff = 7
Field Value
Type | Description |
---|---|
int |
FormatAudioBuffer
AudioBuffer
Declaration
public const int FormatAudioBuffer = 9
Field Value
Type | Description |
---|---|
int |
FormatHca
HCA
Declaration
public const int FormatHca = 3
Field Value
Type | Description |
---|---|
int |
FormatHcaMx
HCA-MX
Declaration
public const int FormatHcaMx = 4
Field Value
Type | Description |
---|---|
int |
FormatHw1
ハードウェア固有
Declaration
public const int FormatHw1 = 65537
Field Value
Type | Description |
---|---|
int |
FormatHw2
ハードウェア固有
Declaration
public const int FormatHw2 = 65538
Field Value
Type | Description |
---|---|
int |
FormatHw3
ハードウェア固有
Declaration
public const int FormatHw3 = 65539
Field Value
Type | Description |
---|---|
int |
FormatRawPcm
Raw PCM
Declaration
public const int FormatRawPcm = 6
Field Value
Type | Description |
---|---|
int |
FormatVibration
振動
Declaration
public const int FormatVibration = 8
Field Value
Type | Description |
---|---|
int |
FormatWave
Wave
Declaration
public const int FormatWave = 5
Field Value
Type | Description |
---|---|
int |
HcaMxMaxOutputChannels
HCA-MXの出力チャンネル数の最大値
Declaration
public const int HcaMxMaxOutputChannels = 8
Field Value
Type | Description |
---|---|
int |
Remarks
説明: HCA-MXの出力チャンネル数の最大値です。 CriAtomHcaMx.Config::output_channels の値は、この値以下に設定する必要があります。
See Also
SoundRendererDefault
Declaration
public const CriAtom.SoundRendererType SoundRendererDefault = Asr
Field Value
Type | Description |
---|---|
CriAtom.SoundRendererType |
StreamingCacheIllegalId
不正なストリーミングキャッシュID値
Declaration
public const int StreamingCacheIllegalId = 0
Field Value
Type | Description |
---|---|
int |
Remarks
説明: CriAtomStreamingCache(in Config, IntPtr, int) 関数に失敗した際に返る値です。
See Also
Properties
AudioFrameEndCallback
コールバックイベントオブジェクト
Declaration
public static CriAtom.AudioFrameEndCbFunc AudioFrameEndCallback { get; }
Property Value
Type | Description |
---|---|
CriAtom.AudioFrameEndCbFunc |
See Also
AudioFrameStartCallback
コールバックイベントオブジェクト
Declaration
public static CriAtom.AudioFrameStartCbFunc AudioFrameStartCallback { get; }
Property Value
Type | Description |
---|---|
CriAtom.AudioFrameStartCbFunc |
See Also
DeviceUpdateCallback
コールバックイベントオブジェクト
Declaration
public static CriAtom.DeviceUpdateCbFunc DeviceUpdateCallback { get; }
Property Value
Type | Description |
---|---|
CriAtom.DeviceUpdateCbFunc |
See Also
Methods
AttachPerformanceMonitor()
パフォーマンスモニター機能の追加
Declaration
public static void AttachPerformanceMonitor()
Remarks
説明: パフォーマンス計測機能を追加し、パフォーマンス計測処理を開始します。 本関数を実行後、 GetPerformanceInfo(out PerformanceInfo) 関数を実行することで、 サーバー処理の負荷や、サーバー処理の実行間隔等、ライブラリのパフォーマンス情報を 取得することが可能です。
See Also
CalculateAdxBitrate(int, int)
ADXデータのビットレート計算
Declaration
public static int CalculateAdxBitrate(int numChannels, int samplingRate)
Parameters
Type | Name | Description |
---|---|---|
int | numChannels | データのチャンネル数 |
int | samplingRate | データのサンプリングレート |
Returns
Type | Description |
---|---|
int | ビットレート[bps] |
Remarks
説明: ADXデータのビットレートを計算します。 計算に失敗すると本関数は-1を返します。 計算に失敗した理由については、エラーコールバックのメッセージで確認可能です。
CalculateHcaBitrate(int, int, EncodeQuality)
HCAデータのビットレート計算
Declaration
public static int CalculateHcaBitrate(int numChannels, int samplingRate, CriAtom.EncodeQuality quality)
Parameters
Type | Name | Description |
---|---|---|
int | numChannels | データのチャンネル数 |
int | samplingRate | データのサンプリングレート |
CriAtom.EncodeQuality | quality | データのエンコード品質 |
Returns
Type | Description |
---|---|
int | ビットレート[bps] |
Remarks
説明: HCAデータのビットレートを計算します。 計算に失敗すると本関数は-1を返します。 計算に失敗した理由については、エラーコールバックのメッセージで確認可能です。
備考: qualityにはCRI Atom CraftまたはCRI Atom Encoderで設定したエンコード品質を指定します。
CalculateHcaMxBitrate(int, int, EncodeQuality)
HCA-MXデータのビットレート計算
Declaration
public static int CalculateHcaMxBitrate(int numChannels, int samplingRate, CriAtom.EncodeQuality quality)
Parameters
Type | Name | Description |
---|---|---|
int | numChannels | データのチャンネル数 |
int | samplingRate | データのサンプリングレート |
CriAtom.EncodeQuality | quality | データのエンコード品質 |
Returns
Type | Description |
---|---|
int | ビットレート[bps] |
Remarks
説明: HCA-MXデータのビットレートを計算します。 計算に失敗すると本関数は-1を返します。 計算に失敗した理由については、エラーコールバックのメッセージで確認可能です。
備考: qualityにはCRI Atom CraftまたはCRI Atom Encoderで設定したエンコード品質を指定します。
CalculateWorkSize(in Config)
ライブラリ初期化用ワーク領域サイズの計算
Declaration
public static int CalculateWorkSize(in CriAtom.Config config)
Parameters
Type | Name | Description |
---|---|---|
CriAtom.Config | config | 初期化用コンフィグ構造体 |
Returns
Type | Description |
---|---|
int | ワーク領域サイズ |
Remarks
説明: CRI Atomライブラリを使用するために必要な、ワーク領域のサイズを取得します。 ワーク領域サイズの計算に失敗すると、本関数は -1 を返します。 ワーク領域サイズの計算に失敗した理由については、エラーコールバックのメッセージで確認可能です。
備考: CRI Atomライブラリが必要とするワーク領域のサイズは、ライブラリ初期化用コンフィグ 構造体( CriAtom.Config )の内容によって変化します。 引数にnullを指定した場合、デフォルト設定 ( SetDefaultConfig(out Config) 適用時と同じパラメーター)で ワーク領域サイズを計算します。 引数 config の情報は、関数内でのみ参照されます。 関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
See Also
CalculateWorkSizeIOS(in ConfigIOS)
ライブラリ初期化用ワーク領域サイズの計算
Declaration
Parameters
Type | Name | Description |
---|---|---|
CriAtom.ConfigIOS | config | 初期化用コンフィグ構造体 |
Returns
Type | Description |
---|---|
int | ワーク領域サイズ |
Remarks
説明: ライブラリを使用するために必要な、ワーク領域のサイズを取得します。
備考: ライブラリが必要とするワーク領域のサイズは、ライブラリ初期化用コンフィグ 構造体( CriAtom.ConfigIOS )の内容によって変化します。 引数 config の情報は、関数内でのみ参照されます。 関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意: 本関数は下位レイヤ向けのAPIです。 AtomExレイヤの機能を利用する際には、本関数の代わりに CalculateWorkSizeIOS(in ConfigIOS) 関数をご利用ください。
See Also
CalculateWorkSizeMACOSX(in ConfigMACOSX)
ライブラリ初期化用ワーク領域サイズの計算
Declaration
Parameters
Type | Name | Description |
---|---|---|
CriAtom.ConfigMACOSX | config | 初期化用コンフィグ構造体 |
Returns
Type | Description |
---|---|
int | ワーク領域サイズ |
Remarks
説明: ライブラリを使用するために必要な、ワーク領域のサイズを取得します。
備考: ライブラリが必要とするワーク領域のサイズは、ライブラリ初期化用コンフィグ 構造体( CriAtom.ConfigMACOSX )の内容によって変化します。 引数 config の情報は、関数内でのみ参照されます。 関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意: 本関数は下位レイヤ向けのAPIです。 AtomExレイヤの機能を利用する際には、本関数の代わりに CalculateWorkSizeMACOSX(in ConfigMACOSX) 関数をご利用ください。
See Also
CalculateWorkSizePC(in ConfigPC)
ライブラリ初期化用ワーク領域サイズの計算
Declaration
Parameters
Type | Name | Description |
---|---|---|
CriAtom.ConfigPC | config | 初期化用コンフィグ構造体 |
Returns
Type | Description |
---|---|
int | ワーク領域サイズ |
Remarks
説明: ライブラリを使用するために必要な、ワーク領域のサイズを取得します。
備考: ライブラリが必要とするワーク領域のサイズは、ライブラリ初期化用コンフィグ 構造体( CriAtom.ConfigPC )の内容によって変化します。 引数 config の情報は、関数内でのみ参照されます。 関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意: 本関数は下位レイヤ向けのAPIです。 AtomExレイヤの機能を利用する際には、本関数の代わりに CalculateWorkSizePC(in ConfigPC) 関数をご利用ください。
See Also
CalculateWorkSizePULSE(in ConfigPULSE)
ライブラリ初期化用ワーク領域サイズの計算
Declaration
Parameters
Type | Name | Description |
---|---|---|
CriAtom.ConfigPULSE | config | 初期化用コンフィグ構造体 |
Returns
Type | Description |
---|---|
int | ワーク領域サイズ |
Remarks
説明: ライブラリを使用するために必要な、ワーク領域のサイズを取得します。
備考: ライブラリが必要とするワーク領域のサイズは、ライブラリ初期化用コンフィグ 構造体( CriAtom.ConfigPULSE )の内容によって変化します。 引数 config の情報は、関数内でのみ参照されます。 関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意: 本関数は下位レイヤ向けのAPIです。 AtomExレイヤの機能を利用する際には、本関数の代わりに CalculateWorkSizePULSE(in ConfigPULSE) 関数をご利用ください。
See Also
CalculateWorkSizeWASAPI(in ConfigWASAPI)
ライブラリ初期化用ワーク領域サイズの計算
Declaration
Parameters
Type | Name | Description |
---|---|---|
CriAtom.ConfigWASAPI | config | 初期化用コンフィグ構造体 |
Returns
Type | Description |
---|---|
int | ワーク領域サイズ |
Remarks
説明: ライブラリを使用するために必要な、ワーク領域のサイズを取得します。
備考: ライブラリが必要とするワーク領域のサイズは、ライブラリ初期化用コンフィグ 構造体( CriAtom.ConfigWASAPI )の内容によって変化します。 引数 config の情報は、関数内でのみ参照されます。 関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意: 本関数は下位レイヤ向けのAPIです。 AtomExレイヤの機能を利用する際には、本関数の代わりに CalculateWorkSizeWASAPI(in ConfigWASAPI) 関数をご利用ください。
See Also
ChangeDefaultChannelConfig(int, ChannelConfig)
チャンネルコンフィグのデフォルト値変更
Declaration
public static void ChangeDefaultChannelConfig(int numChannels, CriAtom.ChannelConfig channelConfig)
Parameters
Type | Name | Description |
---|---|---|
int | numChannels | チャンネル数 |
CriAtom.ChannelConfig | channelConfig | チャンネルコンフィグ |
Remarks
説明: 音声データの各チャンネルと出力スピーカーの対応付けを変更します。 Atomライブラリは、デフォルト状態では音声データが以下のチャンネル構成であると想定して動作します。 |チャンネル数 | 想定されるチャンネル構成 | |--- |--- | |1 | Mono | |2 | Stereo | |3 | _3Lrc | |4 | Quad | |5 | _5 | |6 | _5_1 | |7 | _6_1 | |8 | _7_1 | |9 | Ambisonics2p | |10 | _7_1_2 | |12 | _7_1_4 | |16 | Ambisonics3p | 再生する音声データのチャンネル構成が上記と異なる場合には、本関数を使用してチャンネル構成を変更する必要があります。
注意: 構成変更の影響は、第一引数(num_channels)で指定したチャンネルの音声データにのみ影響します。 そのため、異なるチャンネル数の音声データが混在する場合、各チャンネル数に対してそれぞれチャンネル構成の変更を行う必要があります。
再生中の音声がデフォルト値を参照するタイミングはユーザーの操作に依存します。 そのため、再生中にデフォルト値を変更した場合、意図したタイミングで変更が反映されるとは限りません。 本関数を使用する場合、初期化時など音声を再生する前に実行してください。
ChangeDefaultChannelOrder(int, in int)
チャンネル順序のデフォルト値変更
Declaration
public static void ChangeDefaultChannelOrder(int numChannels, in int channelOrder)
Parameters
Type | Name | Description |
---|---|---|
int | numChannels | チャンネル数 |
int | channelOrder | チャンネル順序 |
Remarks
説明: 指定したチャンネル数の音声データについて、チャンネルの読み込み順序を変更します。 Atomライブラリは、デフォルト状態では音声データが以下のチャンネル順序でインターリーブされていると想定して動作します。 |チャンネル番号 | 想定されるチャンネル | |--- |--- | |0 | レフト | |1 | ライト | |2 | センター | |3 | LFE | |4 | サラウンドレフト | |5 | サラウンドライト | |6 | サラウンドバックレフト | |7 | サラウンドバックライト | |8 | トップフロントレフト | |9 | トップフロントライト | |10 | トップバックレフト | |11 | トップバックライト | 再生する音声データの並び順が上記と異なる場合には、本関数を使用してチャンネルの読み込み順序を変更する必要があります。
補足: モノラル音声はセンターチャンネルと解釈されます。 ただし、デフォルト状態ではレフトスピーカーとライトスピーカーを使用した、いわゆるファントムセンターで出力されます。 (モノラル音声をセンタースピーカーから出力するには、パンスピーカータイプを変更する必要があります。) 5.1.2chの音声データは、デフォルトで以下のチャンネル順序と解釈されます。 |チャンネル番号 | 想定されるチャンネル | |--- |--- | |0 | レフト | |1 | ライト | |2 | センター | |3 | LFE | |4 | サラウンドレフト | |5 | サラウンドライト | |6 | トップレフト | |7 | トップトライト |
注意: 順序変更の影響は、第一引数(num_channels)で指定したチャンネルの音声データにのみ影響します。 そのため、異なるチャンネル数の音声データが混在する場合、各チャンネル数に対してそれぞれチャンネル順序の変更を行う必要があります。
再生中の音声がデフォルト値を参照するタイミングはユーザーの操作に依存します。 そのため、再生中にデフォルト値を変更した場合、意図したタイミングで変更が反映されるとは限りません。 本関数を使用する場合、初期化時など音声を再生する前に実行してください。
DetachPerformanceMonitor()
パフォーマンスモニター機能の削除
Declaration
public static void DetachPerformanceMonitor()
Remarks
説明: パフォーマンス計測処理を終了し、パフォーマンス計測機能を削除します。
注意: 本関数は完了復帰型の関数です。 本関数を実行すると、しばらくの間Atomライブラリのサーバー処理がブロックされます。 音声再生中に本関数を実行すると、音途切れ等の不具合が発生する可能性があるため、 本関数の呼び出しはシーンの切り替わり等、負荷変動を許容できるタイミングで行ってください。
EnumAudioEndpointsWASAPI(delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void>, IntPtr)
オーディオエンドポイントの列挙
Declaration
public static int EnumAudioEndpointsWASAPI(delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void> callback, IntPtr @object)
Parameters
Type | Name | Description |
---|---|---|
delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void> | callback | オーディオエンドポイントコールバック関数 |
IntPtr | object | ユーザ指定オブジェクト |
Returns
Type | Description |
---|---|
int | 列挙されたACBオブジェクトの数 |
Remarks
説明: オーディオエンドポイントを列挙します。 本関数を実行すると、第 1 引数( callback ) でセットされたコールバック関数がオーディオエンドポイント数分だけ呼び出されます。 コールバック関数には、IMMDeviceインスタンスが引数として渡されます。
備考: 第 2 引数( object )にセットした値は、コールバック関数の引数として渡されます。 コールバック関数のその他の引数については、 別途 CriAtom.AudioEndpointCbFuncWASAPI の説明をご参照ください。 戻り値は列挙されたオーディオエンドポイントの数(登録したコールバック関数が呼び出された回数)です。 オーディオエンドポイントが存在しない場合、本関数は 0 を返します。 エラーが発生した際には -1 を返します。
注意: IMMDeviceインスタンスをコールバック関数内で破棄してはいけません。
See Also
ExecuteAudioProcess()
ユーザーマルチスレッド用サーバー処理の実行
Declaration
public static void ExecuteAudioProcess()
Remarks
説明: CRI Atomライブラリのみを更新します。 スレッドモデルがUserMultiの場合、 アプリケーションは、この関数を定期的に実行する必要があります。 * ファイルの読み込み管理や、データのデコード、音声の出力等、 音声再生に必要な処理のほぼ全てが本関数内で実行されます。 そのため、ライブラリ初期化時に指定したサーバー処理の実行頻度( CriAtom.Config 構造体の server_frequency )を下回る頻度で本関数を実行した場合、音切れ等の問題が発生する可能性 があります。 また、本関数はExecuteMain() 関数と異なり、CRI File Systemライブラリのサーバー処理を実行しません。 アプリケーションが必要なサーバー処理を正しい順序で実行してください。
備考: Single に設定した場合、サーバー処理の排他制御が行われないので、 複数のスレッドから呼び出さないようにしてください。
See Also
ExecuteMain()
マルチスレッド用サーバー処理の実行
Declaration
public static void ExecuteMain()
Remarks
説明: CRI Atomライブラリの内部状態を更新します。 アプリケーションは、この関数を定期的に実行する必要があります。 サーバー処理を実行すべき回数は、ライブラリ初期化時のパラメーターに依存します。 ライブラリ初期化時にスレッドモデルを Multi に設定した場合、 本関数の呼び出し頻度は少なくても問題は発生しません。 なぜなら、リアルタイム性を要求される処理は全てCRI Atomライブラリ内で 定期的に自動実行されるためです。 (最低でも毎秒1回程度実行されていれば、音切れ等の問題が発生することはありません。) ライブラリ初期化時にスレッドモデルを Single や UserMulti に設定した場合、ファイルの読み込み管理や、 データのデコード、音声の出力等、音声再生に必要な処理のほぼ全てが本関数内で実行されます。 また、音声再生処理に同期して、CRI File Systemライブラリのファイルアクセスとデータ展開処理を実行します。 そのため、以下の場合は音切れなどの問題が発生する可能性があるので注意してください。 ・ライブラリ初期化時に指定したサーバー処理の実行頻度 ( CriAtom.Config 構造体のserver_frequency )を下回る頻度で本関数を実行した場合 ・大きいデータの読み込み、圧縮ファイルの読み込み等を行う場合
備考: ライブラリ初期化時にスレッドモデルを Multi に設定した場合でも、 本関数を実行する必要があります。 (スレッドモデルを Multi に設定した場合、ステータス更新等、ごく一部の 処理のみを行うため、本関数内で長時間処理がブロックされることはありません。) CRI File Systemライブラリのサーバー処理は、CRI Atomライブラリ内部で実行されます。 そのため、本関数を実行している場合、アプリケーション側で別途CRI File Systemライブラリ のサーバー処理を呼び出す必要はありません。
See Also
Finalize()
ライブラリの終了
Declaration
public static void Finalize()
Remarks
説明: CRI Atomライブラリを終了します。
注意: Initialize(in Config, IntPtr, int) 関数実行前に本関数を実行することはできません。
See Also
FinalizeIOS()
ライブラリの終了
Declaration
Remarks
説明: ライブラリを終了します。
注意: 本関数は内部的に以下の関数を実行します。 - Finalize() - Finalize() - Finalize() 本関数を実行する場合、上記関数を実行しないでください。 InitializeIOS(in ConfigIOS, IntPtr, int) 関数実行前に本関数を実行することはできません。 本関数は下位レイヤ向けのAPIです。 AtomExレイヤの機能を利用する際には、本関数の代わりに FinalizeIOS() 関数をご利用ください。
See Also
FinalizeMACOSX()
ライブラリの終了
Declaration
Remarks
説明: ライブラリを終了します。
注意: 本関数は内部的に以下の関数を実行します。 - Finalize() - Finalize() - Finalize() . 本関数を実行する場合、上記関数を実行しないでください。 InitializeMACOSX(in ConfigMACOSX, IntPtr, int) 関数実行前に本関数を実行することはできません。 本関数は下位レイヤ向けのAPIです。 AtomExレイヤの機能を利用する際には、本関数の代わりに FinalizeMACOSX() 関数をご利用ください。
See Also
FinalizePC()
ライブラリの終了
Declaration
Remarks
説明: ライブラリを終了します。
注意: 本関数は内部的に以下の関数を実行します。 - Finalize() - Finalize() - Finalize() 本関数を実行する場合、上記関数を実行しないでください。 InitializePC(in ConfigPC, IntPtr, int) 関数実行前に本関数を実行することはできません。 本関数は下位レイヤ向けのAPIです。 AtomExレイヤの機能を利用する際には、本関数の代わりに FinalizePC() 関数をご利用ください。
See Also
FinalizePULSE()
ライブラリの終了
Declaration
Remarks
説明: ライブラリを終了します。
注意: 本関数は内部的に以下の関数を実行します。 - Finalize() - Finalize() - Finalize() 本関数を実行する場合、上記関数を実行しないでください。 InitializePULSE(in ConfigPULSE, IntPtr, int) 関数実行前に本関数を実行することはできません。 本関数は下位レイヤ向けのAPIです。 AtomExレイヤの機能を利用する際には、本関数の代わりに FinalizePULSE() 関数をご利用ください。
See Also
FinalizeWASAPI()
ライブラリの終了
Declaration
Remarks
説明: ライブラリを終了します。
注意: 本関数は内部的に以下の関数を実行します。 - Finalize() - Finalize() - Finalize() 本関数を実行する場合、上記関数を実行しないでください。 InitializeWASAPI(in ConfigWASAPI, IntPtr, int) 関数実行前に本関数を実行することはできません。 本関数は下位レイヤ向けのAPIです。 AtomExレイヤの機能を利用する際には、本関数の代わりに FinalizeWASAPI() 関数をご利用ください。
See Also
GetAudioClientIsFormatSupportedWASAPI(IntPtr)
指定したフォーマットが利用可能かどうかチェック
Declaration
Parameters
Type | Name | Description |
---|---|---|
IntPtr | format | 使用するフォーマット |
Returns
Type | Description |
---|---|
bool | 指定されたフォーマットが利用可能かどうか( true = 利用可能、false = 利用不可能) |
Remarks
説明: 引数で指定したフォーマットが、排他モードで利用可能かどうかをチェックします。
備考: 本関数は IAudioClient::IsFormatSupported 関数のラッパーです。 本関数を実行すると、関数内で AudioClient を作成し、IsFormatSupported 関数を実行します。
注意: 本関数はライブラリ初期化前にのみ使用可能です。 一部のデバイス/パラメーターについて、本関数が成功するにもかかわらず、 WASAPI の初期化に失敗するケースが確認されています。 本関数が true を返したにもかかわらず、ライブラリの初期化に失敗する場合には、 指定するフォーマットを変更するか、または共有モードをご使用ください。
GetAudioClientMixFormatWASAPI(IntPtr)
ミキサフォーマットの取得
Declaration
Parameters
Type | Name | Description |
---|---|---|
IntPtr | format | ミキサのフォーマット |
Returns
Type | Description |
---|---|
bool | ミキサのフォーマットが取得できたかどうか( true = 成功、false = 失敗) |
Remarks
説明: 共有モード時に使用されるミキサのフォーマットを取得します。
備考: 本関数は IAudioClient::GetMixFormat 関数のラッパーです。 本関数を実行すると、関数内で AudioClient を作成し、GetMixFormat 関数を実行します。
注意: 本関数はライブラリ初期化前にのみ使用可能です。 共有モードと排他モードとでは、使用できるフォーマットが異なります。 本関数で取得する WAVEFORMATEXTENSIBLE 構造体は IEEE float 形式のPCMデータフォーマットを返しますが、 このフォーマットは排他モードではほとんどの場合使用できません。
GetAudioClientShareModeWASAPI()
共有方式の取得
Declaration
Returns
Type | Description |
---|---|
int | 共有方式 |
Remarks
説明: 現在指定されている共有方式を取得します。
See Also
GetAudioClientWASAPI()
AudioClientの取得
Declaration
Returns
Type | Description |
---|---|
IntPtr | AudioClient |
Remarks
説明: Atomライブラリ内で作成されたAudioClientを取得します。
備考: サウンドデバイスが搭載されていないPCで本関数を実行した場合、 本関数はnullを返します。
注意: 本関数を実行する前に、ライブラリを初期化する必要があります。
GetPerformanceInfo(out PerformanceInfo)
パフォーマンス情報の取得
Declaration
public static void GetPerformanceInfo(out CriAtom.PerformanceInfo info)
Parameters
Type | Name | Description |
---|---|---|
CriAtom.PerformanceInfo | info | パフォーマンス情報 |
Remarks
説明: パフォーマンス情報を取得します。 本関数は、 AttachPerformanceMonitor() 関数実行後から DetachPerformanceMonitor() 関数を実行するまでの間、利用可能です。
See Also
GetStreamingInfo(out StreamingInfo)
ストリーミング情報の取得
Declaration
public static bool GetStreamingInfo(out CriAtom.StreamingInfo streamingInfo)
Parameters
Type | Name | Description |
---|---|---|
CriAtom.StreamingInfo | streamingInfo | ストリーミング情報保存先のポインタ |
Returns
Type | Description |
---|---|
bool | 値を取得できた |
Remarks
説明: CRI Atomライブラリのストリーミング管理モジュールからストリーミング情報を取得します。 本関数は、呼び出された時点のストリーミング情報を streaming_info に保存します。
注意: Atomサーバー内の処理と一部排他制御しているため、 優先度逆転によりAtomサーバーを止めてしまわないように注意してください。 一部のプラットフォームでは、ストリーミング情報を取得できません。 本関数の戻り値を確認してください。 エラーが原因でストリーミング情報を取得できなかった場合については、 エラーコールバックが発生していないかを確認してください。
See Also
GetThreadAffinityMaskPC()
サーバー処理スレッドのアフィニティマスクの取得
Declaration
Returns
Type | Description |
---|---|
IntPtr | スレッドアフィニティマスク |
Remarks
説明: サーバー処理(ライブラリの内部処理)を行うスレッドのアフィニティマスクを取得します。 取得に成功すると、本関数はサーバー処理を行うスレッドのアフィニティマスクを返します。 取得に失敗した場合、本関数は 0 を返します。
注意: : 本関数は、ライブラリ初期化時にスレッドモデルをマルチスレッドモデル ( Multi )に設定した場合にのみ効果を発揮します。 他のスレッドモデルを選択した場合、本関数はエラー値を返します。 (エラーコールバックが発生します。) 本関数は初期化後~終了処理前の間に実行する必要があります。 初期化前や終了処理後に本関数を実行した場合、本関数はエラー値を返します。 (エラーコールバックが発生します。)
See Also
GetThreadPriorityPC()
サーバー処理スレッドのプライオリティ取得
Declaration
Returns
Type | Description |
---|---|
int | スレッドプライオリティ |
Remarks
説明: サーバー処理(ライブラリの内部処理)を行うスレッドのプライオリティを取得します。 取得に成功すると、本関数はサーバー処理を行うスレッドのプライオリティを返します。 取得に失敗した場合、本関数は THREAD_PRIORITY_ERROR_RETURN を返します。
注意: : 本関数は、ライブラリ初期化時にスレッドモデルをマルチスレッドモデル ( Multi )に設定した場合にのみ効果を発揮します。 他のスレッドモデルを選択した場合、本関数はエラー値を返します。 (エラーコールバックが発生します。) 本関数は初期化後~終了処理前の間に実行する必要があります。 初期化前や終了処理後に本関数を実行した場合、本関数はエラー値を返します。 (エラーコールバックが発生します。)
See Also
GetVersionString()
ライブラリのバージョン番号やビルド情報を返します。
Declaration
public static NativeString GetVersionString()
Returns
Type | Description |
---|---|
NativeString | CriChar8* ライブラリ情報文字列 |
Remarks
説明: ライブラリのバージョン、ビルドした日時、プラットフォームの情報が表示されます。
Initialize(in Config, IntPtr, int)
ライブラリの初期化
Declaration
public static void Initialize(in CriAtom.Config config, IntPtr work = default, int workSize = 0)
Parameters
Type | Name | Description |
---|---|---|
CriAtom.Config | config | 初期化用コンフィグ構造体 |
IntPtr | work | ワーク領域 |
int | workSize | ワーク領域サイズ |
Remarks
説明: CRI Atomライブラリを初期化します。 ライブラリの機能を利用するには、必ずこの関数を実行する必要があります。 (ライブラリの機能は、本関数を実行後、 Finalize() 関数を実行するまでの間、 利用可能です。) ライブラリを初期化する際には、ライブラリが内部で利用するためのメモリ領域(ワーク領域) を確保する必要があります。 ワーク領域を確保する方法には、以下の2通りの方法があります。 (a) User Allocator方式:メモリの確保/解放に、ユーザが用意した関数を使用する方法。 (b) Fixed Memory方式:必要なメモリ領域を直接ライブラリに渡す方法。 User Allocator方式を用いる場合、ユーザはCRI Atomライブラリにメモリ確保関数を登録しておきます。 workにnull、work_sizeに0を指定して本関数を呼び出すことで、 ライブラリは登録済みのメモリ確保関数を使用して必要なメモリを自動的に確保します。 ユーザがワーク領域を用意する必要はありません。 初期化時に確保されたメモリは、終了処理時( Finalize() 関数実行時)に解放されます。 Fixed Memory方式を用いる場合、ワーク領域として別途確保済みのメモリ領域を本関数に 設定する必要があります。 ワーク領域のサイズは CalculateWorkSize(in Config) 関数で取得可能です。 初期化処理の前に CalculateWorkSize(in Config) 関数で取得したサイズ分のメモリを予め 確保しておき、本関数に設定してください。 尚、Fixed Memory方式を用いた場合、ワーク領域はライブラリの終了処理( Finalize() 関数) を行うまでの間、ライブラリ内で利用され続けます。 ライブラリの終了処理を行う前に、ワーク領域のメモリを解放しないでください。
備考: ライブラリが必要とするワーク領域のサイズは、初期化用コンフィグ構造体の内容に応じて 変化します。 また、必要なワーク領域のサイズは、プラットフォームによっても異なります。 引数 config の情報は、関数内でのみ参照されます。 関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意: 現状、ストリーム再生の有無に関係なく、CRI Atomライブラリの初期化前に必ず CRI File Systemライブラリを初期化しておく必要があります。 CRI File Systemライブラリの初期化が行われていない場合は、 CRI Atomライブラリ内部でCRI File Systemライブラリを初期化します。 その際の初期化パラメーターはSetDefaultConfig(out Config)処理メソッドで設定される値です。 本関数を実行後、必ず対になる Finalize() 関数を実行してください。 また、 Finalize() 関数を実行するまでは、本関数を再度実行することはできません。
See Also
InitializeIOS(in ConfigIOS, IntPtr, int)
ライブラリの初期化
Declaration
public static void InitializeIOS(in CriAtom.ConfigIOS config, IntPtr work = default, int workSize = 0)
Parameters
Type | Name | Description |
---|---|---|
CriAtom.ConfigIOS | config | 初期化用コンフィグ構造体 |
IntPtr | work | ワーク領域 |
int | workSize | ワーク領域サイズ |
Remarks
説明: ライブラリを初期化します。 ライブラリの機能を利用するには、必ずこの関数を実行する必要があります。 (ライブラリの機能は、本関数を実行後、 FinalizeIOS() 関数を実行するまでの間、 利用可能です。) ライブラリを初期化する際には、ライブラリが内部で利用するためのメモリ領域(ワーク領域) を確保する必要があります。 ライブラリが必要とするワーク領域のサイズは、初期化用コンフィグ構造体の内容に応じて 変化します。 ワーク領域サイズの計算には、 CalculateWorkSizeIOS(in ConfigIOS) 関数を使用してください。
備考: SetUserAllocator(delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr>, delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void>, IntPtr) メソッドを使用してアロケータを登録済みの場合、 本関数にワーク領域を指定する必要はありません。 ( work に null 、 work_size に 0 を指定することで、登録済みのアロケータ から必要なワーク領域サイズ分のメモリが動的に確保されます。) 引数 config の情報は、関数内でのみ参照されます。 関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意: 本関数は内部的に以下の関数を実行します。 - Initialize(in Config, IntPtr, int) - Initialize(in Config, IntPtr, int) - Initialize(in Config, IntPtr, int) 本関数を実行する場合、上記関数を実行しないでください。 本関数を実行後、必ず対になる FinalizeIOS() 関数を実行してください。 また、 FinalizeIOS() 関数を実行するまでは、本関数を再度実行しないでください。 本関数は下位レイヤ向けのAPIです。 AtomExレイヤの機能を利用する際には、本関数の代わりに InitializeIOS(in ConfigIOS, IntPtr, int) 関数をご利用ください。
See Also
InitializeMACOSX(in ConfigMACOSX, IntPtr, int)
ライブラリの初期化
Declaration
public static void InitializeMACOSX(in CriAtom.ConfigMACOSX config, IntPtr work = default, int workSize = 0)
Parameters
Type | Name | Description |
---|---|---|
CriAtom.ConfigMACOSX | config | 初期化用コンフィグ構造体 |
IntPtr | work | ワーク領域 |
int | workSize | ワーク領域サイズ |
Remarks
説明: ライブラリを初期化します。 ライブラリの機能を利用するには、必ずこの関数を実行する必要があります。 (ライブラリの機能は、本関数を実行後、 FinalizeMACOSX() 関数を実行するまでの間、 利用可能です。) ライブラリを初期化する際には、ライブラリが内部で利用するためのメモリ領域(ワーク領域) を確保する必要があります。 ライブラリが必要とするワーク領域のサイズは、初期化用コンフィグ構造体の内容に応じて 変化します。 ワーク領域サイズの計算には、 CalculateWorkSizeMACOSX(in ConfigMACOSX) 関数を使用してください。
備考: SetUserAllocator(delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr>, delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void>, IntPtr) メソッドを使用してアロケータを登録済みの場合、 本関数にワーク領域を指定する必要はありません。 ( work に null 、 work_size に 0 を指定することで、登録済みのアロケータ から必要なワーク領域サイズ分のメモリが動的に確保されます。) 引数 config の情報は、関数内でのみ参照されます。 関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意: 本関数は内部的に以下の関数を実行します。 - Initialize(in Config, IntPtr, int) - Initialize(in Config, IntPtr, int) - Initialize(in Config, IntPtr, int) . 本関数を実行する場合、上記関数を実行しないでください。 本関数を実行後、必ず対になる FinalizeMACOSX() 関数を実行してください。 また、 FinalizeMACOSX() 関数を実行するまでは、本関数を再度実行しないでください。 本関数は下位レイヤ向けのAPIです。 AtomExレイヤの機能を利用する際には、本関数の代わりに InitializeMACOSX(in ConfigMACOSX, IntPtr, int) 関数をご利用ください。
See Also
InitializePC(in ConfigPC, IntPtr, int)
ライブラリの初期化
Declaration
public static void InitializePC(in CriAtom.ConfigPC config, IntPtr work = default, int workSize = 0)
Parameters
Type | Name | Description |
---|---|---|
CriAtom.ConfigPC | config | 初期化用コンフィグ構造体 |
IntPtr | work | ワーク領域 |
int | workSize | ワーク領域サイズ |
Remarks
説明: ライブラリを初期化します。 ライブラリの機能を利用するには、必ずこの関数を実行する必要があります。 (ライブラリの機能は、本関数を実行後、 FinalizePC() 関数を実行するまでの間、 利用可能です。) ライブラリを初期化する際には、ライブラリが内部で利用するためのメモリ領域(ワーク領域) を確保する必要があります。 ライブラリが必要とするワーク領域のサイズは、初期化用コンフィグ構造体の内容に応じて 変化します。 ワーク領域サイズの計算には、 CalculateWorkSizePC(in ConfigPC) 関数を使用してください。
備考: SetUserAllocator(delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr>, delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void>, IntPtr) メソッドを使用してアロケーターを登録済みの場合、 本関数にワーク領域を指定する必要はありません。 ( work に null 、 work_size に 0 を指定することで、登録済みのアロケーター から必要なワーク領域サイズ分のメモリが動的に確保されます。) 引数 config の情報は、関数内でのみ参照されます。 関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意: 本関数は内部的に以下の関数を実行します。 - Initialize(in Config, IntPtr, int) - Initialize(in Config, IntPtr, int) - Initialize(in Config, IntPtr, int) 本関数を実行する場合、上記関数を実行しないでください。 本関数を実行後、必ず対になる FinalizePC() 関数を実行してください。 また、 FinalizePC() 関数を実行するまでは、本関数を再度実行しないでください。 本関数は下位レイヤ向けのAPIです。 AtomExレイヤの機能を利用する際には、本関数の代わりに InitializePC(in ConfigPC, IntPtr, int) 関数をご利用ください。
See Also
InitializePULSE(in ConfigPULSE, IntPtr, int)
ライブラリの初期化
Declaration
public static void InitializePULSE(in CriAtom.ConfigPULSE config, IntPtr work = default, int workSize = 0)
Parameters
Type | Name | Description |
---|---|---|
CriAtom.ConfigPULSE | config | 初期化用コンフィグ構造体 |
IntPtr | work | ワーク領域 |
int | workSize | ワーク領域サイズ |
Remarks
説明: ライブラリを初期化します。 ライブラリの機能を利用するには、必ずこの関数を実行する必要があります。 (ライブラリの機能は、本関数を実行後、 FinalizePULSE() 関数を実行するまでの間、 利用可能です。) ライブラリを初期化する際には、ライブラリが内部で利用するためのメモリ領域(ワーク領域) を確保する必要があります。 ライブラリが必要とするワーク領域のサイズは、初期化用コンフィグ構造体の内容に応じて 変化します。 ワーク領域サイズの計算には、 CalculateWorkSizePULSE(in ConfigPULSE) 関数を使用してください。
備考: SetUserAllocator(delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr>, delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void>, IntPtr) メソッドを使用してアロケータを登録済みの場合、 本関数にワーク領域を指定する必要はありません。 ( work に null 、 work_size に 0 を指定することで、登録済みのアロケータ から必要なワーク領域サイズ分のメモリが動的に確保されます。) 引数 config の情報は、関数内でのみ参照されます。 関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意: 本関数は内部的に以下の関数を実行します。 - Initialize(in Config, IntPtr, int) - Initialize(in Config, IntPtr, int) - Initialize(in Config, IntPtr, int) 本関数を実行する場合、上記関数を実行しないでください。 本関数を実行後、必ず対になる FinalizePULSE() 関数を実行してください。 また、 FinalizePULSE() 関数を実行するまでは、本関数を再度実行しないでください。 本関数は下位レイヤ向けのAPIです。 AtomExレイヤの機能を利用する際には、本関数の代わりに InitializePULSE(in ConfigPULSE, IntPtr, int) 関数をご利用ください。
See Also
InitializeWASAPI(in ConfigWASAPI, IntPtr, int)
ライブラリの初期化
Declaration
public static void InitializeWASAPI(in CriAtom.ConfigWASAPI config, IntPtr work = default, int workSize = 0)
Parameters
Type | Name | Description |
---|---|---|
CriAtom.ConfigWASAPI | config | 初期化用コンフィグ構造体 |
IntPtr | work | ワーク領域 |
int | workSize | ワーク領域サイズ |
Remarks
説明: ライブラリを初期化します。 ライブラリの機能を利用するには、必ずこの関数を実行する必要があります。 (ライブラリの機能は、本関数を実行後、 FinalizeWASAPI() 関数を実行するまでの間、 利用可能です。) ライブラリを初期化する際には、ライブラリが内部で利用するためのメモリ領域(ワーク領域) を確保する必要があります。 ライブラリが必要とするワーク領域のサイズは、初期化用コンフィグ構造体の内容に応じて 変化します。 ワーク領域サイズの計算には、 CalculateWorkSizeWASAPI(in ConfigWASAPI) 関数を使用してください。
備考: SetUserAllocator(delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr>, delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void>, IntPtr) メソッドを使用してアロケーターを登録済みの場合、 本関数にワーク領域を指定する必要はありません。 ( work に null 、 work_size に 0 を指定することで、登録済みのアロケーター から必要なワーク領域サイズ分のメモリが動的に確保されます。) 引数 config の情報は、関数内でのみ参照されます。 関数を抜けた後は参照されませんので、関数実行後に config の領域を解放しても 問題ありません。
注意: 本関数は内部的に以下の関数を実行します。 - Initialize(in Config, IntPtr, int) - Initialize(in Config, IntPtr, int) - Initialize(in Config, IntPtr, int) 本関数を実行する場合、上記関数を実行しないでください。 本関数を実行後、必ず対になる FinalizeWASAPI() 関数を実行してください。 また、 FinalizeWASAPI() 関数を実行するまでは、本関数を再度実行しないでください。 本関数は下位レイヤ向けのAPIです。 AtomExレイヤの機能を利用する際には、本関数の代わりに InitializeWASAPI(in ConfigWASAPI, IntPtr, int) 関数をご利用ください。
See Also
IsAudioOutputActive()
オーディオ出力が有効かどうかのチェック
Declaration
public static bool IsAudioOutputActive()
Returns
Type | Description |
---|---|
bool | オーディオ出力が有効かどうか |
Remarks
説明: オーディオ出力が有効化どうかをチェックします。 CRI Atomライブラリ初期化時、サウンドデバイスが利用可能であった場合、 本関数はtrueを返します。 CRI Atomライブラリ初期化時に、サウンドデバイスが利用不可能であった場合、 本関数はfalseを返します。
補足: サウンドデバイスが無効な場合でも、Atomライブラリは音声を出力せずに動作します。 (音声データ消費量をタイマーを元に計算し、可能な限り音声出力が有効な場合と同等の動作をエミュレートします。) そのため、音声出力デバイスが使用できないケースであっても、 アプリケーション側でAtomライブラリのAPI呼び出しを回避する必要はありません。 (PC環境等、ユーザがサウンドデバイスを無効化しているケースに対し通知を行いたい場合に、 本関数を使用してください。)
注意: 本関数は、「Atomライブラリ初期化時点でオーディオデバイスが利用可能だったかどうか」を返します。 ライブラリ初期化後にユーザがサウンドデバイスを抜き差しするケースについては、本関数では検知できません。 (各機種固有のAPIを使用する必要があります。) オーディオ出力が無効な状態でAtomライブラリを初期化後、 ユーザがオーディオデバイスを有効化したとしても、Atomライブラリは音声出力を行いません。 (オーディオデバイスが接続されたことをAtomライブラリが自動で検出することはありません。) アプリケーション実行中にオーディオデバイスを有効化したい場合には、 Atomライブラリの初期化処理をやり直す必要があります。
See Also
IsDeviceInvalidatedWASAPI()
デバイスが無効化されたかどうかのチェック
Declaration
Returns
Type | Description |
---|---|
bool | デバイスが無効化されたかどうか(true = 無効化された、false = 正常に動作中) |
Remarks
説明: サウンドデバイスが無効化されたかどうかを返します。
備考: 本関数がtrueを返すのは、アプリケーション実行中にサウンドデバイスを無効化した場合のみです。 元々サウンドデバイスが搭載されていないPCで本関数を実行した場合、本関数はfalseを返します。 (サウンドデバイスの有無は別途 GetAudioClientWASAPI() 関数でチェックする必要があります。)
See Also
IsInitializationSucceededIOS()
サウンドの初期化に成功したか否か
Declaration
Returns
Type | Description |
---|---|
bool |
Remarks
説明: サウンドライブラリの初期化に成功したか否かを返す関数です。 iOSでは、アプリがバックグラウンドにある状態でサウンドライブラリの初期化を行った場合に 内部的にAudioSessionの初期化等に失敗している場合があります。 本関数で初期化が失敗していることを確認した場合は、アプリがフォアグラウンドにある状態で 再度ライブラリの初期化を行うか、 RecoverSoundIOS() を用いて サウンドの復旧を行う必要があります。 本関数は下位レイヤ向けのAPIです。 AtomExレイヤの機能を利用する際には、本関数の代わりに IsInitializationSucceededIOS() 関数をご利用ください。
IsInitialized()
ライブラリ初期化状態の取得
Declaration
public static bool IsInitialized()
Returns
Type | Description |
---|---|
bool | 初期化中かどうか |
Remarks
説明: CRI Atomライブラリが既に初期化されているかどうかをチェックします。
See Also
IsSpatialAudioEnabledWASAPI(SoundRendererType)
スペーシャルオーディオ機能が有効かどうかのチェック
Declaration
Parameters
Type | Name | Description |
---|---|---|
CriAtom.SoundRendererType | type | サウンドレンダラタイプ |
Returns
Type | Description |
---|---|
bool | 機能が有効かどうか(true = 有効、false = 無効) |
Remarks
説明: スペーシャルオーディオ機能が有効になっているかどうかをチェックします。 引数の type には、スペーシャルオーディオ機能が有効化どうかをチェックしたいサウンドレンダラを指定します。
Lock()
サーバー処理の割り込みを防止
Declaration
public static void Lock()
Remarks
説明: サーバー処理の割り込みを防止します。 本関数実行後、Unlock() 関数実行までの間、サーバー処理の動作を防止します。 複数のAPIを同一オーディオフレーム内で確実に実行したい場合には、本関数でサーバー処理の 割り込みを防止し、それらの関数を実行してください。
注意: 上記の例のように、複数のプレーヤーで同時に再生をスタートする場合でも、 ストリーム再生時は同時に発音が開始されるとは限りません。 (バッファリングに伴う再生遅延があるため。) 本関数実行後、長時間Unlock() 関数を呼ばない場合、音声再生が途切れる恐れがあります。 サーバー処理の割り込みを防止する区間は、最小限に抑える必要があります。
See Also
RecoverSoundIOS()
サウンドの復旧
Declaration
Remarks
説明: AudioSessionAddPropertyListener Callback関数から呼び出すための関数です。 ライブラリ内部のボイスを復旧します。 iOSのデーモンであるmediaserverdが死亡した際には、ライブラリ内のボイスが無効なボイスになり、 再生成が必要になります。 このように、ボイスの復旧が必要な際に呼び出してください。 本関数は下位レイヤ向けのAPIです。 AtomExレイヤの機能を利用する際には、本関数の代わりに RecoverSoundIOS() 関数をご利用ください。
ResetPerformanceMonitor()
パフォーマンスモニターのリセット
Declaration
public static void ResetPerformanceMonitor()
Remarks
説明: 現在までの計測結果を破棄します。 パフォーマンスモニターは、 AttachPerformanceMonitor() 関数実行直後 からパフォーマンス情報の取得を開始し、計測結果を累積します。 これから計測する区間に対し、以前の計測結果を以降の計測結果に含めたくない場合には、 本関数を実行し、累積された計測結果を一旦破棄する必要があります。
SetAmbisonicsInputFormat(AmbisonicsFormat)
Ambisonics音声のフォーマット指定
Declaration
public static void SetAmbisonicsInputFormat(CriAtom.AmbisonicsFormat format)
Parameters
Type | Name | Description |
---|---|---|
CriAtom.AmbisonicsFormat | format | フォーマット |
Remarks
説明: Ambisonics音声データのチャンネル並び順と正規化方式を指定します。 デフォルトのフォーマットは CRIATOM_AMBISONICS_ACN_SN3D です。
SetAudioClientBufferDurationWASAPI(long)
バッファリング時間の指定
Declaration
Parameters
Type | Name | Description |
---|---|---|
long | refTime | バッファリング時間 |
Remarks
説明: WASAPI 初期化時に指定するバッファリング時間を指定します。 Atomライブラリは、本関数で指定された時間分のデータを保持可能なサイズのサウンドバッファーを確保します。
備考: 本関数に指定した値が IAudioClient::Initialize 関数に渡されます。 ref_timeに0を指定した場合や、本関数を使用しない場合、 Atomライブラリは初期化時に指定されるサーバー処理周波数の値から、 適切なバッファリング時間を計算します。 PC環境ではハードウェア性能にばらつきがあるため、 ワースト性能のハードウェアに合わせてデフォルトのバッファリング量が多めに設定されています。 (デフォルト状態では4V分のバッファーを持っています。)
注意: 本関数はライブラリの初期化よりも先に実行しておく必要があります。 バッファリング時間を小さくしすぎると、音途切れ等の問題が発生します。 PC環境ではハードウェアに依存して必要なバッファリング量が異なるため、 本関数を使用した場合、テスト環境でうまく動作していても、 ユーザの環境によっては音途切れが発生する可能性があります。 そのため、バッファリング量を変更する場合には、 ユーザが設定値を変更できる仕組み(オプション画面等)を提供することもご検討ください。
SetAudioClientFormatWASAPI(IntPtr)
出力フォーマットの指定
Declaration
Parameters
Type | Name | Description |
---|---|---|
IntPtr | format | 使用するフォーマット |
Remarks
説明:
説明: 排他モードで使用するフォーマットを指定します。
備考: 本関数に指定したフォーマットが、 IAudioClient::Initialize 関数に渡されます。
注意: 本関数はライブラリの初期化よりも先に実行しておく必要があります。 排他モードを使用する場合、本関数でのモード指定に加え、 SetAudioClientShareModeWASAPI(int) 関数によるモード指定が必要です。
See Also
SetAudioClientShareModeWASAPI(int)
共有方式の指定
Declaration
Parameters
Type | Name | Description |
---|---|---|
int | mode | 使用するモード |
Remarks
説明: WASAPIを共有モードで使用するか、排他モードで使用するかを指定します。 本関数を実行しない場合や、 AUDCLNT_SHAREMODE_SHARED を指定して実行した場合、 Atomライブラリは WASAPI を共有モードで初期化します。 AUDCLNT_SHAREMODE_EXCLUSIVE を指定して本関数を実行した場合、 Atomライブラリは WASAPI を排他モードで初期化します。
注意: 本関数はライブラリの初期化よりも先に実行しておく必要があります。 排他モードを使用する場合、本関数でのモード指定に加え、 SetAudioClientFormatWASAPI(IntPtr) 関数によるフォーマットの指定が必要です。
See Also
SetAudioFrameEndCallback(delegate* unmanaged[Cdecl]<IntPtr, void>, IntPtr)
オーディオフレーム終了コールバック関数の登録
Declaration
public static void SetAudioFrameEndCallback(delegate* unmanaged[Cdecl]<IntPtr, void> func, IntPtr obj)
Parameters
Type | Name | Description |
---|---|---|
delegate* unmanaged[Cdecl]<IntPtr, void> | func | オーディオフレーム終了コールバック関数 |
IntPtr | obj | ユーザ指定オブジェクト |
Remarks
説明: CRI Atomライブラリにオーディオフレーム終了コールバックを登録します。 オーディオフレームは、CRI Atomライブラリ内でサーバー処理を実行するタイミングを示します。 本関数で登録したコールバック関数は、オーディオフレームの終了時(サーバー処理終了直後)に 実行されます。
備考: ライブラリ初期化時にスレッドモデルをマルチスレッド( Multi ) に設定した場合、コールバック関数はCRI Atomライブラリ内で作成されたスレッドから 呼び出されます。 ライブラリ初期化時にスレッドモデルをユーザマルチスレッド( UserMulti )、 またはシングルスレッド( Single )に設定した場合、コールバック関数 ExecuteMain() 関数内で呼び出されます。 引数の obj に指定した値は、 CriAtom.AudioFrameEndCbFunc に引数として渡されます。
注意: コールバック関数は1つしか登録できません。 登録操作を複数回行った場合、既に登録済みのコールバック関数が、 後から登録したコールバック関数により上書きされてしまいます。 funcにnullを指定することで登録済み関数の登録解除が行えます。
SetAudioFrameStartCallback(delegate* unmanaged[Cdecl]<IntPtr, void>, IntPtr)
オーディオフレーム開始コールバック関数の登録
Declaration
public static void SetAudioFrameStartCallback(delegate* unmanaged[Cdecl]<IntPtr, void> func, IntPtr obj)
Parameters
Type | Name | Description |
---|---|---|
delegate* unmanaged[Cdecl]<IntPtr, void> | func | オーディオフレーム開始コールバック関数 |
IntPtr | obj | ユーザ指定オブジェクト |
Remarks
説明: CRI Atomライブラリにオーディオフレーム開始コールバックを登録します。 オーディオフレームは、CRI Atomライブラリ内でサーバー処理を実行するタイミングを示します。 本関数で登録したコールバック関数は、オーディオフレームの開始時(サーバー処理開始直前)に 実行されます。
備考: ライブラリ初期化時にスレッドモデルをマルチスレッド( Multi ) に設定した場合、コールバック関数はCRI Atomライブラリ内で作成されたスレッドから 呼び出されます。 ライブラリ初期化時にスレッドモデルをユーザマルチスレッド( UserMulti )、 またはシングルスレッド( Single )に設定した場合、コールバック関数 ExecuteMain() 関数内で呼び出されます。 引数の obj に指定した値は、 CriAtom.AudioFrameStartCbFunc に引数として渡されます。
注意: コールバック関数は1つしか登録できません。 登録操作を複数回行った場合、既に登録済みのコールバック関数が、 後から登録したコールバック関数により上書きされてしまいます。 funcにnullを指定することで登録済み関数の登録解除が行えます。
SetDefaultConfig(out Config)
CriAtom.Configへのデフォルトパラメーターをセット
Declaration
public static void SetDefaultConfig(out CriAtom.Config pConfig)
Parameters
Type | Name | Description |
---|---|---|
CriAtom.Config | pConfig | 初期化用コンフィグ構造体へのポインタ |
Remarks
説明: Initialize(in Config, IntPtr, int) 関数に設定するコンフィグ構造体( CriAtom.Config )に、 デフォルトの値をセットします。
See Also
SetDeviceIdWASAPI(SoundRendererType, IntPtr)
サウンドデバイスの指定
Declaration
Parameters
Type | Name | Description |
---|---|---|
CriAtom.SoundRendererType | type | サウンドレンダラタイプ |
IntPtr | deviceId | デバイスID |
Remarks
説明: サウンドレンダラタイプとサウンドデバイスの紐づけを行います。 本関数でサウンドレンダラに対してデバイスIDを設定すると、 当該サウンドレンダラを指定して出力した音声は、 全て指定したIDに合致するサウンドデバイスから出力されます。 type には、以下の値が指定可能です。 - Hw1(Nativeと同じ値) - Hw2 - Hw3 - Hw4 第2引数(device_id)にnullまたは長さ0の文字列を指定した場合、 当該サウンドレンダラとデバイスIDの紐づけが解除されます。 (既定のデバイスから音声を出力するよう、動作が変更されます。)
備考: サウンドデバイスのIDは IMMDevice::GetId で取得する必要があります。 指定されたIDに一致するサウンドデバイスが見つからない場合、 当該デバイスを指定して再生された音声は、既定のデバイスから出力されます。
SetDeviceUpdateCallback(delegate* unmanaged[Cdecl]<IntPtr, void>, IntPtr)
デバイス更新通知の登録
Declaration
public static void SetDeviceUpdateCallback(delegate* unmanaged[Cdecl]<IntPtr, void> func, IntPtr obj)
Parameters
Type | Name | Description |
---|---|---|
delegate* unmanaged[Cdecl]<IntPtr, void> | func | デバイス更新通知コールバック関数 |
IntPtr | obj | ユーザ指定オブジェクト |
Remarks
説明: デバイスの更新通知を受け取るためのコールバックを設定します。 本関数を実行すると、デバイスが更新された際、第 1 引数( callback ) でセットされたコールバック関数が呼び出されます。
備考: 第 2 引数( object )にセットした値は、コールバック関数の引数として渡されます。
SetDeviceUpdateCallbackWASAPI(delegate* unmanaged[Cdecl]<IntPtr, void>, IntPtr)
デバイス更新通知の登録
Declaration
public static void SetDeviceUpdateCallbackWASAPI(delegate* unmanaged[Cdecl]<IntPtr, void> callback, IntPtr @object)
Parameters
Type | Name | Description |
---|---|---|
delegate* unmanaged[Cdecl]<IntPtr, void> | callback | デバイス更新通知コールバック関数 |
IntPtr | object | ユーザ指定オブジェクト |
Remarks
説明: デバイスの更新通知を受け取るためのコールバックを設定します。 本関数を実行すると、デバイスが更新された際、第 1 引数( callback ) でセットされたコールバック関数が呼び出されます。
備考: 第 2 引数( object )にセットした値は、コールバック関数の引数として渡されます。
See Also
SetFreeTimeBufferingFlagForDefaultDevice(NativeBool)
ファイルI/Oの空き時間を使ったストリーミング読み込みを行うかどうか
Declaration
public static bool SetFreeTimeBufferingFlagForDefaultDevice(NativeBool flag)
Parameters
Type | Name | Description |
---|---|---|
NativeBool | flag | true=ファイルI/Oの空き時間を使って読み込む |
Returns
Type | Description |
---|---|
bool | 正常に処理が完了 |
Remarks
説明: CRI Atomライブラリのストリーミング管理モジュールに対して、 ファイルI/Oの空き時間を使ってストリーミング読み込みを行うかどうかを設定します。 trueを設定すると、CRI Atomライブラリのストリーミング管理モジュールは ファイルI/Oの空き時間を使って、空きバッファーに対してデータを余分に読み込みます。 falseを設定すると、CRI Atomライブラリのストリーミング管理モジュールは ファイルI/Oの空き時間を使わなくなり、余分なストリーミング読み込みを行わなくなります。 デフォルトではtrueを設定した状態です。
備考: ファイルI/Oの空き時間を使い、空きバッファーに対してデータを余分に読み込んでおくことで、 シークの発生頻度を減らす事ができ、総合的なファイルI/Oの効率が向上します。 一方、通常ファイルのロード処理は、ストリーミングの読み込みよりも優先度が低いため、 空きバッファーが大きすぎると通常ファイルのロード処理を大幅に遅延させてしまいます。
注意: Atomサーバー内の処理と一部排他制御しているため、 優先度逆転によりAtomサーバーを止めてしまわないように注意してください。
SetServerThreadPriorityIOS(int)
サーバスレッドプライオリティの設定
Declaration
Parameters
Type | Name | Description |
---|---|---|
int | prio | スレッドのプライオリティ |
Remarks
説明: CRIサーバスレッドのプライオリティを設定します。 引数 prio は pthread のプライオリティ設定値として使用します。 プライオリティ設定値はメインスレッドからの相対値になります。 アプリケーションのメインスレッド(0)よりも高いプライオリティを指定してください。 プライオリティのデフォルト値は16です。
注意: InitializeIOS(in ConfigIOS, IntPtr, int) 関数実行前に本関数を実行することはできません。 サーバ処理スレッドは、CRI File Systemライブラリでも利用されています。 すでにCRI File SystemライブラリのAPIでサーバ処理スレッドの設定を変更している場合 本関数により設定が上書きされますのでご注意ください。
SetServerThreadPriorityMACOSX(int)
サーバスレッドプライオリティの設定
Declaration
Parameters
Type | Name | Description |
---|---|---|
int | prio | スレッドのプライオリティ |
Remarks
説明: CRIサーバスレッドのプライオリティを設定します。 引数 prio は pthread のプライオリティ設定値として使用します。 指定できる値の範囲は通常 -16~99で、数字が大きい方が優先度が高くなります。 アプリケーションのメインスレッド(0)よりも高いプライオリティを指定してください。 プライオリティのデフォルト値は10です。
注意: InitializeMACOSX(in ConfigMACOSX, IntPtr, int) 関数実行前に本関数を実行することはできません。 サーバ処理スレッドは、CRI File Systemライブラリでも利用されています。 すでにCRI File SystemライブラリのAPIでサーバ処理スレッドの設定を変更している場合 本関数により設定が上書きされますのでご注意ください。
SetSpatialAudioEnabledWASAPI(SoundRendererType, NativeBool)
スペーシャルオーディオ機能の有効化
Declaration
Parameters
Type | Name | Description |
---|---|---|
CriAtom.SoundRendererType | type | サウンドレンダラタイプ |
NativeBool | sw | 機能を有効にするかどうか(true = 有効化、false = 無効化) |
Remarks
説明: スペーシャルオーディオ機能(Microsoft Spatial Sound)を有効にします。 引数の type には、スペーシャルオーディオ機能を有効(又は無効)にするサウンドレンダラを指定します。
備考: 現行のライブラリでは、スペーシャルオーディオ機能はデフォルトで有効です。 そのため、スペーシャルオーディオ機能を無効にしたい場合を除き、本関数を明示的に呼び出す必要はありません。
注意: 本関数はライブラリ初期化前に使用する必要があります。
SetThreadAffinityMaskPC(IntPtr)
サーバー処理スレッドのアフィニティマスク変更
Declaration
Parameters
Type | Name | Description |
---|---|---|
IntPtr | mask | スレッドアフィニティマスク |
Remarks
説明: サーバー処理(ライブラリの内部処理)を行うスレッドのアフィニティマスクを変更します。 デフォルト状態(本関数を実行しない場合)では、サーバー処理が動作するプロセッサは 一切制限されません。
注意: : 本関数は、ライブラリ初期化時にスレッドモデルをマルチスレッドモデル ( Multi )に設定した場合にのみ効果を発揮します。 他のスレッドモデルを選択した場合、本関数は何も処理を行いません。 (エラーコールバックが発生します。) 本関数は初期化後~終了処理前の間に実行する必要があります。 初期化前や終了処理後に本関数を実行しても、効果はありません。 (エラーコールバックが発生します。) サーバー処理スレッドは、CRI File Systemライブラリでも利用されています。 すでにCRI File SystemライブラリのAPIでサーバー処理スレッドの設定を変更している場合 本関数により設定が上書きされますのでご注意ください。
See Also
SetThreadPriorityPC(int)
サーバー処理スレッドのプライオリティ変更
Declaration
Parameters
Type | Name | Description |
---|---|---|
int | prio | スレッドプライオリティ |
Remarks
説明: サーバー処理(ライブラリの内部処理)を行うスレッドのプライオリティを変更します。 デフォルト状態(本関数を実行しない場合)では、サーバー処理スレッドのプライオリティは THREAD_PRIORITY_HIGHEST に設定されます。
注意: : 本関数は、ライブラリ初期化時にスレッドモデルをマルチスレッドモデル ( Multi )に設定した場合にのみ効果を発揮します。 他のスレッドモデルを選択した場合、本関数は何も処理を行いません。 (エラーコールバックが発生します。) 本関数は初期化後~終了処理前の間に実行する必要があります。 初期化前や終了処理後に本関数を実行しても、効果はありません。 (エラーコールバックが発生します。) サーバー処理スレッドは、CRI File Systemライブラリでも利用されています。 すでにCRI File SystemライブラリのAPIでサーバー処理スレッドの設定を変更している場合 本関数により設定が上書きされますのでご注意ください。
See Also
SetUserAllocator(delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr>, delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void>, IntPtr)
ユーザアロケーターの登録
Declaration
public static void SetUserAllocator(delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr> pMallocFunc, delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void> pFreeFunc, IntPtr pObj)
Parameters
Type | Name | Description |
---|---|---|
delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr> | pMallocFunc | メモリ確保関数 |
delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void> | pFreeFunc | メモリ解放関数 |
IntPtr | pObj | ユーザ指定オブジェクト |
Remarks
説明: CRI Atom ライブラリにメモリアロケーター(メモリの確保/解放関数)を登録します。 本メソッドでアロケーターを登録すると、Atomライブラリがワーク領域を必要とするタイミングで、 ユーザが登録したメモリ確保/解放処理が呼び出されることになります。 その結果、ワーク領域を必要とする関数( CreateAdxPlayer(in AdxPlayerConfig, IntPtr, int) 関数等)に対し、 個別にワーク領域をセットする処理を省略することが可能になります。 (ワーク領域に null ポインタ、ワーク領域サイズに 0 バイトを指定した場合でも、 アロケーターからの動的メモリ確保によりライブラリが問題なく動作するようになります。)
注意: メモリ確保/解放関数のポインタに null を指定することで、 アロケーターの登録を解除することも可能です。 ただし、未解放のメモリ領域が残っている状態で登録を解除すると、 エラーコールバックが返され、登録の解除に失敗します。 (引き続き登録済みのアロケーターが呼び出されることになります。) 本メソッドは内部的に SetUserMallocFunction(delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr>, IntPtr) 関数と SetUserFreeFunction(delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void>, IntPtr) 関数を呼び出します。 本関数とこれらの API を併用しないようご注意ください。 (本関数の呼び出しにより、上記 API にセットした内容が上書きされます。) また、登録されたメモリアロケーター関数はマルスレッドモード時に複数のスレッドからコール されることがあります。従って、メモリアロケート処理がスレッドセーフでない場合は独自に メモリアロケート処理を排他制御する必要があります。
SetUserFreeFunction(delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void>, IntPtr)
メモリ解放関数の登録
Declaration
public static void SetUserFreeFunction(delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void> func, IntPtr obj)
Parameters
Type | Name | Description |
---|---|---|
delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void> | func | メモリ解放関数 |
IntPtr | obj | ユーザ指定オブジェクト |
Remarks
説明: CRI Atomライブラリにメモリ解放関数を登録します。 CRI Atomライブラリ内がライブラリ内で行うメモリ解放処理を、 ユーザ独自のメモリ解放処理に置き換えたい場合に使用します。 本関数の使用手順は以下のとおりです。 (1) CriAtom.FreeFunc インターフェースに副ったメモリ解放関数を用意する。 (2) SetUserFreeFunction(delegate* unmanaged[Cdecl]<IntPtr, IntPtr, void>, IntPtr) 関数を使用し、CRI Atomライブラリに対して メモリ解放関数を登録する。
備考: 引数の obj に指定した値は、 CriAtom.FreeFunc に引数として渡されます。 メモリ確保時にメモリマネージャー等を参照する必要がある場合には、 当該オブジェクトを本関数の引数にセットしておき、コールバック関数で引数を経由 して参照してください。
注意: メモリ解放関数を登録する際には、合わせてメモリ確保関数( CriAtom.MallocFunc )を 登録する必要があります。
See Also
SetUserMallocFunction(delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr>, IntPtr)
メモリ確保関数の登録
Declaration
public static void SetUserMallocFunction(delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr> func, IntPtr obj)
Parameters
Type | Name | Description |
---|---|---|
delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr> | func | メモリ確保関数 |
IntPtr | obj | ユーザ指定オブジェクト |
Remarks
説明: CRI Atomライブラリにメモリ確保関数を登録します。 CRI Atomライブラリ内がライブラリ内で行うメモリ確保処理を、 ユーザ独自のメモリ確保処理に置き換えたい場合に使用します。 本関数の使用手順は以下のとおりです。 (1) CriAtom.MallocFunc インターフェースに副ったメモリ確保関数を用意する。 (2) SetUserMallocFunction(delegate* unmanaged[Cdecl]<IntPtr, uint, IntPtr>, IntPtr) 関数を使用し、CRI Atomライブラリに対して メモリ確保関数を登録する。
備考: 引数の obj に指定した値は、 CriAtom.MallocFunc に引数として渡されます。 メモリ確保時にメモリマネージャー等を参照する必要がある場合には、 当該オブジェクトを本関数の引数にセットしておき、コールバック関数で引数を経由 して参照してください。
注意: メモリ確保関数を登録する際には、合わせてメモリ解放関数( CriAtom.FreeFunc )を 登録する必要があります。
See Also
SetupAudioSessionIOS(ref AudioSessionConfigIOS)
AudioSessionの設定
Declaration
Parameters
Type | Name | Description |
---|---|---|
CriAtom.AudioSessionConfigIOS | config |
Remarks
説明: コンフィグに従ってAudioSessionの設定を行います。 より詳細な設定を行いたい場合はこの関数を呼び出さず、AudioSessionの各種APIを用いて設定してください。
StartSoundIOS()
サウンド処理の再開
Declaration
Remarks
説明: AudioSessionのInterruption Callbak関数から呼び出すための関数です。 サウンド処理を再開します。 本関数を呼び出す前に、AudioSessionのパメラータ設定とアクティベイトを行ってください。 本関数は下位レイヤ向けのAPIです。 AtomExレイヤの機能を利用する際には、本関数の代わりに StartSoundIOS() 関数をご利用ください。
注意: InitializeIOS(in ConfigIOS, IntPtr, int) 関数実行前に本関数を実行することはできません。
See Also
StopSoundIOS()
サウンド処理の停止
Declaration
Remarks
説明: AudioSessionのInterruption Callbak関数から呼び出すための関数です。 サウンド処理を停止します。 本関数は下位レイヤ向けのAPIです。 AtomExレイヤの機能を利用する際には、本関数の代わりに StopSoundIOS() 関数をご利用ください。
注意: InitializeIOS(in ConfigIOS, IntPtr, int) 関数実行前に本関数を実行することはできません。
See Also
Unlock()
サーバー処理の割り込み防止を解除
Declaration
public static void Unlock()
Remarks
説明: Lock() 関数による、サーバー処理の割り込み防止を解除します。