QVideoFrameFormat 类
QVideoFrameFormat 类指定了视频呈现表面的流格式。更多...
头文件 | #include <QVideoFrameFormat> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Multimedia) target_link_libraries(mytarget PRIVATE Qt6::Multimedia) |
qmake | QT += multimedia |
公共类型
枚举 | ColorRange { ColorRange_Unknown, ColorRange_Video, ColorRange_Full } |
枚举 | ColorSpace { ColorSpace_Undefined, ColorSpace_BT601, ColorSpace_BT709, ColorSpace_AdobeRgb, ColorSpace_BT2020 } |
枚举 | ColorTransfer { ColorTransfer_Unknown, ColorTransfer_BT709, ColorTransfer_BT601, ColorTransfer_Linear, ColorTransfer_Gamma22, …, ColorTransfer_STD_B67 } |
枚举 | Direction { TopToBottom, BottomToTop } |
枚举 | PixelFormat { Format_Invalid, Format_ARGB8888, Format_ARGB8888_Premultiplied, Format_XRGB8888, Format_BGRA8888, …, Format_YUV420P10 } |
公共函数
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 |
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 | setScanLineDirection(QVideoFrameFormat::Direction direction) |
void | setViewport(const QRect &viewport) |
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 |
静态公共成员
QImage::Format | imageFormatFromPixelFormat(QVideoFrameFormat::PixelFormat format) |
QVideoFrameFormat::PixelFormat | pixelFormatFromImageFormat(QImage::Format format) |
QString | pixelFormatToString(QVideoFrameFormat::PixelFormat pixelFormat) |
详细描述
视频输出端提供一系列视频帧流。QVideoFrameFormat描述帧的类型并确定它们应该如何展示。
设置视频输出端所需的核心属性包括由pixelFormat()提供的像素格式,以及由frameSize()提供的帧尺寸。
实际在视频表面显示的帧区域由viewport()给出。流可能具有小于帧整个区域的视口,以允许视频尺寸小于视频帧最佳尺寸。例如,帧的宽度可能被扩展,以便每个扫描行的开始是八字节对齐。
其他常见属性包括scanLineDirection(),frameRate()和yCrCbColorSpace()。
成员类型文档
枚举 QVideoFrameFormat::ColorRange
描述了视频数据使用的颜色范围。视频数据通常以全色域或更传统的YUV视频格式中使用的更有限的范围提供。
常量 | 值 | 描述 |
---|---|---|
QVideoFrameFormat::ColorRange_Unknown | 0 | 视频的颜色范围是未知的。 |
QVideoFrameFormat::ColorRange_Video | 1 |
大多数YUV视频格式传统的颜色范围。对于8位格式,Y分量限制在16到235之间。U和V分量限制在16到240之间。
对于更高的位深度,将这些值乘以2^(depth-8)。
常量 | 值 |
---|---|
QVideoFrameFormat::ColorRange_Full | 2 |
全色域。所有从0到2^depth-1的值都有效。
枚举 QVideoFrameFormat::ColorSpace
枚举视频帧的颜色空间。
常量 | 值 | 描述 |
---|---|---|
QVideoFrameFormat::ColorSpace_Undefined | 0 | 未指定颜色空间。 |
QVideoFrameFormat::ColorSpace_BT601 | 1 | 由ITU-R建议BT.601定义的颜色空间,Y值范围为16到235,Cb/Cr范围为16到240。主要用于针对CRT显示器较老的视频。 |
QVideoFrameFormat::ColorSpace_BT709 | 2 | 由ITU-R BT.709定义的颜色空间,值范围与ColorSpace_BT601相同。当前最常用的颜色空间。 |
QVideoFrameFormat::ColorSpace_AdobeRgb | 5 | 大多数JPEG文件使用的全范围YUV颜色空间。 |
QVideoFrameFormat::ColorSpace_BT2020 | 6 | ITU-R BT.2020定义的颜色空间。主要用于HDR视频。 |
枚举 QVideoFrameFormat::ColorTransfer
常量 | 值 | 描述 |
---|---|---|
QVideoFrameFormat::ColorTransfer_Unknown | 0 | 颜色转换函数未知。 |
QVideoFrameFormat::ColorTransfer_BT709 | 1 | 颜色值根据BT709进行编码。另请参阅 https://www.itu.int/rec/R-REC-BT.709/en。它与2.2的伽玛曲线相近但不相同,并且与sRGB中使用的传输曲线相同。 |
QVideoFrameFormat::ColorTransfer_BT601 | 2 | 颜色值根据BT601进行编码。另请参阅 https://www.itu.int/rec/R-REC-BT.601/en。 |
QVideoFrameFormat::ColorTransfer_Linear | 3 | 颜色值是线性的。 |
QVideoFrameFormat::ColorTransfer_Gamma22 | 4 | 颜色值以伽玛2.2进行编码。 |
QVideoFrameFormat::ColorTransfer_Gamma28 | 5 | 颜色值以伽玛2.8进行编码。 |
QVideoFrameFormat::ColorTransfer_ST2084 | 6 | 使用STME ST 2084进行颜色值编码。该传输函数是最常见的HDR传输函数,通常被称为‘感知量化器’。另请参阅 https://www.itu.int/rec/R-REC-BT.2100 和 https://en.wikipedia.org/wiki/Perceptual_quantizer。 |
QVideoFrameFormat::ColorTransfer_STD_B67 | 7 | 使用ARIB STD B67进行颜色值编码。该传输函数也常被称为‘混合对数伽玛’。另请参阅 https://www.itu.int/rec/R-REC-BT.2100 和 https://en.wikipedia.org/wiki/Hybrid_log–gamma。 |
枚举 QVideoFrameFormat::Direction
枚举视频扫描线的布局方向。
常量 | 值 | 描述 |
---|---|---|
QVideoFrameFormat::TopToBottom | 0 | 扫描线从框架顶部到框架底部排列。 |
QVideoFrameFormat::BottomToTop | 1 | 扫描线从框架底部到框架顶部排列。 |
枚举 QVideoFrameFormat::PixelFormat
枚举视频数据类型。
常量 | 值 | 描述 |
---|---|---|
QVideoFrameFormat::Format_Invalid | 0 | 帧无效。 |
QVideoFrameFormat::Format_ARGB8888 | 1 | 使用每个组件8位的ARGB格式存储帧。 |
QVideoFrameFormat::Format_ARGB8888_Premultiplied | 2 | 使用预乘的ARGB格式存储帧,每个组件8位。 |
QVideoFrameFormat::Format_XRGB8888 | 3 | 使用32位每像素的RGB格式(0xff, R, G, B)存储帧。 |
QVideoFrameFormat::Format_BGRA8888 | 4 | 使用32位的BGRA格式(0xBBGGRRAA)存储帧。 |
QVideoFrameFormat::Format_BGRA8888_Premultiplied | 5 | 使用预乘的32位BGRA格式存储帧。 |
QVideoFrameFormat::Format_ABGR8888 | 7 | 使用32位ABGR格式(0xAABBGGRR)存储帧。 |
QVideoFrameFormat::Format_XBGR8888 | 8 | 使用32位BGR格式(0xffBBGGRR)存储帧。 |
QVideoFrameFormat::Format_RGBA8888 | 9 | 内存中按字节R, G, B, A/X顺序存储帧,R位于最低地址,A/X位于最高地址。 |
QVideoFrameFormat::Format_BGRX8888 | 6 | 帧以32位BGRx格式存储,[31:0] B:G:R:x 8:8:8:8 小端格式 |
QVideoFrameFormat::Format_RGBX8888 | 10 | 内存中按字节R, G, B, A/X顺序存储帧,R位于最低地址,A/X位于最高地址。 |
QVideoFrameFormat::Format_AYUV | 11 | 使用打包的32位AYUV格式(0xAAYYUUVV)存储帧。 |
QVideoFrameFormat::Format_AYUV_Premultiplied | 12 | 使用打包的预乘32位AYUV格式(0xAAYYUUVV)存储帧。 |
QVideoFrameFormat::Format_YUV420P | 13 | 使用每个组件8位的平面YUV格式存储帧,U和V平面在水平和垂直方向上子采样,即U和V平面的宽度和高度是Y平面的二分之一。 |
QVideoFrameFormat::Format_YUV422P | 14 | 帧使用每个分量8位平面YUV格式存储,U和V平面水平子采样,即U和V平面的宽度是Y平面的宽度的一半,U和V平面的高度与Y平面相同。 |
QVideoFrameFormat::Format_YV12 | 15 | 帧使用每个分量8位平面YVU格式存储,V和U平面水平和垂直子采样,即V和U平面的高度和宽度是Y平面的高度和宽度的一半。 |
QVideoFrameFormat::Format_UYVY | 16 | 帧使用每个分量8位打包YUV格式存储,U和V平面水平子采样(U-Y-V-Y),即两个水平相邻的像素存储为一个32位的宏像素,每个像素有一个Y值,共同U和V值。 |
QVideoFrameFormat::Format_YUYV | 17 | 帧使用每个分量8位打包YUV格式存储,U和V平面水平子采样(Y-U-Y-V),即两个水平相邻的像素存储为一个32位的宏像素,每个像素有一个Y值,共同U和V值。 |
QVideoFrameFormat::Format_NV12 | 18 | 帧使用每个分量8位半平面YUV格式存储,随后是一个水平和垂直子采样的打包UV平面(U-V)。 |
QVideoFrameFormat::Format_NV21 | 19 | 帧使用每个分量8位半平面YUV格式存储,随后是一个水平和垂直子采样的打包VU平面(V-U)。 |
QVideoFrameFormat::Format_IMC1 | 20 | 帧使用每个分量8位平面YUV格式存储,U和V平面水平和垂直子采样。这与Format_YUV420P类型类似,但U和V平面的每行字节填充到与Y平面的相同步长。 |
QVideoFrameFormat::Format_IMC2 | 21 | 帧使用每个分量8位平面YUV格式存储,U和V平面水平和垂直子采样。这与Format_YUV420P类型类似,但U和V平面的行是交错排列的,即每个U数据行后面跟着一个V数据行,形成一个与Y数据行相同步长的单行。 |
QVideoFrameFormat::Format_IMC3 | 22 | 帧使用每个分量8位平面YVU格式存储,V和U平面水平和垂直子采样。这与Format_YV12类型类似,但V和U平面的每行字节填充到与Y平面的相同步长。 |
QVideoFrameFormat::Format_IMC4 | 23 | 帧使用每个分量8位平面YVU格式存储,V和U平面水平和垂直子采样。这与Format_YV12类型类似,但V和U平面的行是交错排列的,即每个V数据行后面跟着一个U数据行,形成一个与Y数据行相同步长的单行。 |
QVideoFrameFormat::Format_P010 | 26 | 帧使用16位每个分量半平面YUV格式存储,随后是一个水平和垂直子采样的打包UV平面(U-V)。每个分量的最高10位正在使用。 |
QVideoFrameFormat::Format_P016 | 27 | 帧使用16位每个分量半平面YUV格式存储,随后是一个水平和垂直子采样的打包UV平面(U-V)。 |
QVideoFrameFormat::Format_Y8 | 24 | 帧使用8位灰度格式存储。 |
QVideoFrameFormat::Format_Y16 | 25 | 帧使用16位线性灰度格式存储。小端。 |
QVideoFrameFormat::Format_Jpeg | 29 | 帧以压缩的Jpeg格式存储。 |
QVideoFrameFormat::Format_SamplerExternalOES | 28 | 帧以外部OES纹理格式存储。目前在Android上使用。 |
QVideoFrameFormat::Format_SamplerRect | 30 | 帧存储在矩形纹理格式(GL_TEXTURE_RECTANGLE)中。这仅在macOS中使用基于OpenGL的渲染硬件接口时使用。纹理中存储的底层像素格式是Format_BRGA8888。 |
QVideoFrameFormat::Format_YUV420P10 | 31 | 类似于YUV420,但每个分量使用16位,其中10位是有效的。 |
成员函数文档
QVideoFrameFormat::QVideoFrameFormat()
构造一个空的视频流格式。
QVideoFrameFormat::QVideoFrameFormat(const QSize &size, QVideoFrameFormat::PixelFormat format)
构造一个具有给定帧大小和像素格式的视频流。
QVideoFrameFormat::QVideoFrameFormat(const QVideoFrameFormat &other)
构造other的副本。
[noexcept]
QVideoFrameFormat::QVideoFrameFormat(QVideoFrameFormat &&other)
通过移动来自other创建QVideoFrameFormat。
[noexcept]
QVideoFrameFormat::~QVideoFrameFormat()
销毁视频流描述。
QVideoFrameFormat::ColorRange QVideoFrameFormat::colorRange() const
返回应用于渲染视频流的色彩范围。
另请参阅 setColorRange().
QVideoFrameFormat::ColorSpace QVideoFrameFormat::colorSpace() const
返回视频流的色彩空间。
另请参阅 setColorSpace().
QVideoFrameFormat::ColorTransfer QVideoFrameFormat::colorTransfer() const
返回应用于渲染视频流的色彩转换函数。
另请参阅 setColorTransfer().
int QVideoFrameFormat::frameHeight() const
返回视频流中帧的高度。
qreal QVideoFrameFormat::frameRate() const
以每秒帧数返回视频流的帧率。
另请参阅 setFrameRate().
QSize QVideoFrameFormat::frameSize() const
返回视频流中帧的尺寸。
另请参阅 setFrameSize(),frameWidth和frameHeight。
int QVideoFrameFormat::frameWidth() const
返回视频流中帧的宽度。
另请参阅 frameSize和frameHeight。
[静态]
QImage::Format QVideoFrameFormat::imageFormatFromPixelFormat(QVideoFrameFormat::PixelFormat format)
返回一个与视频帧像素格式等效的图像格式。如果没有等效格式,则返回QImage::Format_Invalid。
注意:通常QImage不处理YUV格式。
bool QVideoFrameFormat::isMirrored() const
如果表面在垂直轴周围是镜像的,则返回true
。这通常需要从移动设备的正面摄像头来的视频帧。
注意:这里的镜像与QImage::mirrored不同,因为垂直镜像的QImage将在x轴周围进行镜像。
bool QVideoFrameFormat::isValid() const
标识视频表面格式是否具有有效的像素格式和帧大小。
如果格式有效,则返回true,否则返回false。
QVideoFrameFormat::PixelFormat QVideoFrameFormat::pixelFormat() const
返回视频流中帧的像素格式。
[静态]
QVideoFrameFormat::PixelFormat QVideoFrameFormat::pixelFormatFromImageFormat(QImage::Format format)
返回一个与图像格式等效的视频像素格式。如果没有等效格式,则返回QVideoFrameFormat::Format_Invalid。
注意:通常QImage不处理YUV格式。
[静态]
QString QVideoFrameFormat::pixelFormatToString(QVideoFrameFormat::PixelFormat pixelFormat)
返回给定pixelFormat的字符串表示。
int QVideoFrameFormat::planeCount() const
返回使用的平面数。这个数字取决于像素格式,对于基于RGB的格式为1,对于基于YUV的格式为1到3之间的数字。
QVideoFrameFormat::Direction QVideoFrameFormat::scanLineDirection() const
返回扫描线的方向。
另请参阅:setScanLineDirection()。
void QVideoFrameFormat::setColorRange(QVideoFrameFormat::ColorRange range)
将渲染视频流应使用的颜色传输范围设置为range。
另请参阅:colorRange()。
void QVideoFrameFormat::setColorSpace(QVideoFrameFormat::ColorSpace colorSpace)
设置视频流的colorSpace。
另请参阅:colorSpace()。
void QVideoFrameFormat::setColorTransfer(QVideoFrameFormat::ColorTransfer colorTransfer)
设置用于渲染视频流的颜色转换函数,使其为 colorTransfer。
void QVideoFrameFormat::setFrameRate(qreal rate)
以每秒帧数设置视频流的帧 rate。
另见frameRate。
void QVideoFrameFormat::setFrameSize(const QSize &size)
将视频流中帧的大小设置为 size。
这将重置 viewport() 以填充整个帧。
另见frameSize。
void QVideoFrameFormat::setFrameSize(int width, int height)
这是一个重载函数。
设置视频流中帧的 width 和 height。
这将重置 viewport() 以填充整个帧。
void QVideoFrameFormat::setMaxLuminance(float lum)
将最大亮度设置为给定的值,lum。
void QVideoFrameFormat::setMirrored(bool mirrored)
设置表面是否 mirrored 在其垂直轴周围。这通常需要来自移动设备前摄像头的视频帧。默认值是 false。
注意:这里的镜像与QImage::mirrored不同,因为垂直镜像的QImage将在x轴周围进行镜像。
另见isMirrored。
void QVideoFrameFormat::setScanLineDirection(QVideoFrameFormat::Direction direction)
设置扫描线的 direction。
void QVideoFrameFormat::setViewport(const QRect &viewport)
将视频流的视口设置为 viewport。
另见viewport。
[noexcept]
void QVideoFrameFormat::swap(QVideoFrameFormat &other)
将当前视频帧格式与 other 交换。
QRect QVideoFrameFormat::viewport() const
返回视频流的视口。
视口是视频帧中实际显示的区域。
默认情况下,视口覆盖整个帧。
另见setViewport。
bool QVideoFrameFormat::operator!=(const QVideoFrameFormat &other) const
如果other与此视频格式不同,则返回true;如果相同,则返回false。
[noexcept]
QVideoFrameFormat &QVideoFrameFormat::operator=(QVideoFrameFormat &&other)
将other移动到此QVideoFrameFormat中。
QVideoFrameFormat &QVideoFrameFormat::operator=(const QVideoFrameFormat &other)
将other的值赋予此对象。
bool QVideoFrameFormat::operator==(const QVideoFrameFormat &other) const
如果other与此视频格式相同,则返回true;如果不同,则返回false。
© 2024 The Qt Company Ltd. 本文档中的文献贡献属于其各自所有者的版权。本提供的文档受GNU自由文档许可版1.3的条款约束,由自由软件基金会出版。Qt及其相应标志是The Qt Company Ltd.在芬兰和/或其他国家的商标。所有其他商标均为其各自所有者的财产。