Compartir a través de


Para la compatibilidad con varios idiomas

[La característica asociada a esta página, WINDOWS Media Format 11 SDK, es una característica heredada. Se ha reemplazado por lector de origen y escritor receptor. Lector de origen y escritor receptor se han optimizado para Windows 10 y Windows 11. Microsoft recomienda encarecidamente que el nuevo código use lector fuente 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.

Puede admitir varios lenguajes en secuencias y en metadatos. El núcleo de la compatibilidad con varios idiomas en el SDK de Windows Media Format es la interfaz IWMLanguageList , que mantiene una lista de los idiomas admitidos. La lista de idiomas proporciona a cada idioma admitido un índice, que se usa en varios objetos del SDK al tratar con varios idiomas.

El método IWMLanguageList::AddLanguageByRFC1766String agrega un idioma a la lista. Puede identificar los idiomas que ya están en la lista obteniendo el número total de idiomas con IWMLanguageList::GetLanguageCount y, a continuación, recorre en bucle los idiomas que llaman a IWMLanguageList::GetLanguageDetails para cada uno. El índice de idioma es de base cero.

Para configurar la exclusión mutua por idioma

Configurar un objeto de exclusión mutua simple por lenguaje es muy sencillo. Cada secuencia ahora está asociada a un idioma. El idioma asociado a una secuencia se puede establecer mediante IWMStreamConfig3::SetLanguage. Una vez configuradas todas las secuencias mutuamente excluyentes, simplemente cree un objeto de exclusión mutua como lo haría para cualquier otro tipo. A continuación, llame a IWMMutualExclusion::SetType pasando CLSID_WMMUTEX_Language para el tipo.

Las secuencias que se excluyen mutuamente por lenguaje se vuelven más complicadas cuando las secuencias exclusivas también se excluyen mutuamente por velocidad de bits. En este caso, debe usar registros mutuamente excluyentes mediante los pasos siguientes:

  1. Cree un objeto de exclusión mutua para las secuencias de velocidades de bits diferentes en cada idioma. Para obtener más información sobre cómo crear un objeto de exclusión mutua por velocidad de bits, consulte Using Multiple Bit Rate Mutual Exclusion.
  2. Cree un objeto de exclusión mutua. Llame a IWMMutualExclusion::SetType y pase CLSID_WMMUTEX_Language para especificar exclusividad por idioma.
  3. Obtenga un puntero a la interfaz IWMMutualExclusion2 del objeto de exclusión mutua creado en el paso 2 llamando al método QueryInterface de IWMMutualExclusion.
  4. Llame al método IWMMutualExclusion2::AddRecord una vez para cada idioma, para crear registros de secuencia que se excluirán mutuamente.
  5. Para cada registro creado en el paso 4, agregue las secuencias del idioma adecuado con llamadas a IWMMutualExclusion2::AddStreamForRecord.

Para leer archivos con varios idiomas

El objeto reader proporciona métodos para identificar los idiomas disponibles de secuencias en un archivo. Puede recuperar el número de idiomas admitidos para una salida llamando a IWMReaderAdvanced4::GetLanguageCount. A continuación, puede recuperar detalles sobre cada idioma con llamadas a IWMReaderAdvanced4::GetLanguage.

Puede especificar el idioma que se va a reproducir pasando el índice de ese idioma al lector con una llamada a IWMReaderAdvanced2::SetOutputSetting. Esto seleccionará el idioma especificado al mantener la selección automática de secuencias para cualquier otro objeto de exclusión mutua en el archivo.

Temas avanzados

IWMLanguageList (interfaz)

IWMMutualExclusion (Interfaz)

Interfaz IWMMutualExclusion2

IWMReaderAdvanced2 (Interfaz)

IWMReaderAdvanced4 (Interfaz)

Interfaz IWMStreamConfig3