高度な検索
Developer Connection
Member Login ログイン | ご入会 ADC連絡先

Technical Q&A QA1408
Determine the version of an Audio Unit

Q:使用している Audio Unit のバージョンを知るにはどうすればいいのでしょうか。

A:Core Audio は Component Manager を使用して、Audio Unit をシステムの共用リソースとして利用できるようにします。Audio Unit の有効なインスタンスを得たら、GetComponentVersion メソッドを使用してバージョンを取得できます。

これは、Audio Unit に機能の異なる 2 つのバージョンがあり、Audio Unit を使用する前にどちらのバージョンがインストールされているかを知る場合に役立ちます。

以下のコードは、アップルの 3Dmixer Audio Unit の適切なバージョンがユーザのシステムにインストールされているかどうかを調べます。3Dmixer は、バージョンごとに振る舞いが異なるため、ユーザのシステムに存在するバージョンを知る必要があります。

リスト 1:3D Mixer のバージョンの取得


#define kPreferredMixerVersion      0x20000
#define kMinimumMixerVersion        0x10300

long myGet3DMixerVersion(bool *outPreferred3DMixerExists)
{
    ComponentDescription mixerCD = { kAudioUnitType_Mixer,          // タイプ
                                    kAudioUnitSubType_3DMixer,     // サブタイプ
                                    kAudioUnitManufacturer_Apple,   // メーカー
                                    0,                              // フラグ
                                    0 };                            // フラグマスク
   long version = 0;

   // 最初はこれを false に設定する。0x20000 より大きいバージョンを見つけたときにだけ、
   // これを true に設定する。
   *outPreferred3DMixerExists = false;

   Component mixerC= FindNextComponent(0, &mixerCD);
   require(NULL != mixerC, bail);

   version = GetComponentVersion((ComponentInstance)mixerC);

   // 返されたバージョンが 0x20000 未満の場合は(0x10300 だと本当に古い!)、
   // 使用したい 3DMixer のバージョンではないので、
   // 何もしないで、false だけを返す。

   // バージョンが 0x20000 以上の場合は、使用したい 3DMixer のバージョンなので、
   // outPreferred3DMixerExists を true に設定する。
   if (version >= kPreferredMixerVersion)
   *outPreferred3DMixerExists = true;

bail:
   return version;
}

注意:Component と ComponentDescriptions の詳細については、「Component Manager Reference」を参照してください。

ドキュメントの改訂履歴

日付 メモ
2005-02-03 初版

掲載日: 2005-02-03