Pour prendre en charge plusieurs langues
Vous pouvez prendre en charge plusieurs langues dans les flux et dans les métadonnées. le cœur de la prise en charge de plusieurs langues dans Windows Media Format SDK est l’interface IWMLanguageList , qui gère une liste des langues prises en charge. La liste de langues donne à chaque langage pris en charge un index, qui est utilisé dans différents objets du kit de développement logiciel (SDK) lors du traitement de plusieurs langues.
La méthode IWMLanguageList :: AddLanguageByRFC1766String ajoute une langue à la liste. Vous pouvez identifier les langues déjà présentes dans la liste en obtenant le nombre total de langues avec IWMLanguageList :: GetLanguageCount , puis en parcourant les langages appelant IWMLanguageList :: GetLanguageDetails pour chaque. L’index de langue est basé sur zéro.
Pour configurer l’exclusion mutuelle par langue
La configuration d’un objet d’exclusion mutuelle simple par langue est très simple. Chaque flux est maintenant associé à une langue. Le langage associé à un flux peut être défini à l’aide de IWMStreamConfig3 :: SetLanguage. Une fois que tous les flux mutuellement exclusifs sont configurés, créez simplement un objet d’exclusion mutuelle comme vous le feriez pour tout autre type. Appelez ensuite IWMMutualExclusion :: setType en passant _ _ le langage WMMUTEX CLSID pour le type.
les Flux qui s’excluent mutuellement par langue deviennent plus compliquées lorsque les flux exclusifs sont également mutuellement exclusifs par vitesse de transmission. Dans ce cas, vous devez utiliser des enregistrements qui s’excluent mutuellement, en procédant comme suit :
- Créez un objet d’exclusion mutuelle pour les flux de différents débits binaires dans chaque langue. Pour plus d’informations sur la création d’un objet d’exclusion mutuelle par vitesse de transmission, consultez utilisation de l’exclusion mutuelle à vitesse de transmission multiple.
- Créez un objet d’exclusion mutuelle. Appelez IWMMutualExclusion :: setType et transmettez _ le _ langage WMMUTEX CLSID pour spécifier l’exclusivité par langue.
- Obtenez un pointeur vers l’interface IWMMutualExclusion2 de l’objet exclusion mutuelle créé à l’étape 2 en appelant la méthode QueryInterface de IWMMutualExclusion.
- Appelez la méthode IWMMutualExclusion2 :: AddRecord une fois pour chaque langage pour créer des enregistrements de flux qui s’excluent mutuellement.
- Pour chaque enregistrement créé à l’étape 4, ajoutez les flux de la langue appropriée avec les appels à IWMMutualExclusion2 :: AddStreamForRecord.
Pour lire des fichiers avec plusieurs langues
L’objet Reader fournit des méthodes permettant d’identifier les langages de flux disponibles dans un fichier. Vous pouvez récupérer le nombre de langues prises en charge pour une sortie en appelant IWMReaderAdvanced4 :: GetLanguageCount. Vous pouvez ensuite récupérer des détails sur chaque langue avec des appels à IWMReaderAdvanced4 :: GetLanguage.
Vous pouvez spécifier le langage à lire en passant l’index de cette langue au lecteur avec un appel à IWMReaderAdvanced2 :: SetOutputSetting. Cela permet de sélectionner la langue spécifiée tout en conservant la sélection de flux automatique pour tous les autres objets d’exclusion mutuelle dans le fichier.