XAQNXBufferQueueSinkItf

Updated: April 19, 2023

The XAQNXBufferQueueSinkItf interface allows your applications to receive media data that were processed by the QNX OpenMAX-compliant media engine.

Through this interface, you can read the data items stored in the buffer queue used by an OpenMAX sink, allowing you to further process media content before outputting it. For example, you can rescale a video or re-encode audio content.

You can call GetFormat() to retrieve the data format settings in an XADataFormat_QNXEncoded structure. Then, you can use the XA_AUDIO* and XA_VIDEO* constants to check for specific values in certain fields. These constants represent the container types, audio and video codecs, audio modes, video profiles, and video levels supported by the QNX additions to OpenMAX AL.

To get a single buffer of data, you can call Get(), which is non-blocking. This function returns NULL if no data buffer is currently available. You can also call GetAndWait(), which blocks until a data buffer is available or until a fixed timeout expires. The data buffer is represented by an XAQNXBuffer structure.

When you're finished processing the items in the data buffer, which may include sending a copy of them to another output, you must return the buffer memory to the interface by calling Done().

The QNX-extended API also defines a data locator (XADataLocator_QNXScreenBufferQueue) that lets you configure a sink for video playback to a Screen window.