acmStreamOpen 関数 (msacm.h)

acmStreamOpen 関数は、ACM 変換ストリームを開きます。 変換ストリームは、指定されたオーディオ形式のデータを別のオーディオ形式に変換するために使用されます。

構文

MMRESULT ACMAPI acmStreamOpen(
  LPHACMSTREAM   phas,
  HACMDRIVER     had,
  LPWAVEFORMATEX pwfxSrc,
  LPWAVEFORMATEX pwfxDst,
  LPWAVEFILTER   pwfltr,
  DWORD_PTR      dwCallback,
  DWORD_PTR      dwInstance,
  DWORD          fdwOpen
);

パラメーター

phas

変換の実行に使用できる新しいストリーム ハンドルを受け取るハンドルへのポインター。 このハンドルは、他の ACM ストリーム変換関数の呼び出しでストリームを識別するために使用されます。 ACM_STREAMOPENF_QUERY フラグを指定する場合、このパラメーターは NULL にする必要があります。

had

ACM ドライバーへのハンドル。 このハンドルを指定すると、変換ストリームに使用する特定のドライバーが識別されます。 このパラメーターが NULL の場合、インストールされているすべての適切な ACM ドライバーは、一致が見つかるまで照会されます。

pwfxSrc

変換に必要なソース形式を識別する WAVEFORMATEX 構造体へのポインター。

pwfxDst

変換の目的の変換先形式を識別する WAVEFORMATEX 構造体へのポインター。

pwfltr

変換ストリームで実行する必要なフィルター処理操作を識別する WAVEFILTER 構造体へのポインター。 フィルター処理操作が必要ない場合は、このパラメーターに NULL を指定できます。 フィルターを指定する場合、ソース (pwfxSrc) と変換先 (pwfxDst) の形式は同じである必要があります。

dwCallback

コールバック関数、ウィンドウのハンドル、またはイベントのハンドルへのポインター。 コールバック関数は、変換ストリームが ACM_STREAMOPENF_ASYNC フラグで開かれている場合にのみ呼び出されます。 コールバック関数は、変換ストリームが開かれたか閉じられたか、各バッファーが変換された後に通知されます。 ACM_STREAMOPENF_ASYNC フラグを指定せずに変換ストリームを開く場合は、このパラメーターを 0 に設定する必要があります。

dwInstance

dwCallback パラメーターで指定されたコールバック関数に渡されるユーザー インスタンス データ。 このパラメーターは、ウィンドウとイベントのコールバックでは使用されません。 ACM_STREAMOPENF_ASYNC フラグを指定せずに変換ストリームを開く場合は、このパラメーターを 0 に設定する必要があります。

fdwOpen

変換ストリームを開くフラグ。 次の値が定義されています。

[ACMSTREAMHEADER]ACMSTREAMHEADER_STATUSF_DONE フラグの (./ns-msacm-acmstreamheader.md) 構造体。
説明
ACM_STREAMOPENF_ASYNC
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メッセージがウィンドウ プロシージャ関数に送信され、変換ストリームの進行状況が示されます。 この場合、MM_ACM_DONEの ACMSTREAMHEADER 構造体は使用されませんが、MM_ACM_OPENとMM_ACM_CLOSEには使用されません。

アプリケーションが関数を使用してコールバック情報を受信する場合、MM_ACM_OPEN、MM_ACM_CLOSE、およびMM_ACM_DONEメッセージが関数に送信され、波形オーディオ出力の進行状況が示されます。 コールバック関数は、ダイナミック リンク ライブラリ (DLL) に存在する必要があります。

アプリケーションがコールバック通知にイベントを使用する場合、イベントは変換ストリームの進行状況を示すシグナル通知を受け取ります。 イベントは、ストリームが開かれるとき、各バッファーが変換された後、ストリームが閉じられたときに通知されます。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー msacm.h
Library Msacm32.lib
[DLL] Msacm32.dll

関連項目

オーディオ圧縮関数

オーディオ圧縮マネージャー