PySide6.QtMultimedia.QAbstractVideoBuffer

class QAbstractVideoBuffer

QAbstractVideoBuffer 类是视频数据的抽象。More_

在版本6.8中添加。

概要

虚拟方法

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

QVideoFrame 类内部使用 QAbstractVideoBuffer 来引用视频数据的缓冲区。通过创建 QAbstractVideoBuffer 的子类,您可以从预分配或静态缓冲区构建视频帧。该子类可以包含一个硬件缓冲区,并通过将缓冲区映射到CPU内存来实现对数据的访问。

缓冲区的内容可以通过使用map()函数将缓冲区映射到内存来访问,该函数返回一个包含当前视频数据平面布局信息的结构。

abstract format()
Return type:

QVideoFrameFormat

获取底层视频缓冲区的QVideoFrameFormat

格式必须在构造QVideoFrame时可用。QVideoFrame将包含给定格式的实例,可以分离和修改。

abstract map(mode)
Parameters:

modeMapMode

Return type:

MapData

将视频缓冲区的平面映射到内存。

返回一个包含当前映射视频数据的平面布局信息的MapData结构。如果映射失败,该方法返回默认结构。对于CPU内存缓冲区,数据被视为已经映射,因此该函数仅返回预分配底层数据的平面布局。

地图模式 mode 指示映射内存的内容是否应从缓冲区读取和/或写入缓冲区。如果地图模式包括 QVideoFrame::ReadOnly 标志,则在最初映射时,映射内存将填充缓冲区的内容。如果地图模式包括 QVideoFrame::WriteOnly 标志,则在取消映射时,可能已修改的映射内存的内容将写回缓冲区。

当不再需要访问数据时,调用unmap函数以释放映射的内存并可能更新缓冲区内容。

如果视频数据的格式是多平面的,该方法可能会将整个像素数据映射为单个平面。在这种情况下,使用QVideoFrame映射缓冲区将根据第一个平面的指定行步幅、帧高度和数据大小计算额外的平面。

unmap()

释放由map()函数映射的内存。

如果MapMode包含了QVideoFrame::WriteOnly标志,这将把映射内存的当前内容写回视频帧。

对于CPU视频缓冲区,该函数可能不会被重写。unmap的默认实现不执行任何操作。

另请参阅

map()

class MapData

注意

本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。

详细描述

PySide6.QtMultimedia.QAbstractVideoBuffer.MapData.planeCount
PySide6.QtMultimedia.QAbstractVideoBuffer.MapData.bytesPerLine
PySide6.QtMultimedia.QAbstractVideoBuffer.MapData.data
PySide6.QtMultimedia.QAbstractVideoBuffer.MapData.dataSize