123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193 |
- /*------------------------------------------------------------------------------
- -- --
- -- This software is confidential and proprietary and may be used --
- -- only as expressly authorized by a licensing agreement from --
- -- --
- -- Hantro Products Oy. --
- -- --
- -- (C) COPYRIGHT 2006 HANTRO PRODUCTS OY --
- -- ALL RIGHTS RESERVED --
- -- --
- -- The entire notice above must be reproduced --
- -- on all copies and should not be removed. --
- -- --
- --------------------------------------------------------------------------------
- --
- -- Description : API of H.264 Decoder
- --
- --------------------------------------------------------------------------------
- --
- -- Version control information, please leave untouched.
- --
- -- $RCSfile: h264decapi.h,v $
- -- $Date: 2010/02/17 13:28:46 $
- -- $Revision: 1.9 $
- --
- ------------------------------------------------------------------------------*/
- #ifndef __H264DECAPI_H__
- #define __H264DECAPI_H__
- #ifdef __cplusplus
- extern "C"
- {
- #endif
- #include "basetype.h"
- #include "decapicommon.h"
- /*------------------------------------------------------------------------------
- API type definitions
- ------------------------------------------------------------------------------*/
- /* Return values */
- typedef enum H264DecRet_
- {
- H264DEC_OK = 0,
- H264DEC_STRM_PROCESSED = 1,
- H264DEC_PIC_RDY = 2,
- H264DEC_PIC_DECODED = 3,
- H264DEC_HDRS_RDY = 4,
- H264DEC_ADVANCED_TOOLS = 5,
- H264DEC_PENDING_FLUSH = 6,
- H264DEC_PARAM_ERROR = -1,
- H264DEC_STRM_ERROR = -2,
- H264DEC_NOT_INITIALIZED = -3,
- H264DEC_MEMFAIL = -4,
- H264DEC_INITFAIL = -5,
- H264DEC_HDRS_NOT_RDY = -6,
- H264DEC_STREAM_NOT_SUPPORTED = -8,
- H264DEC_HW_RESERVED = -254,
- H264DEC_HW_TIMEOUT = -255,
- H264DEC_HW_BUS_ERROR = -256,
- H264DEC_SYSTEM_ERROR = -257,
- H264DEC_DWL_ERROR = -258,
- H264DEC_EVALUATION_LIMIT_EXCEEDED = -999,
- H264DEC_FORMAT_NOT_SUPPORTED = -1000
- } H264DecRet;
- /* decoder output picture format */
- typedef enum H264DecOutFormat_
- {
- H264DEC_SEMIPLANAR_YUV420 = 0x020001,
- H264DEC_TILED_YUV420 = 0x020002,
- H264DEC_YUV400 = 0x080000
- } H264DecOutFormat;
- /* Decoder instance */
- typedef const void *H264DecInst;
- /* Input structure */
- typedef struct H264DecInput_
- {
- u8 *pStream; /* Pointer to the input */
- u32 streamBusAddress; /* DMA bus address of the input stream */
- u32 dataLen; /* Number of bytes to be decoded */
- u32 picId; /* Identifier for the picture to be decoded */
- } H264DecInput;
- /* Output structure */
- typedef struct H264DecOutput_
- {
- u8 *pStrmCurrPos; /* Pointer to stream position where decoding ended */
- u32 strmCurrBusAddress; /* DMA bus address location where the decoding ended */
- u32 dataLeft; /* how many bytes left undecoded */
- } H264DecOutput;
- /* cropping info */
- typedef struct H264CropParams_
- {
- u32 cropLeftOffset;
- u32 cropOutWidth;
- u32 cropTopOffset;
- u32 cropOutHeight;
- } H264CropParams;
- /* Output structure for H264DecNextPicture */
- typedef struct H264DecPicture_
- {
- u32 picWidth; /* pixels width of the picture as stored in memory */
- u32 picHeight; /* pixel height of the picture as stored in memory */
- H264CropParams cropParams; /* cropping parameters */
- const u32 *pOutputPicture; /* Pointer to the picture */
- u32 outputPictureBusAddress; /* DMA bus address of the output picture buffer */
- u32 picId; /* Identifier of the picture to be displayed */
- u32 isIdrPicture; /* Indicates if picture is an IDR picture */
- u32 nbrOfErrMBs; /* Number of concealed MB's in the picture */
- u32 interlaced; /* non-zero for interlaced picture */
- u32 fieldPicture; /* non-zero if interlaced and only one field present */
- u32 topField; /* if only one field, non-zero signals TOP field otherwise BOTTOM */
- } H264DecPicture;
- /* stream info filled by H264DecGetInfo */
- typedef struct H264DecInfo_
- {
- u32 picWidth; /* decoded picture width in pixels */
- u32 picHeight; /* decoded picture height in pixels */
- u32 videoRange; /* samples' video range */
- u32 matrixCoefficients;
- H264CropParams cropParams; /* display cropping information */
- H264DecOutFormat outputFormat; /* format of the output picture */
- u32 sarWidth; /* sample aspect ratio */
- u32 sarHeight; /* sample aspect ratio */
- u32 monoChrome; /* is sequence monochrome */
- u32 interlacedSequence; /* is sequence interlaced */
- u32 picBuffSize; /* number of picture buffers allocated&used by decoder */
- u32 multiBuffPpSize; /* number of picture buffers needed in decoder+postprocessor multibuffer mode */
- } H264DecInfo;
- /* Version information */
- typedef struct H264DecApiVersion_
- {
- u32 major; /* API major version */
- u32 minor; /* API minor version */
- } H264DecApiVersion;
- typedef struct H264DecBuild_
- {
- u32 swBuild; /* Software build ID */
- u32 hwBuild; /* Hardware build ID */
- DecHwConfig hwConfig; /* hardware supported configuration */
- } H264DecBuild;
- /*------------------------------------------------------------------------------
- Prototypes of Decoder API functions
- ------------------------------------------------------------------------------*/
- H264DecApiVersion H264DecGetAPIVersion(void);
- H264DecBuild H264DecGetBuild(void);
- H264DecRet H264DecInit(H264DecInst * pDecInst, u32 noOutputReordering,
- u32 useVideoFreezeConcealment,
- u32 useDisplaySmoothing);
- void H264DecRelease(H264DecInst decInst);
- H264DecRet H264DecDecode(H264DecInst decInst,
- const H264DecInput * pInput,
- H264DecOutput * pOutput);
- H264DecRet H264DecNextPicture(H264DecInst decInst,
- H264DecPicture * pOutput, u32 endOfStream);
- H264DecRet H264DecGetInfo(H264DecInst decInst, H264DecInfo * pDecInfo);
- H264DecRet H264DecPeek(H264DecInst decInst, H264DecPicture * pOutput);
- /*------------------------------------------------------------------------------
- Prototype of the API trace funtion. Traces all API entries and returns.
- This must be implemented by the application using the decoder API!
- Argument:
- string - trace message, a null terminated string
- ------------------------------------------------------------------------------*/
- void H264DecTrace(const char *string);
- #ifdef __cplusplus
- }
- #endif
- #endif /* __H264DECAPI_H__ */
|