Maps an audio gstbuffer
so that it can be read or written and stores the result of the map operation in buffer
.
This is especially useful when the gstbuffer
is in non-interleaved (planar) layout, in which case this function will use the
information in the gstbuffer
's attached Meta in order to map each channel in
a separate "plane" in Buffer. If a Meta
is not attached on the gstbuffer
, then it must be in interleaved layout.
If a Meta is attached, then the Info on
the meta is checked against info
. Normally, they should be equal, but in case they are not, a g_critical will be printed and
the Info from the meta will be used.
In non-interleaved buffers, it is possible to have each channel on a separate Memory. In this case, each memory will be mapped separately to avoid copying their contents in a larger memory area. Do note though that it is not supported to have a single channel spanning over two or more different Memory objects. Although the map operation will likely succeed in this case, it will be highly sub-optimal and it is recommended to merge all the memories in the buffer before calling this function.
Note: The actual Buffer is not ref'ed, but it is required to stay valid as long as it's mapped.
info |
the audio properties of the buffer |
gstbuffer |
the Buffer to be mapped |
flags |
the access mode for the memory |
buffer |
pointer to a Buffer |
|