次の方法で共有


オーディオを S/PDIF にデコードするには

[このページに関連付けられている機能である Windows Media Format 11 SDK は、レガシ機能です。 これは、ソース リーダーシンク ライターによって置き換えられます。 ソース リーダーシンク ライターは、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、Windows Media Format 11 SDK ではなくソース リーダーシンク ライターを使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

Windows Media Audio 9 Professional コーデックでエンコードされたオーディオは、Sony/Philips Digital Interconnect Format (S/PDIF) にデコードできます。 S/PDIF 出力を生成するには、次の手順に従います。

  1. IWMReader::Open メソッドを呼び出して、Windows Media Audio 9 Professional ストリームを含むファイルを開きます。
  2. 目的のストリームの出力番号を特定します。 詳細については、「 出力番号を識別するには」を参照してください。
  3. S/PDIF 出力を構成するには、 IWMReaderAdvanced2::SetOutputSetting メソッドを呼び出します。 設定名にはg_wszEnableWMAProSPDIFOutputを使用します。 データ型は WMT_TYPE_BOOL。S/PDIF 出力を有効にするには、 値を TRUE に 設定します。
  4. IWMReader::GetOutputFormat メソッドを呼び出して、目的の出力形式の出力プロパティ インターフェイス (IWMOutputMediaProps) を取得します。 出力形式の列挙の詳細については、「出力形式 の割り当て」を参照してください。
  5. IWMReader::SetOutputProps メソッドを呼び出して、出力形式を設定します。 手順 4 で取得した IWMOutputMediaProps インターフェイスへのポインターを渡します。
  6. その他の構成変更を行い、再生を開始します。

注意

IWMSyncReader インターフェイスの対応するメソッドを使用して、同期リーダーに対して上記の手順を実行できます。

 

次のコード例では、オーディオストリームを設定してオーディオを S/PDIF データとして出力する方法を示します。 この関数は、ファイルが既にリーダーに読み込まれており、出力番号が識別されていることを前提としています。 このコードの使用方法の詳細については、「コード 例の使用」を参照してください。

HRESULT SetSPDIF(DWORD dwOutputNum, IWMReader* pReader)
{
    HRESULT hr = S_OK;

    IWMReaderAdvanced2*  pReaderAdv   = NULL;
    IWMOutputMediaProps* pOutputProps = NULL; 

    BOOL fValue = TRUE;

    // Get the advanced reader interface.
    hr = pReader->QueryInterface(IID_IWMReaderAdvanced2,
                                 (void**)&pReaderAdv);
    GOTO_EXIT_IF_FAILED(hr);

    // Set S/PDIF output.
    hr = pReaderAdv->SetOutputSetting(dwOutputNum, 
                                      g_wszEnableWMAProSPDIFOutput, 
                                      WMT_TYPE_BOOL, 
                                      (BYTE*)&fValue, 
                                      sizeof(BOOL));
    GOTO_EXIT_IF_FAILED(hr);

    // Get the first output format for the stream.
    // NOTE: You could also enumerate the available output formats
    // and pick one to use.

    hr = pReader->GetOutputFormat(dwOutputNum, 0, &pOutputProps);
    GOTO_EXIT_IF_FAILED(hr);

    // Set the output properties back on the reader.
    hr = pReader->SetOutputProps(dwOutputNum, pOutputProps);

Exit:
    SAFE_RELEASE(pReaderAdv);
    SAFE_RELEASE(pOutputProps);

    return hr;
}

高度なトピック

ASF ファイルの読み取り

IWMReader インターフェイス

IWMReaderAdvanced2 インターフェイス

IWMSyncReader インターフェイス