Utilisation des images vidéo
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si 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.]
La vidéo non compressée est une séquence de bitmaps lues en succession rapide, généralement à un rythme d’environ 30 images par seconde. Étant donné que la plupart des vidéos entrent dans un graphique de filtre DirectShow dans un format compressé, le flux vidéo passe généralement par un décodeur pour la décompression. De nombreux décodeurs génèrent des données au format YUV et laissent la conversion finale en RVB pour le matériel vidéo juste avant le rendu. Si un décodeur utilise DirectX Video Acceleration, le matériel vidéo effectue un travail supplémentaire pour décoder l’image. Par conséquent, la décompression finale des bitmaps ne peut pas être effectuée tant que les données n’atteignent pas le matériel vidéo.
Toutefois, pour effectuer de nombreux types d’analyse, de traitement ou d’édition vidéo, il est souvent nécessaire de travailler sur des bitmaps non compressées dans un certain type de format RVB ou YUV avant qu’elles ne soient rendues ou écrites dans un fichier. Ce travail est généralement effectué dans un filtre de transformation basé sur la classe de base CTransformFilter , en particulier dans la méthode Transform . Cette méthode reçoit un pointeur vers un objet IMediaSample qui encapsule les données vidéo. La méthode IMediaSample::GetPointer retourne un pointeur vers le premier octet des données brutes. Pour les images non compressées, ces données se composent de pixels accessibles ou modifiés directement par le filtre. Les sections suivantes fournissent des informations générales qui vous aideront à utiliser efficacement les données DIB de cette manière.
Notes
Vous pouvez également modifier les bits à l’aide des fonctions GDI, GDI+, DirectDraw ou Direct3D, mais ces techniques dépassent le cadre de cet article.
Cette section contient les rubriques suivantes :