/******************************************************************************
*
* Copyright (C) 2012 Ittiam Systems Pvt Ltd, Bangalore
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
/**
*******************************************************************************
* @file
* iv.h
*
* @brief
* This file contains all the necessary structure and enumeration
* definitions needed for the Application Program Interface(API) of the
* Ittiam Video and Image codecs
*
* @author
* 100239(RCY)
*
* @par List of Functions:
*
* @remarks
* None
*
*******************************************************************************
*/
#ifndef _IV_H
#define _IV_H
/*****************************************************************************/
/* Constant Macros */
/*****************************************************************************/
/*****************************************************************************/
/* Typedefs */
/*****************************************************************************/
/*****************************************************************************/
/* Enums */
/*****************************************************************************/
/* IV_API_CALL_STATUS_T:This is only to return the FAIL/PASS status to the */
/* application for the current API call */
typedef enum {
IV_STATUS_NA = 0x7FFFFFFF,
IV_SUCCESS = 0x0,
IV_FAIL = 0x1,
}IV_API_CALL_STATUS_T;
/* IV_COLOR_FORMAT_T: This enumeration lists all the color formats which */
/* finds usage in video/image codecs */
typedef enum {
IV_CHROMA_NA = 0x7FFFFFFF,
IV_YUV_420P = 0x1,
IV_YUV_422P = 0x2,
IV_420_UV_INTL = 0x3,
IV_YUV_422IBE = 0x4,
IV_YUV_422ILE = 0x5,
IV_YUV_444P = 0x6,
IV_YUV_411P = 0x7,
IV_GRAY = 0x8,
IV_RGB_565 = 0x9,
IV_RGB_24 = 0xa,
IV_YUV_420SP_UV = 0xb,
IV_YUV_420SP_VU = 0xc,
IV_RGBA_8888 = 0xd
}IV_COLOR_FORMAT_T;
/* IV_PICTURE_CODING_TYPE_T: VOP/Frame coding type Enumeration */
typedef enum {
IV_NA_FRAME = 0x7FFFFFFF,
IV_I_FRAME = 0x0,
IV_P_FRAME = 0x1,
IV_B_FRAME = 0x2,
IV_IDR_FRAME = 0x3,
IV_II_FRAME = 0x4,
IV_IP_FRAME = 0x5,
IV_IB_FRAME = 0x6,
IV_PI_FRAME = 0x7,
IV_PP_FRAME = 0x8,
IV_PB_FRAME = 0x9,
IV_BI_FRAME = 0xa,
IV_BP_FRAME = 0xb,
IV_BB_FRAME = 0xc,
IV_MBAFF_I_FRAME = 0xd,
IV_MBAFF_P_FRAME = 0xe,
IV_MBAFF_B_FRAME = 0xf,
IV_MBAFF_IDR_FRAME = 0x10,
IV_NOT_CODED_FRAME = 0x11,
IV_FRAMETYPE_DEFAULT = IV_I_FRAME
}IV_PICTURE_CODING_TYPE_T;
/* IV_FLD_TYPE_T: field type Enumeration */
typedef enum {
IV_NA_FLD = 0x7FFFFFFF,
IV_TOP_FLD = 0x0,
IV_BOT_FLD = 0x1,
IV_FLD_TYPE_DEFAULT = IV_TOP_FLD
}IV_FLD_TYPE_T;
/* IV_CONTENT_TYPE_T: Video content type */
typedef enum {
IV_CONTENTTYPE_NA = 0x7FFFFFFF,
IV_PROGRESSIVE = 0x0,
IV_INTERLACED = 0x1,
IV_PROGRESSIVE_FRAME = 0x2,
IV_INTERLACED_FRAME = 0x3,
IV_INTERLACED_TOPFIELD = 0x4,
IV_INTERLACED_BOTTOMFIELD = 0x5,
IV_CONTENTTYPE_DEFAULT = IV_PROGRESSIVE,
}IV_CONTENT_TYPE_T;
/* IV_API_COMMAND_TYPE_T:API command type */
typedef enum {
IV_CMD_NA = 0x7FFFFFFF,
IV_CMD_DUMMY_ELEMENT = 0x4,
}IV_API_COMMAND_TYPE_T;
/*****************************************************************************/
/* Structure */
/*****************************************************************************/
/* IV_OBJ_T: This structure defines the handle for the codec instance */
typedef struct {
/**
* u4_size of the structure
*/
UWORD32 u4_size;
/**
* Pointer to the API function pointer table of the codec
*/
void *pv_fxns;
/**
* Pointer to the handle of the codec
*/
void *pv_codec_handle;
}iv_obj_t;
/* IV_YUV_BUF_T: This structure defines attributes for the yuv buffer */
typedef struct {
/**
* u4_size of the structure
*/
UWORD32 u4_size;
/**
* Pointer to Luma (Y) Buffer
*/
void *pv_y_buf;
/**
* Pointer to Chroma (Cb) Buffer
*/
void *pv_u_buf;
/**
* Pointer to Chroma (Cr) Buffer
*/
void *pv_v_buf;
/**
* Width of the Luma (Y) Buffer
*/
UWORD32 u4_y_wd;
/**
* Height of the Luma (Y) Buffer
*/
UWORD32 u4_y_ht;
/**
* Stride/Pitch of the Luma (Y) Buffer
*/
UWORD32 u4_y_strd;
/**
* Width of the Chroma (Cb) Buffer
*/
UWORD32 u4_u_wd;
/**
* Height of the Chroma (Cb) Buffer
*/
UWORD32 u4_u_ht;
/**
* Stride/Pitch of the Chroma (Cb) Buffer
*/
UWORD32 u4_u_strd;
/**
* Width of the Chroma (Cr) Buffer
*/
UWORD32 u4_v_wd;
/**
* Height of the Chroma (Cr) Buffer
*/
UWORD32 u4_v_ht;
/**
* Stride/Pitch of the Chroma (Cr) Buffer
*/
UWORD32 u4_v_strd;
}iv_yuv_buf_t;
#endif /* _IV_H */