Para descodificar audio en S/PDIF
[La característica asociada a esta página, SDK de Windows Media Format 11, es una característica heredada. Se ha reemplazado por lector de origen y escritor receptor. El lector de origen y el sistema de escritura receptor se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use lector de origen y escritor receptor en lugar del SDK de Windows Media Format 11, siempre que sea posible. Microsoft sugiere que el código existente que usa las API heredadas se reescriba para usar las nuevas API si es posible.
El audio codificado con el códec Windows Media Audio 9 Professional se puede descodificar a Sony/Philips Digital Interconnect Format (S/PDIF). Para generar la salida de S/PDIF, realice los pasos siguientes:
- Abra un archivo que contenga una secuencia de Windows Media Audio 9 Professional llamando al método IWMReader::Open .
- Identifique el número de salida de la secuencia que desea. Para obtener más información, vea Para identificar números de salida.
- Llame al método IWMReaderAdvanced2::SetOutputSetting para configurar la salida de S/PDIF. Use g_wszEnableWMAProSPDIFOutput para el nombre de la configuración. El tipo de datos es WMT_TYPE_BOOL; establezca el valor en TRUE para habilitar la salida de S/PDIF.
- Obtenga la interfaz de propiedades de salida (IWMOutputMediaProps) del formato de salida deseado llamando al método IWMReader::GetOutputFormat . Para obtener más información sobre cómo enumerar formatos de salida, vea Asignar formatos de salida.
- Establezca el formato de salida llamando al método IWMReader::SetOutputProps . Pase un puntero a la interfaz IWMOutputMediaProps obtenida en el paso 4.
- Realice cualquier otro cambio de configuración y comience la reproducción.
Nota:
Puede realizar los pasos anteriores en el lector sincrónico mediante los métodos correspondientes de la interfaz IWMSyncReader .
En el código de ejemplo siguiente se muestra cómo establecer una secuencia de audio para generar audio como datos S/PDIF. Esta función supone que ya se ha cargado un archivo en el lector y que se ha identificado el número de salida. Para obtener más información sobre el uso de este código, vea Uso de los ejemplos de código.
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;
}
Temas relacionados