📄 ividdec1.h
字号:
/* * Copyright 2006 * Texas Instruments Incorporated * * All rights reserved. Property of Texas Instruments Incorporated * Restricted rights to use, duplicate or disclose this code are * granted through contract. * *//** * @file ti/xdais/dm/ividdec1.h * * @brief This header defines all types, constants, and functions * shared by all implementations of the video decoder * algorithms. *//** * @defgroup ti_xdais_dm_IVIDDEC1 xDM 1.0 Video Decoder Interface * * This is the xDM 1.0 Video Decoder Interface. */#ifndef ti_xdais_dm_IVIDDEC1_#define ti_xdais_dm_IVIDDEC1_#include <ti/xdais/ialg.h>#include <ti/xdais/xdas.h>#include "xdm.h"#include "ivideo.h"#ifdef __cplusplusextern "C" {#endif/** @ingroup ti_xdais_dm_IVIDDEC1 *//*@{*/#define IVIDDEC1_ERUNTIME XDM_ERUNTIME /**< @copydoc XDM_ERUNTIME */#define IVIDDEC1_EOK XDM_EOK /**< @copydoc XDM_EOK */#define IVIDDEC1_EFAIL XDM_EFAIL /**< @copydoc XDM_EFAIL */#define IVIDDEC1_EUNSUPPORTED XDM_EUNSUPPORTED /**< @copydoc XDM_EUNSUPPORTED *//** * @brief This must be the first field of all IVIDDEC1 * instance objects. */typedef struct IVIDDEC1_Obj { struct IVIDDEC1_Fxns *fxns;} IVIDDEC1_Obj;/** * @brief Opaque handle to an IVIDDEC1 objects. */typedef struct IVIDDEC1_Obj *IVIDDEC1_Handle;/** * @brief Video decoder output frame order. */typedef enum { IVIDDEC_DISPLAY_ORDER = 0, /**< The decoder provides decoded output in * in the actual order of displaying the * output buffer. The codec assumes the * responsibility of reordering the frames. * * @remarks The output buffer will be * delayed by one frame, * regardless of whether the frame * contains I/P or I/P/B frames. * * @remarks This is the default mode. * * @remarks This mode is required to be * supported by all video decoder * codecs. */ IVIDDEC_DECODE_ORDER = 1 /**< The decoder provides decoded output in the * the order of decoding. There will be no * delay in the output buffers. * * @remarks It is the application's * responsibility to handle the * frame re-ordering. * * @remarks This mode is optional. If it * is not supported by the * decoder, IVIDDEC_EUNSUPPORTED * will be returned. */} IVIDDEC1_FrameOrder;/** * @brief Defines the creation time parameters for * all IVIDDEC1 instance objects. * * @extensibleStruct */typedef struct IVIDDEC1_Params { XDAS_Int32 size; /**< @sizeField */ XDAS_Int32 maxHeight; /**< Maximum video height in pixels. */ XDAS_Int32 maxWidth; /**< Maximum video width in pixels. */ XDAS_Int32 maxFrameRate; /**< Maximum frame rate in fps. */ XDAS_Int32 maxBitRate; /**< Maximum bit rate, bits per second. * For example, if bit rate is 10 Mbps, set * this field to 10000000 */ XDAS_Int32 dataEndianness; /**< Endianness of output data. * * @sa XDM_DataFormat */ XDAS_Int32 forceChromaFormat;/**< @copydoc XDM_ChromaFormat * * @sa XDM_ChromaFormat. */} IVIDDEC1_Params;/** * @brief This structure defines the codec parameters that can be * modified after creation via control() calls. * * @remarks It is not necessary that a given implementation support all * dynamic parameters to be configurable at run time. If a * particular algorithm does not support run-time updates to * a parameter that the application is attempting to change * at runtime, it may indicate this as an error. * * @extensibleStruct * * @sa IVIDDEC1_Fxns::control() */typedef struct IVIDDEC1_DynamicParams { XDAS_Int32 size; /**< @sizeField */ XDAS_Int32 decodeHeader; /**< @copydoc XDM_DecMode * * @sa XDM_DecMode */ XDAS_Int32 displayWidth; /**< Pitch. If set to zero, use the decoded * image width. Else, use given display * width in pixels. */ XDAS_Int32 frameSkipMode; /**< @copydoc IVIDEO_FrameSkip * * @sa IVIDEO_FrameSkip */ XDAS_Int32 frameOrder; /**< @copydoc IVIDDEC1_FrameOrder * * @sa IVIDDEC1_FrameOrder */} IVIDDEC1_DynamicParams;/** * @brief Defines the input arguments for all IVIDDEC1 instance * process function. * * @extensibleStruct * * @sa IVIDDEC1_Fxns::process() */typedef struct IVIDDEC1_InArgs { XDAS_Int32 size; /**< @sizeField */ XDAS_Int32 numBytes; /**< Size of input data in bytes, provided * to the algorithm for decoding. */ XDAS_Int32 inputID; /**< The decoder will attach * this ID with the corresponding output * frames. * * @remarks This is useful when frames * require re-ordering (e.g. B frames). * * @remarks When there is no re-ordering, * IVIDDEC1_OutArgs#outputID will be same * as this inputID field. * * @remarks Zero (0) is not a supported * inputID. This value is * reserved for cases when there * is no output buffer provided in * IVIDDEC1_OutArgs::displayBufs. * * @sa IVIDDEC1_OutArgs::outputID. */} IVIDDEC1_InArgs;/** * @brief Defines instance status parameters. * * @extensibleStruct * * @sa IVIDDEC1_Fxns::control() */typedef struct IVIDDEC1_Status { XDAS_Int32 size; /**< @sizeField */ XDAS_Int32 extendedError; /**< @extendedErrorField */ XDM_SingleBufDesc data; /**< Buffer descriptor for * data passing. * * @remarks This buffer can be used as * either input or output, * depending on the command. * * @remarks The buffer will be provided * by the application, and * returned to the application * upon return of the control() * call. The algorithm must * not retain a pointer to this * data. * * @sa #XDM_GETVERSION */ XDAS_Int32 outputHeight; /**< Output height in pixels. */ XDAS_Int32 outputWidth; /**< Output width in pixels. */ XDAS_Int32 frameRate; /**< Average frame rate in fps. */ XDAS_Int32 bitRate; /**< Average bit rate, in bits per second. */ XDAS_Int32 contentType; /**< @copydoc IVIDEO_ContentType * * @sa IVIDEO_ContentType */ XDAS_Int32 outputChromaFormat; /**< @copydoc XDM_ChromaFormat * * @sa XDM_ChromaFormat */ XDM_AlgBufInfo bufInfo; /**< Input and output buffer information. *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -