So decodieren Sie Audio in S/PDIF

Audio, das mit dem Windows Media Audio 9-Professional codec codiert ist, kann in das Format der digitalen Verbindung (S/PDIF) decodiert werden. Führen Sie zum Generieren der S/PDIF-Ausgabe die folgenden Schritte aus:

  1. Öffnen Sie eine Datei, die einen Windows Media Audio 9 Professional enthält, indem Sie die IWMReader::Open-Methode aufrufen.
  2. Identifizieren Sie die Ausgabenummer des Streams, den Sie wünschen. Weitere Informationen finden Sie unter So identifizieren Sie Ausgabenummern.
  3. Rufen Sie die IWMReaderAdvanced2::SetOutputSetting-Methode auf, um die S/PDIF-Ausgabe zu konfigurieren. Verwenden Sie _ g wszEnableWMAProSPDIFOutput als Einstellungsnamen. Der Datentyp ist WMT _ TYPE _ BOOL. Legen Sie den Wert auf TRUE fest, um die S/PDIF-Ausgabe zu aktivieren.
  4. Rufen Sie die Ausgabeeigenschaftenschnittstelle (IWMOutputMediaProps)des gewünschten Ausgabeformats ab, indem Sie die IWMReader::GetOutputFormat-Methode aufrufen. Weitere Informationen zum Aufzählen von Ausgabeformaten finden Sie unter Zuweisen von Ausgabeformaten.
  5. Legen Sie das Ausgabeformat fest, indem Sie die IWMReader::SetOutputProps-Methode aufrufen. Übergeben Sie einen Zeiger auf die IWMOutputMediaProps-Schnittstelle, die Sie in Schritt 4 erhalten haben.
  6. Nehmen Sie weitere Konfigurationsänderungen vor, und beginnen Sie mit der Wiedergabe.

Hinweis

Sie können die vorherigen Schritte für den synchronen Reader ausführen, indem Sie die entsprechenden Methoden der IWMSyncReader-Schnittstelle verwenden.

Der folgende Beispielcode veranschaulicht, wie Sie einen Audiostream so festlegen, dass Audio als S/PDIF-Daten ausgegeben wird. Bei dieser Funktion wird davon ausgegangen, dass bereits eine Datei in den Reader geladen wurde und dass die Ausgabenummer identifiziert wurde. Weitere Informationen zur Verwendung dieses Codes finden Sie unter Verwenden der Codebeispiele.

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;
}

Weiterführende Themen

Lesen von ASF-Dateien

IWMReader-Schnittstelle

IWMReaderAdvanced2-Schnittstelle

IWMSyncReader-Schnittstelle