Freigeben über


So decodieren Sie Audio mit S/PDIF

[Das dieser Seite zugeordnete Feature Windows Media Format 11 SDK ist ein Legacyfeature. Es wurde von Source Reader und Sink Writer abgelöst. Source Reader und Sink Writer wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit quellleser und Senkenschreiber anstelle des Windows Media Format 11 SDK verwendet. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]

Mit dem Windows Media Audio 9 Professional-Codec codiertes Audio kann in das Sony/Philips Digital Interconnect Format (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-Stream enthält, indem Sie die IWMReader::Open-Methode aufrufen.
  2. Identifizieren Sie die Ausgabenummer des gewünschten Streams. 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 in Schritt 4 abgerufene IWMOutputMediaProps-Schnittstelle .
  6. Nehmen Sie weitere Konfigurationsänderungen vor, und beginnen Sie mit der Wiedergabe.

Hinweis

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

 

Der folgende Beispielcode veranschaulicht, wie ein Audiostream so festgelegt wird, dass Audio als S/PDIF-Daten ausgegeben wird. Bei dieser Funktion wird davon ausgegangen, dass bereits eine Datei im 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