QVideoFrameFormat Class▲
- 
					Header: QVideoFrameFormat 
- 
					CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia) target_link_libraries(mytarget PRIVATE Qt6::Multimedia) 
- 
					qmake: QT += multimedia 
- 
					Group: QVideoFrameFormat is part of multimedia, multimedia_video 
Detailed Description▲
A video sink presents a stream of video frames. QVideoFrameFormat describes the type of the frames and determines how they should be presented.
The core properties of a video stream required to set up a video sink are the pixel format given by pixelFormat(), and the frame dimensions given by frameSize().
The region of a frame that is actually displayed on a video surface is given by the viewport(). A stream may have a viewport less than the entire region of a frame to allow for videos smaller than the nearest optimal size of a video frame. For example the width of a frame may be extended so that the start of each scan line is eight byte aligned.
Other common properties are the scanLineDirection(), frameRate() and the yCrCbColorSpace().
Member Type Documentation▲
enum QVideoFrameFormat::ColorRange▲
Describes the color range used by the video data. Video data usually comes in either full color range, where all values are being used, or a more limited range traditionally used in YUV video formats, where a subset of all values is being used.
| Constant | Value | Description | 
|---|---|---|
| QVideoFrameFormat::ColorRange_Unknown | 0 | The color range of the video is unknown. | 
| QVideoFrameFormat::ColorRange_Video | 1 | 
The color range traditionally used by most YUV video formats. For 8 bit formats, the Y component is limited to values between 16 and 235. The U and V components are limited to values between 16 and 240
For higher bit depths multiply these values with 2^(depth-8).
| Constant | |
|---|---|
| QVideoFrameFormat::ColorRange_Full | 2 | 
Full color range. All values from 0 to 2^depth - 1 are valid.
enum QVideoFrameFormat::ColorSpace▲
Enumerates the color space of video frames.
| Constant | Value | Description | 
|---|---|---|
| QVideoFrameFormat::ColorSpace_Undefined | 0 | No color space is specified. | 
| QVideoFrameFormat::ColorSpace_BT601 | 1 | A color space defined by ITU-R recommendation BT.601 with Y value range from 16 to 235, and Cb/Cr range from 16 to 240. Used mostly by older videos that were targeting CRT displays. | 
| QVideoFrameFormat::ColorSpace_BT709 | 2 | A color space defined by ITU-R BT.709 with the same values range as ColorSpace_BT601. The most commonly used color space today. | 
| QVideoFrameFormat::ColorSpace_AdobeRgb | 5 | The full range YUV color space used in most JPEG files. | 
| QVideoFrameFormat::ColorSpace_BT2020 | 6 | The color space defined by ITU-R BT.2020. Used mainly for HDR videos. | 
enum QVideoFrameFormat::ColorTransfer▲
| Constant | Value | Description | 
|---|---|---|
| QVideoFrameFormat::ColorTransfer_Unknown | 0 | The color transfer function is unknown. | 
| QVideoFrameFormat::ColorTransfer_BT709 | 1 | Color values are encoded according to BT709. See also https://www.itu.int/rec/R-REC-BT.709/en. This is close to, but not identical to a gamma curve of 2.2, and the same transfer curve as is used in sRGB. | 
| QVideoFrameFormat::ColorTransfer_BT601 | 2 | Color values are encoded according to BT601. See also https://www.itu.int/rec/R-REC-BT.601/en. | 
| QVideoFrameFormat::ColorTransfer_Linear | 3 | Color values are linear | 
| QVideoFrameFormat::ColorTransfer_Gamma22 | 4 | Color values are encoded with a gamma of 2.2 | 
| QVideoFrameFormat::ColorTransfer_Gamma28 | 5 | Color values are encoded with a gamma of 2.8 | 
| QVideoFrameFormat::ColorTransfer_ST2084 | 6 | Color values are encoded using STME ST 2084. This transfer function is the most common HDR transfer function and often called the 'perceptual quantizer'. See also https://www.itu.int/rec/R-REC-BT.2100 and https://en.wikipedia.org/wiki/Perceptual_quantizer. | 
| QVideoFrameFormat::ColorTransfer_STD_B67 | 7 | Color values are encoded using ARIB STD B67. This transfer function is also often referred to as 'hybrid log gamma'. See also https://www.itu.int/rec/R-REC-BT.2100 and https://en.wikipedia.org/wiki/Hybrid_log–gamma. | 
enum QVideoFrameFormat::Direction▲
Enumerates the layout direction of video scan lines.
| Constant | Value | Description | 
|---|---|---|
| QVideoFrameFormat::TopToBottom | 0 | Scan lines are arranged from the top of the frame to the bottom. | 
| QVideoFrameFormat::BottomToTop | 1 | Scan lines are arranged from the bottom of the frame to the top. | 
enum QVideoFrameFormat::PixelFormat▲
Enumerates video data types.
| Constant | Value | Description | 
|---|---|---|
| QVideoFrameFormat::Format_Invalid | 0 | The frame is invalid. | 
| QVideoFrameFormat::Format_ARGB8888 | 1 | The frame is stored using a ARGB format with 8 bits per component. | 
| QVideoFrameFormat::Format_ARGB8888_Premultiplied | 2 | The frame stored using a premultiplied ARGB format with 8 bits per component. | 
| QVideoFrameFormat::Format_XRGB8888 | 3 | The frame stored using a 32 bits per pixel RGB format (0xff, R, G, B). | 
| QVideoFrameFormat::Format_BGRA8888 | 4 | The frame is stored using a 32-bit BGRA format (0xBBGGRRAA). | 
| QVideoFrameFormat::Format_BGRA8888_Premultiplied | 5 | The frame is stored using a premultiplied 32bit BGRA format. | 
| QVideoFrameFormat::Format_ABGR8888 | 7 | The frame is stored using a 32-bit ABGR format (0xAABBGGRR). | 
| QVideoFrameFormat::Format_XBGR8888 | 8 | The frame is stored using a 32-bit BGR format (0xffBBGGRR). | 
| QVideoFrameFormat::Format_RGBA8888 | 9 | The frame is stored in memory as the bytes R, G, B, A/X, with R at the lowest address and A/X at the highest address. | 
| QVideoFrameFormat::Format_BGRX8888 | 6 | The frame is stored in format 32-bit BGRx format, [31:0] B:G:R:x 8:8:8:8 little endian | 
| QVideoFrameFormat::Format_RGBX8888 | 10 | The frame is stored in memory as the bytes R, G, B, A/X, with R at the lowest address and A/X at the highest address. | 
| QVideoFrameFormat::Format_AYUV | 11 | The frame is stored using a packed 32-bit AYUV format (0xAAYYUUVV). | 
| QVideoFrameFormat::Format_AYUV_Premultiplied | 12 | The frame is stored using a packed premultiplied 32-bit AYUV format (0xAAYYUUVV). | 
| QVideoFrameFormat::Format_YUV420P | 13 | The frame is stored using an 8-bit per component planar YUV format with the U and V planes horizontally and vertically sub-sampled, i.e. the height and width of the U and V planes are half that of the Y plane. | 
| QVideoFrameFormat::Format_YUV422P | 14 | The frame is stored using an 8-bit per component planar YUV format with the U and V planes horizontally sub-sampled, i.e. the width of the U and V planes are half that of the Y plane, and height of U and V planes is the same as Y. | 
| QVideoFrameFormat::Format_YV12 | 15 | The frame is stored using an 8-bit per component planar YVU format with the V and U planes horizontally and vertically sub-sampled, i.e. the height and width of the V and U planes are half that of the Y plane. | 
| QVideoFrameFormat::Format_UYVY | 16 | The frame is stored using an 8-bit per component packed YUV format with the U and V planes horizontally sub-sampled (U-Y-V-Y), i.e. two horizontally adjacent pixels are stored as a 32-bit macropixel which has a Y value for each pixel and common U and V values. | 
| QVideoFrameFormat::Format_YUYV | 17 | The frame is stored using an 8-bit per component packed YUV format with the U and V planes horizontally sub-sampled (Y-U-Y-V), i.e. two horizontally adjacent pixels are stored as a 32-bit macropixel which has a Y value for each pixel and common U and V values. | 
| QVideoFrameFormat::Format_NV12 | 18 | The frame is stored using an 8-bit per component semi-planar YUV format with a Y plane (Y) followed by a horizontally and vertically sub-sampled, packed UV plane (U-V). | 
| QVideoFrameFormat::Format_NV21 | 19 | The frame is stored using an 8-bit per component semi-planar YUV format with a Y plane (Y) followed by a horizontally and vertically sub-sampled, packed VU plane (V-U). | 
| QVideoFrameFormat::Format_IMC1 | 20 | The frame is stored using an 8-bit per component planar YUV format with the U and V planes horizontally and vertically sub-sampled. This is similar to the Format_YUV420P type, except that the bytes per line of the U and V planes are padded out to the same stride as the Y plane. | 
| QVideoFrameFormat::Format_IMC2 | 21 | The frame is stored using an 8-bit per component planar YUV format with the U and V planes horizontally and vertically sub-sampled. This is similar to the Format_YUV420P type, except that the lines of the U and V planes are interleaved, i.e. each line of U data is followed by a line of V data creating a single line of the same stride as the Y data. | 
| QVideoFrameFormat::Format_IMC3 | 22 | The frame is stored using an 8-bit per component planar YVU format with the V and U planes horizontally and vertically sub-sampled. This is similar to the Format_YV12 type, except that the bytes per line of the V and U planes are padded out to the same stride as the Y plane. | 
| QVideoFrameFormat::Format_IMC4 | 23 | The frame is stored using an 8-bit per component planar YVU format with the V and U planes horizontally and vertically sub-sampled. This is similar to the Format_YV12 type, except that the lines of the V and U planes are interleaved, i.e. each line of V data is followed by a line of U data creating a single line of the same stride as the Y data. | 
| QVideoFrameFormat::Format_P010 | 26 | The frame is stored using a 16bit per component semi-planar YUV format with a Y plane (Y) followed by a horizontally and vertically sub-sampled, packed UV plane (U-V). Only the 10 most significant bits of each component are being used. | 
| QVideoFrameFormat::Format_P016 | 27 | The frame is stored using a 16bit per component semi-planar YUV format with a Y plane (Y) followed by a horizontally and vertically sub-sampled, packed UV plane (U-V). | 
| QVideoFrameFormat::Format_Y8 | 24 | The frame is stored using an 8-bit greyscale format. | 
| QVideoFrameFormat::Format_Y16 | 25 | The frame is stored using a 16-bit linear greyscale format. Little endian. | 
| QVideoFrameFormat::Format_Jpeg | 29 | The frame is stored in compressed Jpeg format. | 
| QVideoFrameFormat::Format_SamplerExternalOES | 28 | The frame is stored in external OES texture format. This is currently only being used on Android. | 
| QVideoFrameFormat::Format_SamplerRect | 30 | The frame is stored in rectangle texture format (GL_TEXTURE_RECTANGLE). This is only being used on macOS with an OpenGL based Rendering Hardware interface. The underlying pixel format stored in the texture is Format_BRGA8888. | 
| QVideoFrameFormat::Format_YUV420P10 | 31 | Similar to YUV420, but uses 16bits per component, 10 of those significant. | 
Member Function Documentation▲
QVideoFrameFormat::QVideoFrameFormat()▲
Constructs a null video stream format.
QVideoFrameFormat::QVideoFrameFormat(const QSize &size, QVideoFrameFormat::PixelFormat format)▲
Constructs a video stream with the given frame size and pixel format.
QVideoFrameFormat::QVideoFrameFormat(const QVideoFrameFormat &other)▲
Constructs a copy of other.
QVideoFrameFormat::QVideoFrameFormat(QVideoFrameFormat &&other)▲
Constructs a QVideoFrameFormat by moving from other.
QVideoFrameFormat::~QVideoFrameFormat()▲
Destroys a video stream description.
QVideoFrameFormat::ColorRange QVideoFrameFormat::colorRange() const▲
Returns the color range that should be used to render the video stream.
See Also▲
See also setColorRange()
QVideoFrameFormat::ColorSpace QVideoFrameFormat::colorSpace() const▲
QVideoFrameFormat::ColorTransfer QVideoFrameFormat::colorTransfer() const▲
Returns the color transfer function that should be used to render the video stream.
See Also▲
See also setColorTransfer()
int QVideoFrameFormat::frameHeight() const▲
Returns the height of frame in a video stream.
qreal QVideoFrameFormat::frameRate() const▲
QSize QVideoFrameFormat::frameSize() const▲
Returns the dimensions of frames in a video stream.
See Also▲
See also setFrameSize(), frameWidth(), frameHeight()
int QVideoFrameFormat::frameWidth() const▲
[static] QImage::Format QVideoFrameFormat::imageFormatFromPixelFormat(QVideoFrameFormat::PixelFormat format)▲
Returns an image format equivalent to a video frame pixel format. If there is no equivalent format QImage::Format_Invalid is returned instead.
In general QImage does not handle YUV formats.
bool QVideoFrameFormat::isMirrored() const▲
Returns true if the surface is mirrored around its vertical axis. This is typically needed for video frames coming from a front camera of a mobile device.
The mirroring here differs from QImage::mirrored, as a vertically mirrored QImage will be mirrored around its x-axis.
bool QVideoFrameFormat::isValid() const▲
Identifies if a video surface format has a valid pixel format and frame size.
Returns true if the format is valid, and false otherwise.
QVideoFrameFormat::PixelFormat QVideoFrameFormat::pixelFormat() const▲
Returns the pixel format of frames in a video stream.
[static] QVideoFrameFormat::PixelFormat QVideoFrameFormat::pixelFormatFromImageFormat(QImage::Format format)▲
Returns a video pixel format equivalent to an image format. If there is no equivalent format QVideoFrameFormat::Format_Invalid is returned instead.
In general QImage does not handle YUV formats.
[static] QString QVideoFrameFormat::pixelFormatToString(QVideoFrameFormat::PixelFormat pixelFormat)▲
Returns a string representation of the given pixelFormat.
int QVideoFrameFormat::planeCount() const▲
Returns the number of planes used. This number is depending on the pixel format and is 1 for RGB based formats, and a number between 1 and 3 for YUV based formats.
QVideoFrameFormat::Direction QVideoFrameFormat::scanLineDirection() const▲
void QVideoFrameFormat::setColorRange(QVideoFrameFormat::ColorRange range)▲
Sets the color transfer range that should be used to render the video stream to range.
See Also▲
See also colorRange()
void QVideoFrameFormat::setColorSpace(QVideoFrameFormat::ColorSpace colorSpace)▲
void QVideoFrameFormat::setColorTransfer(QVideoFrameFormat::ColorTransfer colorTransfer)▲
Sets the color transfer function that should be used to render the video stream to colorTransfer.
See Also▲
See also colorTransfer()
void QVideoFrameFormat::setFrameRate(qreal rate)▲
void QVideoFrameFormat::setFrameSize(const QSize &size)▲
Sets the size of frames in a video stream to size.
This will reset the viewport() to fill the entire frame.
See Also▲
See also frameSize()
void QVideoFrameFormat::setFrameSize(int width, int height)▲
This is an overloaded function.
Sets the width and height of frames in a video stream.
This will reset the viewport() to fill the entire frame.
void QVideoFrameFormat::setMaxLuminance(float lum)▲
Sets the maximum luminance to the given value, lum.
void QVideoFrameFormat::setMirrored(bool mirrored)▲
Sets if the surface is mirrored around its vertical axis. This is typically needed for video frames coming from a front camera of a mobile device. Default value is false.
The mirroring here differs from QImage::mirrored, as a vertically mirrored QImage will be mirrored around its x-axis.
See Also▲
See also isMirrored()
void QVideoFrameFormat::setScanLineDirection(QVideoFrameFormat::Direction direction)▲
void QVideoFrameFormat::setViewport(const QRect &viewport)▲
void QVideoFrameFormat::swap(QVideoFrameFormat &other)▲
Swaps the current video frame format with the other.
QRect QVideoFrameFormat::viewport() const▲
Returns the viewport of a video stream.
The viewport is the region of a video frame that is actually displayed.
By default the viewport covers an entire frame.
See Also▲
See also setViewport()
bool QVideoFrameFormat::operator!=(const QVideoFrameFormat &other) const▲
Returns true if other is different to this video format, and false if they are the same.
QVideoFrameFormat &QVideoFrameFormat::operator=(QVideoFrameFormat &&other)▲
Moves other into this QVideoFrameFormat.
QVideoFrameFormat &QVideoFrameFormat::operator=(const QVideoFrameFormat &other)▲
Assigns the values of other to this object.
bool QVideoFrameFormat::operator==(const QVideoFrameFormat &other) const▲
Returns true if other is the same as this video format, and false if they are different.
Obsolete Members for QVideoFrameFormat▲
The following members of class QVideoFrameFormat are deprecated. We strongly advise against using them in new code.
Obsolete Member Type Documentation▲
enum QVideoFrameFormat::YCbCrColorSpace▲
This enum is deprecated. We strongly advise against using it in new code.
Use QVideoFrameFormat::ColorSpace instead.
Enumerates the Y'CbCr color space of video frames.
| Constant | Value | Description | 
|---|---|---|
| QVideoFrameFormat::YCbCr_Undefined | 0 | No color space is specified. | 
| QVideoFrameFormat::YCbCr_BT601 | 1 | A Y'CbCr color space defined by ITU-R recommendation BT.601 with Y value range from 16 to 235, and Cb/Cr range from 16 to 240. Used mostly by older videos that were targeting CRT displays. | 
| QVideoFrameFormat::YCbCr_BT709 | 2 | A Y'CbCr color space defined by ITU-R BT.709 with the same values range as YCbCr_BT601. The most commonly used color space today. | 
| QVideoFrameFormat::YCbCr_xvYCC601 | 3 | This value is deprecated. Please check the ColorRange instead. The BT.601 color space with the value range extended to 0 to 255. It is backward compatible with BT.601 and uses values outside BT.601 range to represent a wider range of colors. | 
| QVideoFrameFormat::YCbCr_xvYCC709 | 4 | This value is deprecated. Please check the ColorRange instead. The BT.709 color space with the value range extended to 0 to 255. | 
| QVideoFrameFormat::YCbCr_JPEG | 5 | The full range Y'CbCr color space used in most JPEG files. | 
| QVideoFrameFormat::YCbCr_BT2020 | 6 | The color space defined by ITU-R BT.2020. Used mainly for HDR videos. | 
Obsolete Member Function Documentation▲
void QVideoFrameFormat::setYCbCrColorSpace(QVideoFrameFormat::YCbCrColorSpace space)▲
This function is deprecated. We strongly advise against using it in new code.
Use setColorSpace() instead
Sets the Y'CbCr color space of a video stream. It is only used with raw YUV frame types.
See Also▲
See also yCbCrColorSpace()
QVideoFrameFormat::YCbCrColorSpace QVideoFrameFormat::yCbCrColorSpace() const▲
This function is deprecated. We strongly advise against using it in new code.
Use colorSpace() instead
Returns the Y'CbCr color space of a video stream.
See Also▲
See also setYCbCrColorSpace()




