QVideoFrame 類

The QVideoFrame class provides a representation of a frame of video data. 更多...

頭: #include <QVideoFrame>
Since: Qt 4.6

公共類型

enum FieldType { ProgressiveFrame, TopField, BottomField, InterlacedFrame }
enum PixelFormat { Format_Invalid, Format_ARGB32, Format_ARGB32_Premultiplied, Format_RGB32, ..., Format_User }

公共函數

QVideoFrame ()
QVideoFrame (QAbstractVideoBuffer * buffer , const QSize & size , PixelFormat format )
QVideoFrame (int bytes , const QSize & size , int bytesPerLine , PixelFormat format )
QVideoFrame (const QImage & image )
QVideoFrame (const QVideoFrame & other )
~QVideoFrame ()
uchar * bits ()
const uchar * bits () const
int bytesPerLine () const
qint64 endTime () const
FieldType fieldType () const
QVariant handle () const
QAbstractVideoBuffer::HandleType handleType () const
int height () const
bool isMapped () const
bool isReadable () const
bool isValid () const
bool isWritable () const
bool map (QAbstractVideoBuffer::MapMode mode )
QAbstractVideoBuffer::MapMode mapMode () const
int mappedBytes () const
PixelFormat pixelFormat () const
void setEndTime (qint64 time )
void setFieldType (FieldType field )
void setStartTime (qint64 time )
QSize size () const
qint64 startTime () const
void unmap ()
int width () const
QVideoFrame & operator= (const QVideoFrame & other )

靜態公共成員

QImage::Format imageFormatFromPixelFormat (PixelFormat format )
PixelFormat pixelFormatFromImageFormat (QImage::Format format )

詳細描述

The QVideoFrame class provides a representation of a frame of video data.

A QVideoFrame encapsulates the data of a video frame, and information about the frame.

The contents of a video frame can be mapped to memory using the map () function. While mapped the video data can accessed using the bits () function which returns a pointer to a buffer, the total size of which is given by the mappedBytes (), and the size of each line is given by bytesPerLine ()。返迴值對於 handle () function may be used to access frame data using the internal buffer's native APIs.

The video data in a QVideoFrame is encapsulated in a QAbstractVideoBuffer QVideoFrame may be constructed from any buffer type by subclassing the QAbstractVideoBuffer 類。

注意: QVideoFrame is explicitly shared, any change made to video frame will also apply to any copies.

成員類型文檔編製

enum QVideoFrame:: FieldType

指定隔行掃描視頻幀所屬的字段。

常量 描述
QVideoFrame::ProgressiveFrame 0 幀非隔行掃描。
QVideoFrame::TopField 1 幀包含 top 字段。
QVideoFrame::BottomField 2 框架包含 bottom 字段。
QVideoFrame::InterlacedFrame 3 幀包含閤並的 top 和 bottom 字段。

enum QVideoFrame:: PixelFormat

枚舉視頻數據類型。

常量 描述
QVideoFrame::Format_Invalid 0 幀無效。
QVideoFrame::Format_ARGB32 1 使用 32 位 ARGB 格式 (0xAARRGGBB) 存儲幀。這相當於 QImage::Format_ARGB32 .
QVideoFrame::Format_ARGB32_Premultiplied 2 使用預乘 32 位 ARGB 格式 (0xAARRGGBB) 存儲幀。這相當於 QImage::Format_ARGB32_Premultiplied .
QVideoFrame::Format_RGB32 3 使用 32 位 RGB 格式 (0xffRRGGBB) 存儲幀。這相當於 QImage::Format_RGB32
QVideoFrame::Format_RGB24 4 The frame is stored using a 24-bit RGB format (8-8-8). This is equivalent to QImage::Format_RGB888
QVideoFrame::Format_RGB565 5 The frame is stored using a 16-bit RGB format (5-6-5). This is equivalent to QImage::Format_RGB16 .
QVideoFrame::Format_RGB555 6 The frame is stored using a 16-bit RGB format (5-5-5). This is equivalent to QImage::Format_RGB555 .
QVideoFrame::Format_ARGB8565_Premultiplied 7 The frame is stored using a 24-bit premultiplied ARGB format (8-6-6-5).
QVideoFrame::Format_BGRA32 8 The frame is stored using a 32-bit ARGB format (0xBBGGRRAA).
QVideoFrame::Format_BGRA32_Premultiplied 9 The frame is stored using a premultiplied 32bit BGRA format.
QVideoFrame::Format_BGR32 10 The frame is stored using a 32-bit BGR format (0xBBGGRRff).
QVideoFrame::Format_BGR24 11 The frame is stored using a 24-bit BGR format (0xBBGGRR).
QVideoFrame::Format_BGR565 12 幀使用 16 位 BGR 格式 (5-6-5) 存儲。
QVideoFrame::Format_BGR555 13 幀使用 16 位 BGR 格式 (5-5-5) 存儲。
QVideoFrame::Format_BGRA5658_Premultiplied 14 The frame is stored using a 24-bit premultiplied BGRA format (5-6-5-8).
QVideoFrame::Format_AYUV444 15 The frame is stored using a packed 32-bit AYUV format (0xAAYYUUVV).
QVideoFrame::Format_AYUV444_Premultiplied 16 The frame is stored using a packed premultiplied 32-bit AYUV format (0xAAYYUUVV).
QVideoFrame::Format_YUV444 17 The frame is stored using a 24-bit packed YUV format (8-8-8).
QVideoFrame::Format_YUV420P 18 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.
QVideoFrame::Format_YV12 19 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.
QVideoFrame::Format_UYVY 20 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.
QVideoFrame::Format_YUYV 21 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.
QVideoFrame::Format_NV12 22 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).
QVideoFrame::Format_NV21 23 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).
QVideoFrame::Format_IMC1 24 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.
QVideoFrame::Format_IMC2 25 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.
QVideoFrame::Format_IMC3 26 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.
QVideoFrame::Format_IMC4 27 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.
QVideoFrame::Format_Y8 28 使用 8 位灰度格式存儲幀。
QVideoFrame::Format_Y16 29 使用 16 位綫性灰度格式存儲幀。小端在前。
QVideoFrame::Format_User 1000 用戶定義像素格式的起始值。

成員函數文檔編製

QVideoFrame:: QVideoFrame ()

構造 null 視頻幀。

QVideoFrame:: QVideoFrame ( QAbstractVideoBuffer * buffer , const QSize & size , PixelFormat format )

構造視頻幀從 buffer of the given pixel format and size (以像素為單位)。

注意: 這不會遞增視頻緩衝的引用計數。

QVideoFrame:: QVideoFrame ( int bytes , const QSize & size , int bytesPerLine , PixelFormat format )

構造視頻幀采用給定像素 format and size (以像素為單位)。

The bytesPerLine (步幅) 是每掃描行的長度 (以字節為單位),和 bytes 是必須為幀分配的總字節數。

QVideoFrame:: QVideoFrame (const QImage & image )

構造視頻幀從 image .

注意: 這會構造無效視頻幀,若不存在等價圖像格式的幀類型。

另請參閱 pixelFormatFromImageFormat ().

QVideoFrame:: QVideoFrame (const QVideoFrame & other )

構造副本為 other .

QVideoFrame:: ~QVideoFrame ()

銷毀視頻幀。

uchar * QVideoFrame:: bits ()

返迴指嚮幀數據緩衝起始的指針。

此值纔有效當幀數據為 mapped .

另請參閱 map (), mappedBytes (),和 bytesPerLine ().

const uchar * QVideoFrame:: bits () const

返迴指嚮幀數據緩衝起始的指針。

此值纔有效當幀數據為 mapped .

另請參閱 map (), mappedBytes (),和 bytesPerLine ().

int QVideoFrame:: bytesPerLine () const

返迴掃描行字節數。

注意: This is the bytes per line of the first plane only. The bytes per line of subsequent planes should be calculated as per the frame type.

此值纔有效當幀數據為 mapped .

另請參閱 bits (), map (),和 mappedBytes ().

qint64 QVideoFrame:: endTime () const

Returns the presentation time when a frame should stop being displayed.

另請參閱 setEndTime ().

FieldType QVideoFrame:: fieldType () const

返迴隔行掃描視頻幀所屬的字段。

若不是隔行掃描視頻,這會返迴 WholeFrame。

另請參閱 setFieldType ().

QVariant QVideoFrame:: handle () const

返迴視頻幀緩衝的特定類型句柄。

For an OpenGL texture this would be the texture ID.

另請參閱 QAbstractVideoBuffer::handle ().

QAbstractVideoBuffer::HandleType QVideoFrame:: handleType () const

返迴視頻幀的句柄類型。

int QVideoFrame:: height () const

返迴視頻幀的高度。

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

返迴圖像格式等效視頻幀像素 format 。若沒有等效格式 QImage::Format_Invalid 被返迴取而代之。

bool QVideoFrame:: isMapped () const

標識目前是否把視頻幀內容,映射到係統內存。

This is a convenience function which checks that the MapMode of the frame is not equal to QAbstractVideoBuffer::NotMapped .

Returns true if the contents of the video frame are mapped to system memory, and false otherwise.

另請參閱 mapMode () 和 QAbstractVideoBuffer::MapMode .

bool QVideoFrame:: isReadable () const

標識視頻幀映射內容,是否是從幀讀取當映射時。

這是方便校驗函數若 MapMode 包含 QAbstractVideoBuffer::WriteOnly 標誌。

返迴 true 若從視頻幀讀取映射內存內容,和 false 否則。

另請參閱 mapMode () 和 QAbstractVideoBuffer::MapMode .

bool QVideoFrame:: isValid () const

標識視頻幀是否有效。

無效幀沒有關聯它的視頻緩衝。

返迴 true 若幀有效,和 false 若幀無效。

bool QVideoFrame:: isWritable () const

標識視頻幀的映射內容是否會持久化,當取消幀映射時。

這是方便校驗函數若 MapMode 包含 QAbstractVideoBuffer::WriteOnly 標誌。

返迴 true 若將更新視頻幀當取消映射時,否則返迴 false。

注意: 更改以隻讀方式映射幀數據的結果未定義。從屬緩衝實現,改變可能持久化,或更糟更改共享緩衝。

另請參閱 mapMode () 和 QAbstractVideoBuffer::MapMode .

bool QVideoFrame:: map ( QAbstractVideoBuffer::MapMode mode )

Maps the contents of a video frame to memory.

映射 mode 指示映射內存內容是否應讀取自和/或寫入幀。若映射模式包括 QAbstractVideoBuffer::ReadOnly flag the mapped memory will be populated with the content of the video frame when mapped. If the map mode inclues the QAbstractVideoBuffer::WriteOnly flag the content of the mapped memory will be persisted in the frame when unmapped.

當映射時,可以直接訪問視頻幀內容透過指針返迴通過 bits () 函數。

When access to the data is no longer needed be sure to call the unmap () function to release the mapped memory.

Returns true if the buffer was mapped to memory in the given mode 和 false 否則。

另請參閱 unmap (), mapMode (),和 bits ().

QAbstractVideoBuffer::MapMode QVideoFrame:: mapMode () const

返迴將視頻幀映射到係統內存中的模式。

另請參閱 map () 和 QAbstractVideoBuffer::MapMode .

int QVideoFrame:: mappedBytes () const

返迴由映射幀數據所占據的字節數。

此值纔有效當幀數據為 mapped .

另請參閱 map ().

PixelFormat QVideoFrame:: pixelFormat () const

返迴視頻幀的顔色格式。

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

Returns an video pixel format equivalent to an image format 。若不存在等價格式,返迴 QVideoFrame::InvalidType 代替。

void QVideoFrame:: setEndTime ( qint64 time )

設置呈現 time when a frame should stop being displayed.

另請參閱 endTime ().

void QVideoFrame:: setFieldType ( FieldType field )

設置 field 屬於隔行掃描視頻幀。

另請參閱 fieldType ().

void QVideoFrame:: setStartTime ( qint64 time )

設置呈現 time when the frame should be displayed.

另請參閱 startTime ().

QSize QVideoFrame:: size () const

Returns the size of a video frame.

qint64 QVideoFrame:: startTime () const

Returns the presentation time when the frame should be displayed.

另請參閱 setStartTime ().

void QVideoFrame:: unmap ()

釋放內存映射通過 map () 函數。

MapMode 包括 QAbstractVideoBuffer::WriteOnly 標誌,則這會把映射內存當前內容堅持到視頻幀。

另請參閱 map ().

int QVideoFrame:: width () const

返迴視頻幀的寬度。

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

賦值內容對於 other to a video frame.