Per decodificare l'audio in S/PDIF

[La funzionalità associata a questa pagina, Windows Media Format 11 SDK, è una funzionalità legacy. È stata sostituita dal lettore di origine e dal writer sink. Lettore di origine e writer sink sono stati ottimizzati per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi lettore di origine e writer sink anziché Windows Media Format 11 SDK, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

L'audio codificato con il codec Windows Media Audio 9 Professional può essere decodificato in Sony/Philips Digital Interconnect Format (S/PDIF). Per generare l'output S/PDIF, seguire questa procedura:

  1. Aprire un file contenente un flusso Windows Media Audio 9 Professional chiamando il metodo IWMReader::Open .
  2. Identificare il numero di output del flusso desiderato. Per altre informazioni, vedere Per identificare i numeri di output.
  3. Chiamare il metodo IWMReaderAdvanced2::SetOutputSetting per configurare l'output S/PDIF. Usare g_wszEnableWMAProSPDIFOutput per il nome dell'impostazione. Il tipo di dati è WMT_TYPE_BOOL; impostare il valore su TRUE per abilitare l'output S/PDIF.
  4. Ottenere l'interfaccia delle proprietà di output (IWMOutputMediaProps) del formato di output desiderato chiamando il metodo IWMReader::GetOutputFormat . Per altre informazioni sull'enumerazione dei formati di output, vedere Assegnazione di formati di output.
  5. Impostare il formato di output chiamando il metodo IWMReader::SetOutputProps . Passare un puntatore all'interfaccia IWMOutputMediaProps ottenuta nel passaggio 4.
  6. Apportare eventuali altre modifiche di configurazione e avviare la riproduzione.

Nota

È possibile eseguire i passaggi precedenti nel lettore sincrono usando i metodi corrispondenti dell'interfaccia IWMSyncReader .

 

Il codice di esempio seguente illustra come impostare un flusso audio per l'output audio come dati S/PDIF. Questa funzione presuppone che un file sia già stato caricato nel lettore e che il numero di output sia stato identificato. Per altre informazioni sull'uso di questo codice, vedere Uso degli esempi di codice.

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

Argomenti avanzati

Lettura di file ASF

Interfaccia IWMReader

Interfaccia IWMReaderAdvanced2

Interfaccia IWMSyncReader