Sur cette page

QVideoFrameFormat Class

La classe QVideoFrameFormat spécifie le format de flux d'une surface de présentation vidéo. Plus d'informations...

En-tête : #include <QVideoFrameFormat>
CMake : find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake : QT += multimedia

Types publics

enum ColorRange { ColorRange_Unknown, ColorRange_Video, ColorRange_Full }
enum ColorSpace { ColorSpace_Undefined, ColorSpace_BT601, ColorSpace_BT709, ColorSpace_AdobeRgb, ColorSpace_BT2020 }
enum ColorTransfer { ColorTransfer_Unknown, ColorTransfer_BT709, ColorTransfer_BT601, ColorTransfer_Linear, ColorTransfer_Gamma22, …, ColorTransfer_STD_B67 }
enum Direction { TopToBottom, BottomToTop }
enum PixelFormat { Format_Invalid, Format_ARGB8888, Format_ARGB8888_Premultiplied, Format_XRGB8888, Format_BGRA8888, …, Format_YUV420P10 }

Fonctions publiques

QVideoFrameFormat()
QVideoFrameFormat(const QSize &size, QVideoFrameFormat::PixelFormat format)
QVideoFrameFormat(const QVideoFrameFormat &other)
QVideoFrameFormat(QVideoFrameFormat &&other)
~QVideoFrameFormat()
QVideoFrameFormat::ColorRange colorRange() const
QVideoFrameFormat::ColorSpace colorSpace() const
QVideoFrameFormat::ColorTransfer colorTransfer() const
int frameHeight() const
qreal frameRate() const
QSize frameSize() const
int frameWidth() const
bool isMirrored() const
bool isValid() const
QVideoFrameFormat::PixelFormat pixelFormat() const
int planeCount() const
QtVideo::Rotation rotation() const
QVideoFrameFormat::Direction scanLineDirection() const
void setColorRange(QVideoFrameFormat::ColorRange range)
void setColorSpace(QVideoFrameFormat::ColorSpace colorSpace)
void setColorTransfer(QVideoFrameFormat::ColorTransfer colorTransfer)
void setFrameRate(qreal rate)
void setFrameSize(const QSize &size)
void setFrameSize(int width, int height)
void setMaxLuminance(float lum)
void setMirrored(bool mirrored)
void setRotation(QtVideo::Rotation angle)
void setScanLineDirection(QVideoFrameFormat::Direction direction)
void setStreamFrameRate(qreal rate)
void setViewport(const QRect &viewport)
qreal streamFrameRate() const
void swap(QVideoFrameFormat &other)
QRect viewport() const
bool operator!=(const QVideoFrameFormat &other) const
QVideoFrameFormat &operator=(QVideoFrameFormat &&other)
QVideoFrameFormat &operator=(const QVideoFrameFormat &other)
bool operator==(const QVideoFrameFormat &other) const

Membres publics statiques

QImage::Format imageFormatFromPixelFormat(QVideoFrameFormat::PixelFormat format)
QVideoFrameFormat::PixelFormat pixelFormatFromImageFormat(QImage::Format format)
QString pixelFormatToString(QVideoFrameFormat::PixelFormat pixelFormat)

Description détaillée

Un puits vidéo présente un flux d'images vidéo. QVideoFrameFormat décrit le type des images et détermine la manière dont elles doivent être présentées.

Les propriétés essentielles d'un flux vidéo requises pour configurer un puits vidéo sont le format de pixel donné par pixelFormat() et les dimensions de l'image données par frameSize().

La région d'une image qui est effectivement affichée sur une surface vidéo est donnée par viewport(). Un flux peut avoir une fenêtre de visualisation inférieure à la région entière d'un cadre pour permettre l'affichage de vidéos plus petites que la taille optimale la plus proche d'un cadre vidéo. Par exemple, la largeur d'une image peut être étendue de manière à ce que le début de chaque ligne de balayage soit aligné sur huit octets.

Les autres propriétés courantes sont scanLineDirection(), frameRate() et yCrCbColorSpace().

Documentation sur les types de membres

enum QVideoFrameFormat::ColorRange

Décrit la gamme de couleurs utilisée par les données vidéo. Les données vidéo sont généralement fournies soit dans une gamme complète de couleurs, où toutes les valeurs sont utilisées, soit dans une gamme plus limitée traditionnellement utilisée dans les formats vidéo YUV, où un sous-ensemble de toutes les valeurs est utilisé.

ConstanteValeurDescription
QVideoFrameFormat::ColorRange_Unknown0La gamme de couleurs de la vidéo est inconnue.
QVideoFrameFormat::ColorRange_Video1

La gamme de couleurs traditionnellement utilisée par la plupart des formats vidéo YUV. Pour les formats 8 bits, la composante Y est limitée à des valeurs comprises entre 16 et 235. Les composantes U et V sont limitées à des valeurs comprises entre 16 et 240.

Pour les profondeurs de bits supérieures, ces valeurs sont multipliées par 2^(profondeur-8).

ConstanteValeur
QVideoFrameFormat::ColorRange_Full2

Gamme complète de couleurs. Toutes les valeurs comprises entre 0 et 2^profondeur - 1 sont valables.

enum QVideoFrameFormat::ColorSpace

Énumère l'espace couleur des images vidéo.

ConstanteValeurDescription
QVideoFrameFormat::ColorSpace_Undefined0Aucun espace colorimétrique n'est spécifié.
QVideoFrameFormat::ColorSpace_BT6011Espace colorimétrique défini par la recommandation BT.601 de l'UIT-R, avec des valeurs Y comprises entre 16 et 235, et des valeurs Cb/Cr comprises entre 16 et 240. Utilisé principalement par les anciennes vidéos destinées aux écrans à tube cathodique.
QVideoFrameFormat::ColorSpace_BT7092Espace colorimétrique défini par la recommandation BT.709 de l'UIT-R avec la même plage de valeurs que l'espace colorimétrique BT.601. Il s'agit de l'espace colorimétrique le plus couramment utilisé aujourd'hui.
QVideoFrameFormat::ColorSpace_AdobeRgb5L'espace colorimétrique YUV complet utilisé dans la plupart des fichiers JPEG.
QVideoFrameFormat::ColorSpace_BT20206L'espace colorimétrique défini par ITU-R BT.2020. Utilisé principalement pour les vidéos HDR.

enum QVideoFrameFormat::ColorTransfer

ConstanteValeurDescription de la fonction de transfert de couleur
QVideoFrameFormat::ColorTransfer_Unknown0La fonction de transfert de la couleur est inconnue.
QVideoFrameFormat::ColorTransfer_BT7091Les valeurs de couleur sont codées conformément à la norme BT709. Voir également https://www.itu.int/rec/R-REC-BT.709/en. Cette courbe est proche, mais pas identique, à une courbe gamma de 2,2 et à la même courbe de transfert que celle utilisée dans sRGB.
QVideoFrameFormat::ColorTransfer_BT6012Les valeurs de couleur sont codées conformément à la norme BT601. Voir également https://www.itu.int/rec/R-REC-BT.601/en.
QVideoFrameFormat::ColorTransfer_Linear3Les valeurs de couleur sont linéaires
QVideoFrameFormat::ColorTransfer_Gamma224Les valeurs de couleur sont codées avec un gamma de 2,2
QVideoFrameFormat::ColorTransfer_Gamma285Les valeurs de couleur sont codées avec un gamma de 2,8
QVideoFrameFormat::ColorTransfer_ST20846Les valeurs de couleur sont codées selon la norme STME ST 2084. Cette fonction de transfert est la fonction de transfert HDR la plus courante et est souvent appelée "quantificateur perceptuel". Voir également https://www.itu.int/rec/R-REC-BT.2100 et https://en.wikipedia.org/wiki/Perceptual_quantizer.
QVideoFrameFormat::ColorTransfer_STD_B677Les valeurs de couleur sont codées à l'aide de la norme ARIB STD B67. Cette fonction de transfert est également souvent appelée "log gamma hybride". Voir également https://www.itu.int/rec/R-REC-BT.2100 et https://en.wikipedia.org/wiki/Hybrid_log-gamma.

enum QVideoFrameFormat::Direction

Énumère la direction de la mise en page des lignes de balayage vidéo.

ConstanteValeurDescription
QVideoFrameFormat::TopToBottom0Les lignes de balayage sont disposées du haut de l'image vers le bas.
QVideoFrameFormat::BottomToTop1Les lignes de balayage sont disposées du bas de l'image vers le haut.

enum QVideoFrameFormat::PixelFormat

Énumère les types de données vidéo.

ConstanteValeurDescription de l'image
QVideoFrameFormat::Format_Invalid0La trame n'est pas valide.
QVideoFrameFormat::Format_ARGB88881La trame est stockée au format ARGB avec 8 bits par composante.
QVideoFrameFormat::Format_ARGB8888_Premultiplied2La trame est stockée en utilisant un format ARGB prémultiplié avec 8 bits par composant.
QVideoFrameFormat::Format_XRGB88883La trame est stockée au format RVB 32 bits par pixel (0xff, R, G, B).
QVideoFrameFormat::Format_BGRA88884La trame est stockée dans un format BGRA 32 bits (0xBBGGRRAA).
QVideoFrameFormat::Format_BGRA8888_Premultiplied5La trame est stockée dans un format BGRA 32 bits prémultiplié.
QVideoFrameFormat::Format_ABGR88887La trame est stockée dans un format ABGR 32 bits (0xAABBGGRR).
QVideoFrameFormat::Format_XBGR88888La trame est stockée au format BGR 32 bits (0xffBBGGRR).
QVideoFrameFormat::Format_RGBA88889La trame est stockée en mémoire sous forme d'octets R, G, B, A/X, avec R à l'adresse la plus basse et A/X à l'adresse la plus haute.
QVideoFrameFormat::Format_BGRX88886La trame est stockée au format 32 bits BGRx, [31:0] B:G:R:x 8:8:8:8 little endian
QVideoFrameFormat::Format_RGBX888810La trame est stockée en mémoire sous forme d'octets R, G, B, A/X, avec R à l'adresse la plus basse et A/X à l'adresse la plus haute.
QVideoFrameFormat::Format_AYUV11La trame est stockée au format AYUV 32 bits (0xAAYYUUVV).
QVideoFrameFormat::Format_AYUV_Premultiplied12La trame est stockée dans un format AYUV 32 bits prémultiplié et compacté (0xAAYYUUVV).
QVideoFrameFormat::Format_YUV420P13La trame est stockée à l'aide d'un format YUV planaire de 8 bits par composante avec les plans U et V sous-échantillonnés horizontalement et verticalement, c'est-à-dire que la hauteur et la largeur des plans U et V sont inférieures de moitié à celles du plan Y.
QVideoFrameFormat::Format_YUV422P14La trame est stockée en utilisant un format YUV planaire de 8 bits par composante avec les plans U et V sous-échantillonnés horizontalement, c'est-à-dire que la largeur des plans U et V est la moitié de celle du plan Y, et que la hauteur des plans U et V est la même que celle du plan Y.
QVideoFrameFormat::Format_YV1215La trame est stockée en utilisant un format planaire YVU de 8 bits par composante avec les plans V et U sous-échantillonnés horizontalement et verticalement, c'est-à-dire que la hauteur et la largeur des plans V et U sont égales à la moitié de celles du plan Y.
QVideoFrameFormat::Format_UYVY16La trame est stockée à l'aide d'un format YUV 8 bits par composante, avec les plans U et V sous-échantillonnés horizontalement (U-Y-V-Y), c'est-à-dire que deux pixels adjacents horizontalement sont stockés sous la forme d'un macropixel 32 bits qui a une valeur Y pour chaque pixel et des valeurs U et V communes.
QVideoFrameFormat::Format_YUYV17La trame est stockée à l'aide d'un format YUV 8 bits par composante, avec les plans U et V sous-échantillonnés horizontalement (Y-U-Y-V), c'est-à-dire que deux pixels adjacents horizontalement sont stockés sous la forme d'un macropixel 32 bits qui a une valeur Y pour chaque pixel et des valeurs U et V communes.
QVideoFrameFormat::Format_NV1218La trame est stockée à l'aide d'un format YUV semi-planaire de 8 bits par composante, avec un plan Y (Y) suivi d'un plan UV emballé, sous-échantillonné horizontalement et verticalement (U-V).
QVideoFrameFormat::Format_NV2119La trame est stockée à l'aide d'un format YUV semi-planaire de 8 bits par composante avec un plan Y (Y) suivi d'un plan VU emballé, sous-échantillonné horizontalement et verticalement (V-U).
QVideoFrameFormat::Format_IMC120La trame est stockée à l'aide d'un format YUV planaire de 8 bits par composante avec les plans U et V sous-échantillonnés horizontalement et verticalement. Ce format est similaire au type Format_YUV420P, sauf que les octets par ligne des plans U et V sont complétés par le même pas que le plan Y.
QVideoFrameFormat::Format_IMC221La trame est stockée à l'aide d'un format YUV planaire de 8 bits par composante, les plans U et V étant sous-échantillonnés horizontalement et verticalement. Ce format est similaire au type Format_YUV420P, sauf que les lignes des plans U et V sont entrelacées, c'est-à-dire que chaque ligne de données U est suivie d'une ligne de données V, ce qui crée une ligne unique de la même longueur que les données Y.
QVideoFrameFormat::Format_IMC322La trame est stockée à l'aide d'un format planaire YVU de 8 bits par composante, les plans V et U étant sous-échantillonnés horizontalement et verticalement. Ce format est similaire au type Format_YV12, sauf que les octets par ligne des plans V et U sont remplacés par le même pas que le plan Y.
QVideoFrameFormat::Format_IMC423La trame est stockée à l'aide d'un format planaire YVU de 8 bits par composante, les plans V et U étant sous-échantillonnés horizontalement et verticalement. Ce format est similaire au type Format_YV12, sauf que les lignes des plans V et U sont entrelacées, c'est-à-dire que chaque ligne de données V est suivie d'une ligne de données U, ce qui crée une ligne unique de la même longueur que les données Y.
QVideoFrameFormat::Format_P01026La trame est stockée à l'aide d'un format YUV semi-planaire de 16 bits par composante, avec un plan Y (Y) suivi d'un plan UV emballé, sous-échantillonné horizontalement et verticalement (U-V). Seuls les 10 bits les plus significatifs de chaque composante sont utilisés.
QVideoFrameFormat::Format_P01627La trame est stockée en utilisant un format YUV semi-planaire de 16 bits par composante avec un plan Y (Y) suivi d'un plan UV emballé, sous-échantillonné horizontalement et verticalement (U-V).
QVideoFrameFormat::Format_Y824La trame est stockée dans un format d'échelle de gris de 8 bits.
QVideoFrameFormat::Format_Y1625La trame est stockée en utilisant un format d'échelle de gris linéaire de 16 bits. Little endian.
QVideoFrameFormat::Format_Jpeg29La trame est stockée au format Jpeg compressé.
QVideoFrameFormat::Format_SamplerExternalOES28L'image est stockée dans un format de texture OES externe. Ce format n'est actuellement utilisé que sur Android.
QVideoFrameFormat::Format_SamplerRect30L'image est stockée au format de texture rectangle (GL_TEXTURE_RECTANGLE). Ce format n'est utilisé que sur macOS avec une interface matérielle de rendu basée sur OpenGL. Le format de pixel sous-jacent stocké dans la texture est Format_BRGA8888.
QVideoFrameFormat::Format_YUV420P1031Similaire à YUV420, mais utilise 16 bits par composant, dont 10 significatifs.

Documentation des fonctions membres

QVideoFrameFormat::QVideoFrameFormat()

Construit un format de flux vidéo nul.

QVideoFrameFormat::QVideoFrameFormat(const QSize &size, QVideoFrameFormat::PixelFormat format)

Construit un flux vidéo avec la trame size et le pixel format donnés.

QVideoFrameFormat::QVideoFrameFormat(const QVideoFrameFormat &other)

Construit une copie de other.

[constexpr noexcept] QVideoFrameFormat::QVideoFrameFormat(QVideoFrameFormat &&other)

Construit un QVideoFrameFormat en passant de other.

[noexcept] QVideoFrameFormat::~QVideoFrameFormat()

Détruit la description d'un flux vidéo.

QVideoFrameFormat::ColorRange QVideoFrameFormat::colorRange() const

Renvoie la gamme de couleurs à utiliser pour le rendu du flux vidéo.

Voir également setColorRange().

QVideoFrameFormat::ColorSpace QVideoFrameFormat::colorSpace() const

Renvoie l'espace couleur d'un flux vidéo.

Voir également setColorSpace().

QVideoFrameFormat::ColorTransfer QVideoFrameFormat::colorTransfer() const

Renvoie la fonction de transfert de couleur à utiliser pour le rendu du flux vidéo.

Voir également setColorTransfer().

int QVideoFrameFormat::frameHeight() const

Renvoie la hauteur de l'image dans un flux vidéo.

qreal QVideoFrameFormat::frameRate() const

Renvoie la fréquence d'images d'un flux vidéo en images par seconde.

Voir également setFrameRate().

QSize QVideoFrameFormat::frameSize() const

Renvoie les dimensions des images d'un flux vidéo.

Voir aussi setFrameSize(), frameWidth() et frameHeight().

int QVideoFrameFormat::frameWidth() const

Renvoie la largeur des images d'un flux vidéo.

Voir aussi frameSize() et frameHeight().

[static] QImage::Format QVideoFrameFormat::imageFormatFromPixelFormat(QVideoFrameFormat::PixelFormat format)

Renvoie un format d'image équivalent à un pixel de trame vidéo format. S'il n'existe pas de format équivalent, QImage::Format_Invalid est renvoyé à la place.

Remarque : en général, QImage ne gère pas les formats YUV.

bool QVideoFrameFormat::isMirrored() const

Renvoie true si la surface est réfléchie autour de son axe vertical.

Les transformations de QVideoFrameFormat, en particulier la rotation et la mise en miroir, peuvent être déterminées par l'orientation du capteur de la caméra, les paramètres de la caméra ou l'orientation du flux vidéo.

La mise en miroir est appliquée après la rotation.

Remarque : la mise en miroir diffère ici de celle de QImage::mirrored, car une image QImage mise en miroir verticalement sera mise en miroir autour de l'axe des x.

bool QVideoFrameFormat::isValid() const

Détermine si le format d'une surface vidéo possède un format de pixels et une taille d'image valides.

Retourne true si le format est valide, et false dans le cas contraire.

QVideoFrameFormat::PixelFormat QVideoFrameFormat::pixelFormat() const

Renvoie le format des pixels des images d'un flux vidéo.

[static] QVideoFrameFormat::PixelFormat QVideoFrameFormat::pixelFormatFromImageFormat(QImage::Format format)

Renvoie un format de pixels vidéo équivalent à une image format. S'il n'existe pas de format équivalent, QVideoFrameFormat::Format_Invalid est renvoyé à la place.

Remarque : en général, QImage ne gère pas les formats YUV.

[static] QString QVideoFrameFormat::pixelFormatToString(QVideoFrameFormat::PixelFormat pixelFormat)

Renvoie une représentation sous forme de chaîne de caractères de l'adresse pixelFormat.

int QVideoFrameFormat::planeCount() const

Renvoie le nombre de plans utilisés. Ce nombre dépend du format des pixels et est de 1 pour les formats basés sur RVB, et d'un nombre compris entre 1 et 3 pour les formats basés sur YUV.

QtVideo::Rotation QVideoFrameFormat::rotation() const

Renvoie l'angle de rotation de la surface dans le sens des aiguilles d'une montre.

Les transformations de QVideoFrameFormat, en particulier la rotation et la mise en miroir, peuvent être déterminées par l'orientation du capteur de la caméra, les paramètres de la caméra ou l'orientation du flux vidéo.

La rotation est appliquée avant la mise en miroir.

Voir également setRotation().

QVideoFrameFormat::Direction QVideoFrameFormat::scanLineDirection() const

Renvoie la direction des lignes de balayage.

Voir également setScanLineDirection().

void QVideoFrameFormat::setColorRange(QVideoFrameFormat::ColorRange range)

Définit la plage de transfert des couleurs à utiliser pour le rendu du flux vidéo sur range.

Voir également colorRange().

void QVideoFrameFormat::setColorSpace(QVideoFrameFormat::ColorSpace colorSpace)

Définit l'adresse colorSpace d'un flux vidéo.

Voir également colorSpace().

void QVideoFrameFormat::setColorTransfer(QVideoFrameFormat::ColorTransfer colorTransfer)

Définit la fonction de transfert de couleur qui doit être utilisée pour rendre le flux vidéo à colorTransfer.

Voir également colorTransfer().

void QVideoFrameFormat::setFrameRate(qreal rate)

Définit la trame rate d'un flux vidéo en images par seconde.

Voir également frameRate().

void QVideoFrameFormat::setFrameSize(const QSize &size)

Définit la taille des images dans un flux vidéo à size.

Cela réinitialisera viewport() pour qu'il remplisse l'intégralité de l'image.

Voir également frameSize().

void QVideoFrameFormat::setFrameSize(int width, int height)

Définit les valeurs width et height des images d'un flux vidéo.

Cette fonction réinitialise viewport() pour qu'il remplisse la totalité de l'image.

Il s'agit d'une fonction surchargée.

void QVideoFrameFormat::setMaxLuminance(float lum)

Règle la luminance maximale à la valeur donnée, lum.

void QVideoFrameFormat::setMirrored(bool mirrored)

Définit si la surface est mirrored autour de son axe vertical.

Les transformations de QVideoFrameFormat, en particulier la rotation et la mise en miroir, peuvent être déterminées par l'orientation du capteur de la caméra, les paramètres de la caméra ou l'orientation du flux vidéo.

La mise en miroir est appliquée après la rotation.

La valeur par défaut est false.

Remarque : la mise en miroir diffère ici de celle de QImage::mirrored, car une image QImage mise en miroir verticalement sera mise en miroir autour de l'axe des x.

Voir également isMirrored().

void QVideoFrameFormat::setRotation(QtVideo::Rotation angle)

Définit l'adresse angle par laquelle la surface est tournée dans le sens des aiguilles d'une montre.

Les transformations de QVideoFrameFormat, en particulier la rotation et la mise en miroir, peuvent être déterminées par l'orientation du capteur de la caméra, les paramètres de la caméra ou l'orientation du flux vidéo.

La rotation est appliquée avant la mise en miroir.

La valeur par défaut est QtVideo::Rotation::None.

Voir également rotation().

void QVideoFrameFormat::setScanLineDirection(QVideoFrameFormat::Direction direction)

Définit l'adresse direction des lignes de balayage.

Voir également scanLineDirection().

void QVideoFrameFormat::setStreamFrameRate(qreal rate)

Définit la trame rate d'un flux vidéo en images par seconde.

Voir également streamFrameRate().

void QVideoFrameFormat::setViewport(const QRect &viewport)

Définit la fenêtre de visualisation d'un flux vidéo à viewport.

Voir aussi viewport().

qreal QVideoFrameFormat::streamFrameRate() const

Renvoie la fréquence d'images d'un flux vidéo en images par seconde.

Voir également setStreamFrameRate().

[noexcept] void QVideoFrameFormat::swap(QVideoFrameFormat &other)

Remplace le format d'image vidéo actuel par le format other.

QRect QVideoFrameFormat::viewport() const

Renvoie la fenêtre de visualisation d'un flux vidéo.

La fenêtre de visualisation est la région d'une image vidéo qui est réellement affichée.

Par défaut, la fenêtre de visualisation couvre une image entière.

Voir également setViewport().

bool QVideoFrameFormat::operator!=(const QVideoFrameFormat &other) const

Retourne true si other est différent de ce format vidéo, et false s'ils sont identiques.

[noexcept] QVideoFrameFormat &QVideoFrameFormat::operator=(QVideoFrameFormat &&other)

Déplace other dans QVideoFrameFormat.

QVideoFrameFormat &QVideoFrameFormat::operator=(const QVideoFrameFormat &other)

Attribue les valeurs de other à cet objet.

bool QVideoFrameFormat::operator==(const QVideoFrameFormat &other) const

Retourne true si other est identique à ce format vidéo, et false s'ils sont différents.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.