CopperSpice API  1.9.1
QAbstractVideoBuffer Class Referenceabstract

The QAbstractVideoBuffer class is an abstraction for video data. More...

Inheritance diagram for QAbstractVideoBuffer:
QAbstractPlanarVideoBuffer

Public Types

enum  HandleType
 
enum  MapMode
 

Public Methods

 QAbstractVideoBuffer (HandleType type)
 
virtual ~QAbstractVideoBuffer ()
 
virtual QVariant handle () const
 
HandleType handleType () const
 
virtual ucharmap (MapMode mode, int *numBytes, int *bytesPerLine) = 0
 
virtual MapMode mapMode () const = 0
 
int mapPlanes (MapMode mode, int *numBytes, int bytesPerLine[4], uchar *data[4])
 
virtual void release ()
 
virtual void unmap () = 0
 

Detailed Description

The QAbstractVideoBuffer class is an abstraction for video data. The QVideoFrame class makes use of a QAbstractVideoBuffer internally to reference a buffer of video data. Creating a subclass of QAbstractVideoBuffer will allow you to construct video frames from preallocated or static buffers.

The contents of a buffer can be accessed by mapping the buffer to memory using the map() function which returns a pointer to memory containing the contents of the video buffer. The memory returned by map() is released by calling the unmap() method.

The handle() of a buffer may also be used to manipulate it's contents using type specific APIs. The type of a buffer's handle is given by the handleType() function.

See also
QVideoFrame

Member Enumeration Documentation

Identifies the type of a video buffers handle.

ConstantValueDescription
QAbstractVideoBuffer::NoHandle0 The buffer has no handle, its data can only be accessed by mapping the buffer.
QAbstractVideoBuffer::GLTextureHandle1 The handle of the buffer is an OpenGL texture ID.
QAbstractVideoBuffer::XvShmImageHandle2 The handle contains pointer to shared memory XVideo image.
QAbstractVideoBuffer::CoreImageHandle3 The handle contains pointer to Mac OS X CIImage.
QAbstractVideoBuffer::QPixmapHandle4 The handle of the buffer is a QPixmap.
QAbstractVideoBuffer::UserHandle1000 Start value for user defined handle types.
See also
handleType()

Enumerates how a video buffer's data is mapped to memory.

ConstantValueDescription
QAbstractVideoBuffer::NotMapped0x00 The video buffer has is not mapped to memory.
QAbstractVideoBuffer::ReadOnly0x01 The mapped memory is populated with data from the video buffer when mapped, but the content of the mapped memory may be discarded when unmapped.
QAbstractVideoBuffer::WriteOnly0x02 The mapped memory is uninitialized when mapped, and the content will be used to populate the video buffer when unmapped.
QAbstractVideoBuffer::ReadWriteReadOnly | WriteOnly The mapped memory is populated with data from the video buffer, and the video buffer is repopulated with the content of the mapped memory.
See also
mapMode(), map()

Constructor & Destructor Documentation

QAbstractVideoBuffer::QAbstractVideoBuffer ( HandleType  type)

Constructs an abstract video buffer of the given type.

QAbstractVideoBuffer::~QAbstractVideoBuffer ( )
virtual

Destroys an abstract video buffer.

Method Documentation

QVariant QAbstractVideoBuffer::handle ( ) const
virtual

Returns a type specific handle to the data buffer.

The type of the handle is given by handleType() function.

See also
handleType()
HandleType QAbstractVideoBuffer::handleType ( ) const

Returns the type of a video buffer's handle.

See also
handle()
uchar * QAbstractVideoBuffer::map ( MapMode  mode,
int *  numBytes,
int *  bytesPerLine 
)
pure virtual

Maps the contents of a video buffer to memory.

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 QAbstractVideoBuffer::ReadOnly flag the mapped memory will be populated with the content of the video buffer when mapped. If the map mode includes the QAbstractVideoBuffer::WriteOnly flag the content of the mapped memory will be persisted in the buffer when unmapped.

Returns a pointer to the mapped memory region, or a null pointer if the mapping failed. The size in bytes of the mapped memory region is returned in numBytes, and the line stride in bytesPerLine.

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

Note
Writing to memory that is mapped as read-only is undefined, and may result in changes to shared data.
See also
unmap(), mapMode()

Implemented in QAbstractPlanarVideoBuffer::map()

MapMode QAbstractVideoBuffer::mapMode ( ) const
pure virtual

Returns the mode a video buffer is mapped in.

See also
map()
int QAbstractVideoBuffer::mapPlanes ( MapMode  mode,
int *  numBytes,
int  bytesPerLine[4],
uchar data[4] 
)

Independently maps the planes of a video buffer to memory.

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 QAbstractVideoBuffer::ReadOnly flag the mapped memory will be populated with the content of the buffer when initially mapped. If the map mode includes the QAbstractVideoBuffer::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 be sure to call the unmap() function to release the mapped memory and possibly update the buffer contents.

Returns the number of planes in the mapped video data. For each plane the line stride of that plane will be returned in bytesPerLine, and a pointer to the plane data will be returned in data. The accumulative size of the mapped data is returned in numBytes.

Not all buffer implementations will map more than the first plane, if this returns a single plane for a planar format the additional planes will have to be calculated from the line stride of the first plane and the frame height. Mapping a buffer with QVideoFrame will do this for you.

To implement this function create a derivative of QAbstractPlanarVideoBuffer and implement its map function instance instead.

void QAbstractVideoBuffer::release ( )
virtual

Releases the video buffer. QVideoFrame calls QAbstractVideoBuffer::release when the buffer is not used any more and can be destroyed or returned to the buffer pool.

The default implementation deletes the buffer instance.

void QAbstractVideoBuffer::unmap ( )
pure virtual

Releases the memory mapped by the map() method. If the MapMode included the QAbstractVideoBuffer::WriteOnly flag this will persist the current content of the mapped memory to the video frame.

See also
map()