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()