QVideoFrameFormat 类

QVideoFrameFormat 类指定了视频呈现表面的流格式。更多...

头文件 #include <QVideoFrameFormat>
CMakefind_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmakeQT += 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::ColorRangecolorRange() const
QVideoFrameFormat::ColorSpacecolorSpace() const
QVideoFrameFormat::ColorTransfercolorTransfer() const
intframeHeight() const
qrealframeRate() const
QSizeframeSize() const
intframeWidth() const
boolisMirrored() const
boolisValid() const
QVideoFrameFormat::PixelFormatpixelFormat() const
intplaneCount() const
QVideoFrameFormat::DirectionscanLineDirection() const
voidsetColorRange(QVideoFrameFormat::ColorRange range)
voidsetColorSpace(QVideoFrameFormat::ColorSpace colorSpace)
voidsetColorTransfer(QVideoFrameFormat::ColorTransfer colorTransfer)
voidsetFrameRate(qreal rate)
voidsetFrameSize(const QSize &size)
voidsetFrameSize(int width, int height)
voidsetMaxLuminance(float lum)
voidsetMirrored(bool mirrored)
voidsetScanLineDirection(QVideoFrameFormat::Direction direction)
voidsetViewport(const QRect &viewport)
voidswap(QVideoFrameFormat &other)
QRectviewport() const
booloperator!=(const QVideoFrameFormat &other) const
QVideoFrameFormat &operator=(QVideoFrameFormat &&other)
QVideoFrameFormat &operator=(const QVideoFrameFormat &other)
booloperator==(const QVideoFrameFormat &other) const

静态公共成员

QImage::FormatimageFormatFromPixelFormat(QVideoFrameFormat::PixelFormat format)
QVideoFrameFormat::PixelFormatpixelFormatFromImageFormat(QImage::Format format)
QStringpixelFormatToString(QVideoFrameFormat::PixelFormat pixelFormat)

详细描述

视频输出端提供一系列视频帧流。QVideoFrameFormat描述帧的类型并确定它们应该如何展示。

设置视频输出端所需的核心属性包括由pixelFormat()提供的像素格式,以及由frameSize()提供的帧尺寸。

实际在视频表面显示的帧区域由viewport()给出。流可能具有小于帧整个区域的视口,以允许视频尺寸小于视频帧最佳尺寸。例如,帧的宽度可能被扩展,以便每个扫描行的开始是八字节对齐。

其他常见属性包括scanLineDirection(),frameRate()和yCrCbColorSpace()。

成员类型文档

枚举 QVideoFrameFormat::ColorRange

描述了视频数据使用的颜色范围。视频数据通常以全色域或更传统的YUV视频格式中使用的更有限的范围提供。

常量描述
QVideoFrameFormat::ColorRange_Unknown0视频的颜色范围是未知的。
QVideoFrameFormat::ColorRange_Video1 

大多数YUV视频格式传统的颜色范围。对于8位格式,Y分量限制在16到235之间。U和V分量限制在16到240之间。

对于更高的位深度,将这些值乘以2^(depth-8)。

常量
QVideoFrameFormat::ColorRange_Full2

全色域。所有从0到2^depth-1的值都有效。

枚举 QVideoFrameFormat::ColorSpace

枚举视频帧的颜色空间。

常量描述
QVideoFrameFormat::ColorSpace_Undefined0未指定颜色空间。
QVideoFrameFormat::ColorSpace_BT6011由ITU-R建议BT.601定义的颜色空间,Y值范围为16到235,Cb/Cr范围为16到240。主要用于针对CRT显示器较老的视频。
QVideoFrameFormat::ColorSpace_BT7092由ITU-R BT.709定义的颜色空间,值范围与ColorSpace_BT601相同。当前最常用的颜色空间。
QVideoFrameFormat::ColorSpace_AdobeRgb5大多数JPEG文件使用的全范围YUV颜色空间。
QVideoFrameFormat::ColorSpace_BT20206ITU-R BT.2020定义的颜色空间。主要用于HDR视频。

枚举 QVideoFrameFormat::ColorTransfer

常量描述
QVideoFrameFormat::ColorTransfer_Unknown0颜色转换函数未知。
QVideoFrameFormat::ColorTransfer_BT7091颜色值根据BT709进行编码。另请参阅 https://www.itu.int/rec/R-REC-BT.709/en。它与2.2的伽玛曲线相近但不相同,并且与sRGB中使用的传输曲线相同。
QVideoFrameFormat::ColorTransfer_BT6012颜色值根据BT601进行编码。另请参阅 https://www.itu.int/rec/R-REC-BT.601/en。
QVideoFrameFormat::ColorTransfer_Linear3颜色值是线性的。
QVideoFrameFormat::ColorTransfer_Gamma224颜色值以伽玛2.2进行编码。
QVideoFrameFormat::ColorTransfer_Gamma285颜色值以伽玛2.8进行编码。
QVideoFrameFormat::ColorTransfer_ST20846使用STME ST 2084进行颜色值编码。该传输函数是最常见的HDR传输函数,通常被称为‘感知量化器’。另请参阅 https://www.itu.int/rec/R-REC-BT.2100 和 https://en.wikipedia.org/wiki/Perceptual_quantizer。
QVideoFrameFormat::ColorTransfer_STD_B677使用ARIB STD B67进行颜色值编码。该传输函数也常被称为‘混合对数伽玛’。另请参阅 https://www.itu.int/rec/R-REC-BT.2100 和 https://en.wikipedia.org/wiki/Hybrid_log–gamma。

枚举 QVideoFrameFormat::Direction

枚举视频扫描线的布局方向。

常量描述
QVideoFrameFormat::TopToBottom0扫描线从框架顶部到框架底部排列。
QVideoFrameFormat::BottomToTop1扫描线从框架底部到框架顶部排列。

枚举 QVideoFrameFormat::PixelFormat

枚举视频数据类型。

常量描述
QVideoFrameFormat::Format_Invalid0帧无效。
QVideoFrameFormat::Format_ARGB88881使用每个组件8位的ARGB格式存储帧。
QVideoFrameFormat::Format_ARGB8888_Premultiplied2使用预乘的ARGB格式存储帧,每个组件8位。
QVideoFrameFormat::Format_XRGB88883使用32位每像素的RGB格式(0xff, R, G, B)存储帧。
QVideoFrameFormat::Format_BGRA88884使用32位的BGRA格式(0xBBGGRRAA)存储帧。
QVideoFrameFormat::Format_BGRA8888_Premultiplied5使用预乘的32位BGRA格式存储帧。
QVideoFrameFormat::Format_ABGR88887使用32位ABGR格式(0xAABBGGRR)存储帧。
QVideoFrameFormat::Format_XBGR88888使用32位BGR格式(0xffBBGGRR)存储帧。
QVideoFrameFormat::Format_RGBA88889内存中按字节R, G, B, A/X顺序存储帧,R位于最低地址,A/X位于最高地址。
QVideoFrameFormat::Format_BGRX88886帧以32位BGRx格式存储,[31:0] B:G:R:x 8:8:8:8 小端格式
QVideoFrameFormat::Format_RGBX888810内存中按字节R, G, B, A/X顺序存储帧,R位于最低地址,A/X位于最高地址。
QVideoFrameFormat::Format_AYUV11使用打包的32位AYUV格式(0xAAYYUUVV)存储帧。
QVideoFrameFormat::Format_AYUV_Premultiplied12使用打包的预乘32位AYUV格式(0xAAYYUUVV)存储帧。
QVideoFrameFormat::Format_YUV420P13使用每个组件8位的平面YUV格式存储帧,U和V平面在水平和垂直方向上子采样,即U和V平面的宽度和高度是Y平面的二分之一。
QVideoFrameFormat::Format_YUV422P14帧使用每个分量8位平面YUV格式存储,U和V平面水平子采样,即U和V平面的宽度是Y平面的宽度的一半,U和V平面的高度与Y平面相同。
QVideoFrameFormat::Format_YV1215帧使用每个分量8位平面YVU格式存储,V和U平面水平和垂直子采样,即V和U平面的高度和宽度是Y平面的高度和宽度的一半。
QVideoFrameFormat::Format_UYVY16帧使用每个分量8位打包YUV格式存储,U和V平面水平子采样(U-Y-V-Y),即两个水平相邻的像素存储为一个32位的宏像素,每个像素有一个Y值,共同U和V值。
QVideoFrameFormat::Format_YUYV17帧使用每个分量8位打包YUV格式存储,U和V平面水平子采样(Y-U-Y-V),即两个水平相邻的像素存储为一个32位的宏像素,每个像素有一个Y值,共同U和V值。
QVideoFrameFormat::Format_NV1218帧使用每个分量8位半平面YUV格式存储,随后是一个水平和垂直子采样的打包UV平面(U-V)。
QVideoFrameFormat::Format_NV2119帧使用每个分量8位半平面YUV格式存储,随后是一个水平和垂直子采样的打包VU平面(V-U)。
QVideoFrameFormat::Format_IMC120帧使用每个分量8位平面YUV格式存储,U和V平面水平和垂直子采样。这与Format_YUV420P类型类似,但U和V平面的每行字节填充到与Y平面的相同步长。
QVideoFrameFormat::Format_IMC221帧使用每个分量8位平面YUV格式存储,U和V平面水平和垂直子采样。这与Format_YUV420P类型类似,但U和V平面的行是交错排列的,即每个U数据行后面跟着一个V数据行,形成一个与Y数据行相同步长的单行。
QVideoFrameFormat::Format_IMC322帧使用每个分量8位平面YVU格式存储,V和U平面水平和垂直子采样。这与Format_YV12类型类似,但V和U平面的每行字节填充到与Y平面的相同步长。
QVideoFrameFormat::Format_IMC423帧使用每个分量8位平面YVU格式存储,V和U平面水平和垂直子采样。这与Format_YV12类型类似,但V和U平面的行是交错排列的,即每个V数据行后面跟着一个U数据行,形成一个与Y数据行相同步长的单行。
QVideoFrameFormat::Format_P01026帧使用16位每个分量半平面YUV格式存储,随后是一个水平和垂直子采样的打包UV平面(U-V)。每个分量的最高10位正在使用。
QVideoFrameFormat::Format_P01627帧使用16位每个分量半平面YUV格式存储,随后是一个水平和垂直子采样的打包UV平面(U-V)。
QVideoFrameFormat::Format_Y824帧使用8位灰度格式存储。
QVideoFrameFormat::Format_Y1625帧使用16位线性灰度格式存储。小端。
QVideoFrameFormat::Format_Jpeg29帧以压缩的Jpeg格式存储。
QVideoFrameFormat::Format_SamplerExternalOES28帧以外部OES纹理格式存储。目前在Android上使用。
QVideoFrameFormat::Format_SamplerRect30帧存储在矩形纹理格式(GL_TEXTURE_RECTANGLE)中。这仅在macOS中使用基于OpenGL的渲染硬件接口时使用。纹理中存储的底层像素格式是Format_BRGA8888。
QVideoFrameFormat::Format_YUV420P1031类似于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(),frameWidthframeHeight

int QVideoFrameFormat::frameWidth() const

返回视频流中帧的宽度。

另请参阅 frameSizeframeHeight

[静态] 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

另见colorTransfer

void QVideoFrameFormat::setFrameRate(qreal rate)

以每秒帧数设置视频流的帧 rate

另见frameRate

void QVideoFrameFormat::setFrameSize(const QSize &size)

将视频流中帧的大小设置为 size

这将重置 viewport() 以填充整个帧。

另见frameSize

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

这是一个重载函数。

设置视频流中帧的 widthheight

这将重置 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

另见scanLineDirection

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.在芬兰和/或其他国家的商标。所有其他商标均为其各自所有者的财产。