XDAIS  dais-x04
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
Data Fields
IVIDDEC3_Fxns Struct Reference

Defines all of the operations on IVIDDEC3 objects. More...

#include <ividdec3.h>

Collaboration diagram for IVIDDEC3_Fxns:
Collaboration graph

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.

Detailed Description

Defines all of the operations on IVIDDEC3 objects.


Field Documentation

IALG_Fxns IVIDDEC3_Fxns::ialg

XDAIS algorithm interface.

See also:
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.

Parameters:
[in]handleHandle to an algorithm instance.
[in,out]inBufsInput buffer descriptors.
[in,out]outBufsOutput buffer descriptors. The algorithm may modify the output buffer pointers.
[in]inArgsInput arguments. This is a required parameter.
[out]outArgsOuput results. This is a required parameter.
Remarks:
process() is a blocking call. When process() returns, the algorithm's processing is complete.
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 (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.
By extension then, if the outArgs->decodedBufs and outArgs->displayBufs buffers are not 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 extendedError fields. Failure to do so may result in applications accessing these buffers and causing system instability.
Precondition:
inArgs must not be NULL, and must point to a valid IVIDDEC3_InArgs structure.
outArgs must not be NULL, and must point to a valid IVIDDEC3_OutArgs structure.
inBufs must not be NULL, and must point to a valid XDM2_BufDesc structure.
When operating in "fullframe mode" (e.g. not in data sync mode), 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.
When created with .inputDataMode (for inBufs) or .outputDataMode (for 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.
outBufs must not be NULL, and must point to a valid XDM2_BufDesc structure.
When operating in "fullframe mode" (e.g. not in data sync mode), 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.
Unless used in data sync mode, the buffers in inBufs and outBufs are physically contiguous and owned by the calling application.
Postcondition:
The algorithm must not modify the contents of inArgs.
The algorithm must not modify the contents of 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.
The algorithm must modify the contents of 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.
The buffers in inBufs are owned by the calling application.
Return values:
IVIDDEC3_EOKSuccess.
IVIDDEC3_EFAILGeneral failure. See IVIDDEC3_Status::extendedError for more detailed further error conditions.
IVIDDEC3_EUNSUPPORTEDRequest is unsupported.
XDAS_Int32(* IVIDDEC3_Fxns::control)(IVIDDEC3_Handle handle, IVIDDEC3_Cmd id, IVIDDEC3_DynamicParams *params, IVIDDEC3_Status *status)

Control behavior of an algorithm.

Parameters:
[in]handleHandle to an algorithm instance.
[in]idCommand id. See XDM_CmdId.
[in]paramsDynamic parameters. This is a required parameter.
[out]statusOutput results. This is a required parameter.
Precondition:
handle must be a valid algorithm instance handle.
params must not be NULL, and must point to a valid IVIDDEC3_DynamicParams structure.
status must not be NULL, and must point to a valid IVIDDEC3_Status structure.
If a buffer is provided in the status->data field, it must be physically contiguous and owned by the calling application.
Postcondition:
The algorithm must not modify the contents of params. That is, the data pointed to by this parameter must be treated as read-only.
If a buffer was provided in the status->data field, it is owned by the calling application.
Return values:
IVIDDEC3_EOKSuccess.
IVIDDEC3_EFAILGeneral failure. See IVIDDEC3_Status::extendedError for more detailed further error conditions.
IVIDDEC3_EUNSUPPORTEDRequest is unsupported.

The documentation for this struct was generated from the following file:
Copyright 2013, Texas Instruments Incorporated