Partager via


Pour décoder l’audio en S/PDIF

[La fonctionnalité associée à cette page, le Kit de développement logiciel (SDK) Windows Media Format 11, est une fonctionnalité héritée. Il a été remplacé par lecteur source et enregistreur récepteur. Le lecteur source et l’enregistreur récepteur ont été optimisés pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise le lecteur source et l’enregistreur récepteur au lieu du Kit de développement logiciel (SDK) Windows Media Format 11, lorsque cela est possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

L’audio encodé avec le codec Windows Media Audio 9 Professionnel peut être décodé au format d’interconnexion numérique Sony/Philips (S/PDIF). Pour générer une sortie S/PDIF, procédez comme suit :

  1. Ouvrez un fichier qui contient un flux Windows Media Audio 9 Professionnel en appelant la méthode IWMReader::Open .
  2. Identifiez le numéro de sortie du flux souhaité. Pour plus d’informations, consultez Pour identifier les numéros de sortie.
  3. Appelez la méthode IWMReaderAdvanced2::SetOutputSetting pour configurer la sortie S/PDIF. Utilisez g_wszEnableWMAProSPDIFOutput pour le nom du paramètre. Le type de données est WMT_TYPE_BOOL ; définissez la valeur sur TRUE pour activer la sortie S/PDIF.
  4. Obtenez l’interface des propriétés de sortie (IWMOutputMediaProps) du format de sortie souhaité en appelant la méthode IWMReader::GetOutputFormat . Pour plus d’informations sur l’énumération des formats de sortie, consultez Affectation de formats de sortie.
  5. Définissez le format de sortie en appelant la méthode IWMReader::SetOutputProps . Passez un pointeur vers l’interface IWMOutputMediaProps obtenue à l’étape 4.
  6. Apportez d’autres modifications à la configuration et commencez la lecture.

Notes

Vous pouvez effectuer les étapes précédentes sur le lecteur synchrone à l’aide des méthodes correspondantes de l’interface IWMSyncReader .

 

L’exemple de code suivant montre comment définir un flux audio pour générer de l’audio en tant que données S/PDIF. Cette fonction suppose qu’un fichier a déjà été chargé dans le lecteur et que le numéro de sortie a été identifié. Pour plus d’informations sur l’utilisation de ce code, consultez Utilisation des exemples de code.

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

Rubriques avancées

Lecture de fichiers ASF

IWMReader Interface

IWMReaderAdvanced2, interface

IWMSyncReader Interface