Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
QAbstractVideoBuffer Class Referenceabstract

The QAbstractVideoBuffer class is an abstraction for video data. \inmodule QtMultimedia. More...

#include <qabstractvideobuffer.h>

+ Inheritance diagram for QAbstractVideoBuffer:
+ Collaboration diagram for QAbstractVideoBuffer:

Classes

class  MapData
 The QAbstractVideoBuffer::MapData structure describes the mapped plane layout. More...
 

Public Member Functions

virtual ~QAbstractVideoBuffer ()
 \variable QAbstractVideoBuffer::MapData::planeCount
 
virtual MapData map (QVideoFrame::MapMode mode)=0
 Maps the planes of a video buffer to memory.
 
virtual void unmap ()
 Releases the memory mapped by the map() function.
 
virtual QVideoFrameFormat format () const =0
 Gets \l QVideoFrameFormat of the underlying video buffer.
 

Detailed Description

The QAbstractVideoBuffer class is an abstraction for video data. \inmodule QtMultimedia.

Since
6.8

The \l QVideoFrame class makes use of a QAbstractVideoBuffer internally to reference a buffer of video data. Creating a subclass of QAbstractVideoBuffer allows you to construct video frames from preallocated or static buffers. The subclass can contain a hardware buffer, and implement access to the data by mapping the buffer to CPU memory.

The contents of a buffer can be accessed by mapping the buffer to memory using the map() function, which returns a structure containing information about plane layout of the current video data.

See also
QVideoFrame, QVideoFrameFormat, QVideoFrame::MapMode

Definition at line 14 of file qabstractvideobuffer.h.

Constructor & Destructor Documentation

◆ ~QAbstractVideoBuffer()

QAbstractVideoBuffer::~QAbstractVideoBuffer ( )
virtualdefault

\variable QAbstractVideoBuffer::MapData::planeCount

The number of planes of the mapped video data. If the format of the data is multiplanar, and the value is 1, the actual plane layout will be calculated upon invoking of \l QVideoFrame::map from the frame height, {bytesPerLine[0]}, and {dataSize[0]}.

Defaults to 0.

\variable QAbstractVideoBuffer::MapData::bytesPerLine

The array of numbrers of bytes per line for each plane from 0 to {planeCount - 1}.

The values of the array default to 0.

\variable QAbstractVideoBuffer::MapData::data

The array of pointers to the mapped video pixel data for each plane from 0 to {planeCount - 1}. The implementation of QAbstractVideoBuffer must hold ownership of the data at least until \l QAbstractVideoBuffer::unmap is called.

The values of the array default to nullptr.

\variable QAbstractVideoBuffer::MapData::dataSize

The array of sizes in bytes of the mapped video pixel data for each plane from 0 to {planeCount - 1}.

The values of the array default to 0.

Destroys a video buffer.

Member Function Documentation

◆ format()

virtual QVideoFrameFormat QAbstractVideoBuffer::format ( ) const
pure virtual

Gets \l QVideoFrameFormat of the underlying video buffer.

The format must be available upon construction of \l QVideoFrame. QVideoFrame will contain won instance of the given format, that can be detached and modified.

Implemented in QCGImageVideoBuffer, QCGImageVideoBuffer, QD3D11TextureVideoBuffer, QD3D11TextureVideoBuffer, QHwVideoBuffer, QImageVideoBuffer, QMemoryVideoBuffer, QnxRasterBuffer, and QnxRasterBuffer.

◆ map()

virtual MapData QAbstractVideoBuffer::map ( QVideoFrame::MapMode mode)
pure virtual

Maps the planes of a video buffer to memory.

Returns a \l MapData structure that contains information about the plane layout of the mapped current video data. If the mapping fails, the method returns the default structure. For CPU memory buffers, the data is considered as already mapped, so the function just returns the plane layout of the preallocated underlying data.

The map mode indicates whether the contents of the mapped memory should be read from and/or written to the buffer. If the map mode includes the QVideoFrame::ReadOnly flag the mapped memory will be populated with the content of the buffer when initially mapped. If the map mode includes the QVideoFrame::WriteOnly flag the content of the possibly modified mapped memory will be written back to the buffer when unmapped.

When access to the data is no longer needed, the \l unmap function is called to release the mapped memory and possibly update the buffer contents.

If the format of the video data is multiplanar, the method may map the whole pixel data as a single plane. In this case, mapping a buffer with \l QVideoFrame will calculate additional planes from the specified line stride of the first plane, the frame height, and the data size.

Implemented in AndroidTextureVideoBuffer, AndroidTextureVideoBuffer, AVFVideoBuffer, ImageFromVideoFrameHelper, ImageFromVideoFrameHelper, IMFSampleVideoBuffer, IMFSampleVideoBuffer, QCGImageVideoBuffer, QCGImageVideoBuffer, QD3D11TextureVideoBuffer, QD3D11TextureVideoBuffer, QFFmpegVideoBuffer, QGstVideoBuffer, QImageVideoBuffer, QMemoryVideoBuffer, QnxRasterBuffer, QnxRasterBuffer, QnxTextureBuffer, QnxTextureBuffer, QOpenGLVideoBuffer, and QQnxCameraFrameBuffer.

◆ unmap()

void QAbstractVideoBuffer::unmap ( )
virtual

Releases the memory mapped by the map() function.

If the \l {QVideoFrame::MapMode}{MapMode} included the QVideoFrame::WriteOnly flag this will write the current content of the mapped memory back to the video frame.

For CPU video buffers, the function may be not overridden. The default implementation of unmap does nothing.

See also
map()

Reimplemented in AndroidTextureVideoBuffer, AndroidTextureVideoBuffer, AVFVideoBuffer, ImageFromVideoFrameHelper, ImageFromVideoFrameHelper, IMFSampleVideoBuffer, IMFSampleVideoBuffer, QD3D11TextureVideoBuffer, QD3D11TextureVideoBuffer, QFFmpegVideoBuffer, QGstVideoBuffer, QnxRasterBuffer, QnxRasterBuffer, QnxTextureBuffer, QnxTextureBuffer, QOpenGLVideoBuffer, and QQnxCameraFrameBuffer.

Definition at line 129 of file qabstractvideobuffer.cpp.


The documentation for this class was generated from the following files: