Defines all of the operations on IVIDDEC2 objects. More...
#include <ividdec2.h>
Data Fields | |
IALG_Fxns | ialg |
XDAS_Int32(* | process )(IVIDDEC2_Handle handle, XDM1_BufDesc *inBufs, XDM_BufDesc *outBufs, IVIDDEC2_InArgs *inArgs, IVIDDEC2_OutArgs *outArgs) |
Basic video decoding call. | |
XDAS_Int32(* | control )(IVIDDEC2_Handle handle, IVIDDEC2_Cmd id, IVIDDEC2_DynamicParams *params, IVIDDEC2_Status *status) |
Control behavior of an algorithm. |
Defines all of the operations on IVIDDEC2 objects.
XDAIS algorithm interface.
XDAS_Int32(* IVIDDEC2_Fxns::process)(IVIDDEC2_Handle handle, XDM1_BufDesc *inBufs, XDM_BufDesc *outBufs, IVIDDEC2_InArgs *inArgs, IVIDDEC2_OutArgs *outArgs) |
Basic video decoding call.
[in] | handle | Handle to an algorithm instance. |
[in,out] | inBufs | Input buffer descriptors. |
[in,out] | outBufs | Output buffer descriptors. The algorithm may modify the output buffer pointers. |
[in] | inArgs | Input arguments. This is a required parameter. |
[out] | outArgs | Ouput results. This is a required parameter. |
outArgs->decodedBufs
) and display buffers (outArgs->displayBufs
) could still be returned. The codec can indicate that buffers are available by not setting the XDM_ISFATALERROR bit in the respective displayBufs
and decodedBufs
extendedError
field if the buffers contain valid data.outArgs->decodedBufs
and outArgs->displayBufs
buffers are not valid, even if the codec's process() call returns IVIDDEC2_EFAIL, it must also be sure to set the XDM_ISFATALERROR bit in the respective extendedError
fields. Failure to do so may result in applications accessing these buffers and causing system instability.inBufs->numBufs
will indicate the total number of input buffers supplied for input frame, and conditionally, the encoders MB data buffer.outBufs->bufs
[outBufs->numBufs - 1] is a buffer descriptor into which the algorithm will write MB data for each macro block. The size of the MB data buffer will vary based on the decoder type. H.264 may generate N264 bytes per MB, while Mpeg2 may generate NMP2 bytes. The exact size of the buffers should be obtained by calling the algorithm's control() method with XDM_GETBUFINFO.inArgs
must not be NULL, and must point to a valid IVIDDEC2_InArgs structure.outArgs
must not be NULL, and must point to a valid IVIDDEC2_OutArgs structure.inBufs
must not be NULL, and must point to a valid XDM1_BufDesc structure.inBufs->descs
[0].buf must not be NULL, and must point to a valid buffer of data that is at least inBufs->descs
[0].bufSize bytes in length.outBufs
must not be NULL, and must point to a valid XDM_BufDesc structure.outBufs->buf
[0] must not be NULL, and must point to a valid buffer of data that is at least outBufs->bufSizes
[0] bytes in length.inBufs
and outBufs
are physically contiguous and owned by the calling application.inArgs
.inBufs
, with the exception of inBufs.bufDesc
[].accessMask. That is, the data and buffers pointed to by these parameters must be treated as read-only.inBufs->descs
[].accessMask and appropriately indicate the mode in which each of the buffers in inBufs
were read. For example, if the algorithm only read from inBufs.descs
[0].buf using the algorithm processor, it could utilize XDM_SETACCESSMODE_READ to update the appropriate accessMask
fields. The application may utilize these returned values to appropriately manage cache.inBufs
are owned by the calling application.IVIDDEC2_EOK | Success. |
IVIDDEC2_EFAIL | General failure. See IVIDDEC2_Status::extendedError for more detailed further error conditions. |
IVIDDEC2_EUNSUPPORTED | Request is unsupported. |
XDAS_Int32(* IVIDDEC2_Fxns::control)(IVIDDEC2_Handle handle, IVIDDEC2_Cmd id, IVIDDEC2_DynamicParams *params, IVIDDEC2_Status *status) |
Control behavior of an algorithm.
[in] | handle | Handle to an algorithm instance. |
[in] | id | Command id. See XDM_CmdId. |
[in] | params | Dynamic parameters. This is a required parameter. |
[out] | status | Output results. This is a required parameter. |
handle
must be a valid algorithm instance handle.params
must not be NULL, and must point to a valid IVIDDEC2_DynamicParams structure.status
must not be NULL, and must point to a valid IVIDDEC2_Status structure.status->data
field, it must be physically contiguous and owned by the calling application.params
. That is, the data pointed to by this parameter must be treated as read-only.status->data
field, it is owned by the calling application.IVIDDEC2_EOK | Success. |
IVIDDEC2_EFAIL | General failure. See IVIDDEC2_Status::extendedError for more detailed further error conditions. |
IVIDDEC2_EUNSUPPORTED | Request is unsupported. |