Codec Engine Application Programming Interface (API)  ce-w08
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros 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.

                                  @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.

Return values:
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.

@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.

Return values:
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