<Return[A]><Top>

acmStreamOpen

Declare Function Api_acmStreamOpen& Lib "msacm32" Alias "acmStreamOpen" (ByRef phas&, ByVal had&, ByRef pwfxSrc As WAVEFORMATEX, ByRef pwfxDst As WAVEFORMATEX, ByRef pwfltr As WAVEFILTER, ByRef dwCallback&, ByRef dwInstance&, ByVal fdwOpen&)

Declare Function acmStreamOpen Lib "msacm32" (ByRef phas As Long, ByVal had As Long, ByRef pwfxSrc As WAVEFORMATEX, ByRef pwfxDst As WAVEFORMATEX, ByRef pwfltr As WAVEFILTER, ByRef dwCallback As Long, ByRef dwInstance As Long, ByVal fdwOpen As Long) As Long

ACM 変換ストリームを開く。変換ストリームを使うと、指定されたオーディオフォーマットから別のフォーマットにデータを変換できる。

パラメータ

phas
    変換に使える、新しいストリームハンドルを受け取るハンドルのアドレスを指定する。このハンドルは、他の ACM ストリーム変換関数でストリ

    ームを識別するために使われる。ACM_STREAMOPENF_QUERY フラグが設定される場合、このパラメータには NULL を指定しなけれ

    ばならない。
had
    ACM ドライバのハンドルを指定する。このハンドルが指定されている場合、変換ストリームに対して使われる特定のドライバが識別される。

    このパラメータに NULL を指定すると、適合するドライバが検索されるまで、インストールされている適切な ACM ドライバがすべて照会され

    る。
pwfxSrc
    変換元フォーマットを識別する 構造体のアドレスを指定する。
pwfxDst
    変換先フォーマットを識別する WAVEFORMATEX 構造体のアドレスを指定する。
pwfltr
    変換ストリームで行うフィルタ操作を識別する 構造体のアドレスを指定する。フィルタ操作が不用の場合は、このパラメータには NULL を指

    定する。フィルタが指定されている場合は、変換元のフォーマット(pwfxSrc)と変換先のフォーマット(pwfxDst)は同じでなければならない。
dwCallback
    コールバック関数、ウィンドウハンドル、またはイベントハンドルのアドレスを指定する。コールバック関数が呼び出せるのは、

    ACM_STREAMOPENF_ASYNC フラグをセットして変換ストリームを開いた場合のみである。コールバック関数への通知は、変換ストリー

    ムのオープンまたはクローズ時、および各バッファの変換後に行われる。ACM_STREAMOPENF_ASYNC フラグを設定せずに変換ストリー

    ムが開かれた場合は、このパラメータは 0 に設定される。
dwInstance
    dwCallback パラメータで指定されるコールバック関数に渡されるユーザーインスタンスデータを指定する。このパラメータはウィンドウコールバッ

    クやイベントコールバックでは使わない。ACM_STREAMOPENF_ASYNC フラグをセットせずに変換ストリームが開かれた場合は、このパラ

    メータは 0 に設定される。
fdwOpen
    変換ストリームを開くためのフラグをセットする。次の値が定義されている。
    ACM_STREAMOPENF_ASYNC
        ストリーム変換は非同期に実行される。このフラグが設定されている場合、アプリケーションはコールバック関数を使って、変換ストリーム

        のオープンまたはクローズ時、および各バッファの変換後に通知を受ける。また、 構造体の fdwStatus メンバに

        ACMSTREAMHEADER_STATUSF_DONE フラグがセットされているかを調べることもできる。
    ACM_STREAMOPENF_NONREALTIME
        ACM は、時間の条件を考慮せずにデータを変換する。既定では、ドライバはデータをリアルタイムで変換しようとする。フォーマットによっ

        ては、このフラグを指定することでオーディオの品質またはその他の特性が向上する。
    ACM_STREAMOPENF_QUERY
        ACM を照会し、指定の変換がサポートされるかを確認する。変換ストリームは開かれることも、phas パラメータにハンドルが返されること

        もない。
    CALLBACK_EVENT
        dwCallback パラメータはイベントのハンドルである。
    CALLBACK_FUNCTION
        dwCallback パラメータはコールバックプロシージャアドレスである。関数プロトタイプは acmStreamConvertCallback プロトタイプに準拠し

        ていなければならない。
    CALLBACK_WINDOW
        dwCallback パラメータはウィンドウハンドルである。

戻り値
    関数が成功すると 0、失敗するとエラーが返る。返されるエラー値は次のとおりである。

    値                                               

説明                                                  

    ACMERR_NOTPOSSIBLE

要求された操作は実行できない。

    MMSYSERR_INVALFLAG

少なくとも 1 つのフラグが無効である。

    MMSYSERR_INVALHANDLE

指定されたハンドルは無効である。

    MMSYSERR_INVALPARAM

少なくとも 1 つのパラメータが無効である。

    MMSYSERR_NOMEM

システムはリソースを割り当てることができない。

 

解説
    ACM ドライバがリアルタイム変換を実行できず、fdwOpen パラメータに対して ACM_STREAMOPENF_NONREALTIME フラグが設定さ

    れていない場合、オープン処理は失敗し、ACMERR_NOTPOSSIBLE エラーコードが返る。アプリケーションは

    ACM_STREAMOPENF_QUERY フラグを使って、入力に対してリアルタイム変換がサポートされているかどうかを調べることができる。
    アプリケーションがウィンドウを使ってコールバック情報を受信する場合、ウィンドプロシージャ関数に MM_ACM_OPEN、

    MM_ACM_CLOSE および MM_ACM_DONE メッセージを送信し、変換ストリームの進捗状況を表示する。この場合、wParam パラメー

    タは HACMSTREAM ハンドルを識別する。lParam パラメータは、MM_ACM_DONE に対して ACMSTREAMHEADER 構造体を識別す

    るが、MM_ACM_OPEN および MM_ACM_CLOSE に対しては使われない。
    アプリケーションが関数を使ってコールバック情報を受信する場合は、その関数に MM_ACM_OPEN、MM_ACM_CLOSE および

    MM_ACM_DONE メッセージを送信し、ウェーブフォームオーディオ出力の進捗状況を表示する。コールバック関数は DLL(ダイナミックリン

    クライブラリ)に存在しなければならない。
    アプリケーションがイベントを使ってコールバックを通知する場合は、イベントに信号を送り、変換ストリームの進捗状況を表示する。イベント

    は、ストリームのオープン、各バッファの変換後、およびストリームのクローズ時に信号を受信する。