Pour fournir des exemples compressés avec le lecteur asynchrone

[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.]

Le lecteur asynchrone peut fournir des exemples compressés à partir de flux dans des fichiers ASF. Les applications fournissent généralement des exemples compressés lors de la copie d’un flux d’un fichier vers un autre. Il n’est pas recommandé de recompresser les données qui ont été reconstruites à partir d’un flux compressé, car les données sont perdues dans le processus d’encodage. Les médias numériques qui ont été compressés plus d’une fois auront une baisse notable de la qualité.

Le Kit de développement logiciel (SDK) au format Windows Media ne fournit aucune méthode de décodage des données une fois qu’elles ont été extraites d’un fichier ASF. Si vous recevez des exemples compressés et que vous souhaitez les décompresser ultérieurement, vous devrez fournir votre propre code pour ce faire. Une façon de contourner cette limitation consiste à écrire les exemples compressés dans un nouveau fichier ASF, puis à les relire dans des exemples normaux et non compressés.

Pour recevoir des exemples compressés avec le lecteur asynchrone, effectuez les étapes suivantes.

  1. Implémentez le rappel IWMReaderCallbackAdvanced::OnStreamSample . Ce rappel est essentiellement identique en fonction à IWMReaderCallback::OnSample , sauf qu’il fournit des exemples par numéro de flux et que les exemples sont toujours compressés.
  2. Avant de commencer la lecture, obtenez un pointeur vers l’interface IWMReaderAdvanced de l’objet lecteur en appelant IWMReader::QueryInterface.
  3. Configurez le lecteur pour fournir des exemples compressés pour le flux souhaité en appelant IWMReaderAdvanced::SetReceiveStreamSamples.
  4. Répétez l’étape 3 pour chaque flux pour lequel une remise d’exemple compressée est souhaitée.

Notes

Les flux d’images ne sont pas valides pour la remise de flux compressé. Si vous copiez un flux d’images d’un fichier vers un autre, il ne fonctionnera pas dans le nouveau fichier. Pour copier un flux d’images d’un fichier à un fichier, récupérez les exemples de flux d’images par numéro de sortie et incluez-les dans le nouveau fichier comme si vous incluiez un nouveau flux d’images.

 

IWMReaderCallbackAdvanced Interface

Lecture de fichiers avec le lecteur asynchrone