IVIDENC1_Fxns Struct Reference
[XDM IVIDENC1 Video Encoder Interface]

#include <ividenc1.h>

Collaboration diagram for IVIDENC1_Fxns:

Collaboration graph
[legend]

Detailed Description

Defines all of the operations on IVIDENC1 objects.


Data Fields

IALG_Fxns ialg
XDAS_Int32(* process )(IVIDENC1_Handle handle, IVIDEO1_BufDescIn *inBufs, XDM_BufDesc *outBufs, IVIDENC1_InArgs *inArgs, IVIDENC1_OutArgs *outArgs)
 Basic video encoding call.
XDAS_Int32(* control )(IVIDENC1_Handle handle, IVIDENC1_Cmd id, IVIDENC1_DynamicParams *params, IVIDENC1_Status *status)
 Control behavior of an algorithm.


Field Documentation

IALG_Fxns IVIDENC1_Fxns::ialg

XDAIS algorithm interface.

See also:
IALG_Fxns

XDAS_Int32(* IVIDENC1_Fxns::process)(IVIDENC1_Handle handle, IVIDEO1_BufDescIn *inBufs, XDM_BufDesc *outBufs, IVIDENC1_InArgs *inArgs, IVIDENC1_OutArgs *outArgs)

Basic video encoding call.

Parameters:
[in] handle Handle to an algorithm instance.
[in,out] inBufs Input video 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.
Remarks:
process() is a blocking call. When process() returns, the algorithm's processing is complete.
Precondition:
inBufs->numBufs will indicate the total number of input buffers supplied for input frame, and conditionally, the encoders MB data buffer.

If IVIDENC1_DynamicParams::mbDataFlag was set to XDAS_FALSE in a previous control() call, the application only needs to provide the input frame.

If IVIDENC1_DynamicParams::mbDataFlag was set to XDAS_TRUE in a previous control() call, inBufs->bufs[inBufs->numBufs - 1] is a buffer descriptor containing stacked structures of the type IVIDENC1_MbData, one for each macro block.

inArgs must not be NULL, and must point to a valid IVIDENC1_InArgs structure.

outArgs must not be NULL, and must point to a valid IVIDENC1_OutArgs structure.

inBufs must not be NULL, and must point to a valid IVIDEO1_BufDescIn structure.

inBufs->bufDesc[0].bufs must not be NULL, and must point to a valid buffer of data that is at least inBufs->bufDesc[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.

The buffers in inBuf and outBuf 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 appropriately set/clear the IVIDEO1_BufDescIn::bufDesc[].accessMask field in inBufs to indicate the mode in which each of the buffers in inBufs were read. For example, if the algorithm only read from inBufs.bufDesc[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.

Remarks:
outBufs->bufs[0] may contain the encoded data buffer. See IVIDENC1_OutArgs.encodedBufs for more details.

outBufs->bufs[1], outBufs->bufs[2], and outBufs->bufs[3] are used when providing reconstruction buffers.

Return values:
IVIDENC1_EOK Success.
IVIDENC1_EFAIL General failure. See IVIDENC1_Status::extendedError for more detailed further error conditions.
IVIDENC1_EUNSUPPORTED Request is unsupported.

XDAS_Int32(* IVIDENC1_Fxns::control)(IVIDENC1_Handle handle, IVIDENC1_Cmd id, IVIDENC1_DynamicParams *params, IVIDENC1_Status *status)

Control behavior of an algorithm.

Parameters:
[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.
Precondition:
handle must be a valid algorithm instance handle.

params must not be NULL, and must point to a valid IVIDENC1_DynamicParams structure.

status must not be NULL, and must point to a valid IVIDENC1_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:
IVIDENC1_EOK Success.
IVIDENC1_EFAIL General failure. See IVIDENC1_Status::extendedError for more detailed further error conditions.
IVIDENC1_EUNSUPPORTED Request is unsupported.


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