![]() |
![]() |
Codec Engine Application Programming Interface (API)
ce-w08
|
Defines all of the operations on IVIDDEC3 objects. More...
#include <ividdec3.h>
Data Fields | |
IALG_Fxns | ialg |
XDAS_Int32(* | process )(IVIDDEC3_Handle handle, XDM2_BufDesc *inBufs, XDM2_BufDesc *outBufs, IVIDDEC3_InArgs *inArgs, IVIDDEC3_OutArgs *outArgs) |
Basic video decoding call. | |
XDAS_Int32(* | control )(IVIDDEC3_Handle handle, IVIDDEC3_Cmd id, IVIDDEC3_DynamicParams *params, IVIDDEC3_Status *status) |
Control behavior of an algorithm. |
Defines all of the operations on IVIDDEC3 objects.
IALG_Fxns IVIDDEC3_Fxns::ialg |
XDAIS algorithm interface.
@sa IALG_Fxns
XDAS_Int32(* IVIDDEC3_Fxns::process)(IVIDDEC3_Handle handle, XDM2_BufDesc *inBufs, XDM2_BufDesc *outBufs, IVIDDEC3_InArgs *inArgs, IVIDDEC3_OutArgs *outArgs) |
Basic video decoding call.
@param[in] handle Handle to an algorithm instance. @param[in,out] inBufs Input buffer descriptors. @param[in,out] outBufs Output buffer descriptors. The algorithm may modify the output buffer pointers. @param[in] inArgs Input arguments. This is a required parameter. @param[out] outArgs Ouput results. This is a required parameter. @remarks process() is a blocking call. When process() returns, the algorithm's processing is complete. @remarks process() enables codecs to support error resiliency and error concealment. As a result, even if #IVIDDEC3_EFAIL is returned from process() because the encoded buffer has an error, it's possible that decoded buffers (@c outArgs->decodedBufs) and display buffers (@c outArgs->displayBufs) could still be returned. The codec can indicate that buffers are available by <i>not</i> setting the #XDM_ISFATALERROR bit in the respective @c displayBufs and @c decodedBufs @c extendedError field if the buffers contain valid data. @remarks By extension then, if the @c outArgs->decodedBufs and @c outArgs->displayBufs buffers are <i>not</i> valid, even if the codec's process() call returns IVIDDEC3_EFAIL, it must also be sure to set the #XDM_ISFATALERROR bit in the respective @c extendedError fields. Failure to do so may result in applications accessing these buffers and causing system instability. @pre @c inArgs must not be NULL, and must point to a valid IVIDDEC3_InArgs structure. @pre @c outArgs must not be NULL, and must point to a valid IVIDDEC3_OutArgs structure. @pre @c inBufs must not be NULL, and must point to a valid XDM2_BufDesc structure. @pre When operating in "fullframe mode" (e.g. not in data sync mode), @c inBufs->descs[0].buf must not be NULL, and must point to a valid buffer of data that is at least @c inBufs->descs[0].bufSize bytes in length. @pre When created with .inputDataMode (for @c inBufs) or .outputDataMode (for @c outBufs) set to operate in "subframe mode" (e.g. data sync mode), the appropriate .descs[].usageMode field(s)'s XDM_MEMUSAGE_DATASYNC bit must be set. See #XDM_MemoryUsageMode for more details. @pre @c outBufs must not be NULL, and must point to a valid XDM2_BufDesc structure. @pre When operating in "fullframe mode" (e.g. not in data sync mode), @c outBufs->buf[0] must not be NULL, and must point to a valid buffer of data that is at least @c outBufs->bufSizes[0] bytes in length. @pre Unless used in data sync mode, the buffers in @c inBufs and @c outBufs are physically contiguous and owned by the calling application. @post The algorithm <b>must not</b> modify the contents of @c inArgs. @post The algorithm <b>must not</b> modify the contents of @c inBufs, with the exception of @c inBufs.bufDesc[].accessMask. That is, the data and buffers pointed to by these parameters must be treated as read-only. @post The algorithm <b>must</b> modify the contents of @c inBufs->descs[].accessMask and appropriately indicate the mode in which each of the buffers in @c inBufs were read. For example, if the algorithm only read from @c inBufs.descs[0].buf using the algorithm processor, it could utilize #XDM_SETACCESSMODE_READ to update the appropriate @c accessMask fields. The application <i>may</i> utilize these returned values to appropriately manage cache. @post The buffers in @c inBufs are owned by the calling application. @retval IVIDDEC3_EOK \copybrief IVIDDEC3_EOK
Success.
IVIDDEC3_EFAIL | General failure. See IVIDDEC3_Status::extendedError for more detailed further error conditions. |
IVIDDEC3_EUNSUPPORTED | Request is unsupported. |
XDAS_Int32(* IVIDDEC3_Fxns::control)(IVIDDEC3_Handle handle, IVIDDEC3_Cmd id, IVIDDEC3_DynamicParams *params, IVIDDEC3_Status *status) |
Control behavior of an algorithm.
@param[in] handle Handle to an algorithm instance. @param[in] id Command id. See #XDM_CmdId. @param[in] params Dynamic parameters. This is a required parameter. @param[out] status Output results. This is a required parameter. @pre @c handle must be a valid algorithm instance handle. @pre @c params must not be NULL, and must point to a valid IVIDDEC3_DynamicParams structure. @pre @c status must not be NULL, and must point to a valid IVIDDEC3_Status structure. @pre If a buffer is provided in the @c status->data field, it must be physically contiguous and owned by the calling application. @post The algorithm <b>must not</b> modify the contents of @c params. That is, the data pointed to by this parameter must be treated as read-only. @post If a buffer was provided in the @c status->data field, it is owned by the calling application. @retval IVIDDEC3_EOK \copybrief IVIDDEC3_EOK
Success.
IVIDDEC3_EFAIL | General failure. See IVIDDEC3_Status::extendedError for more detailed further error conditions. |
IVIDDEC3_EUNSUPPORTED | Request is unsupported. |