/******************************************************************************
 *
 * Copyright (C) 2015 The Android Open Source Project
 *
 * 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.
 *
 *****************************************************************************
 * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
*/
/*****************************************************************************/
/*                                                                           */
/*  File Name         : impeg2d.h                                        */
/*                                                                           */
/*  Description       : This file contains all the necessary structure and   */
/*                      enumeration definitions needed for the Application   */
/*                      Program Interface(API) of the Ittiam MPEG2 ASP       */
/*                      Decoder on Cortex A8 - Neon platform                 */
/*                                                                           */
/*  List of Functions : impeg2d_api_function                             */
/*                                                                           */
/*  Issues / Problems : None                                                 */
/*                                                                           */
/*  Revision History  :                                                      */
/*                                                                           */
/*         DD MM YYYY   Author(s)       Changes (Describe the changes made)  */
/*         26 08 2010   100239(RCY)     Draft                                */
/*                                                                           */
/*****************************************************************************/

#ifndef __IMPEG2D_H__
#define __IMPEG2D_H__

#include "iv.h"
#include "ivd.h"
#ifdef __cplusplus
extern "C"
{
#endif

/*****************************************************************************/
/* Constant Macros                                                           */
/*****************************************************************************/
#define EXPORT_MPEG2DEC_FULLCODEC_MEM_RECORDS   22

/*****************************************************************************/
/* Function Macros                                                           */
/*****************************************************************************/
#define IS_IVD_CONCEALMENT_APPLIED(x)           (x & (1 << IVD_APPLIEDCONCEALMENT))
#define IS_IVD_INSUFFICIENTDATA_ERROR(x)        (x & (1 << IVD_INSUFFICIENTDATA))
#define IS_IVD_CORRUPTEDDATA_ERROR(x)           (x & (1 << IVD_CORRUPTEDDATA))
#define IS_IVD_CORRUPTEDHEADER_ERROR(x)         (x & (1 << IVD_CORRUPTEDHEADER))
#define IS_IVD_UNSUPPORTEDINPUT_ERROR(x)        (x & (1 << IVD_UNSUPPORTEDINPUT))
#define IS_IVD_UNSUPPORTEDPARAM_ERROR(x)        (x & (1 << IVD_UNSUPPORTEDPARAM))
#define IS_IVD_FATAL_ERROR(x)                   (x & (1 << IVD_FATALERROR))
#define IS_IVD_INVALID_BITSTREAM_ERROR(x)       (x & (1 << IVD_INVALID_BITSTREAM))
#define IS_IVD_INCOMPLETE_BITSTREAM_ERROR(x)    (x & (1 << IVD_INCOMPLETE_BITSTREAM))

#define SET_IVD_CONCEALMENT_APPLIED(x)          ((x) |= (x) | (1 << IVD_APPLIEDCONCEALMENT))
#define SET_IVD_INSUFFICIENTDATA_ERROR(x)       ((x) |= (x) | (1 << IVD_INSUFFICIENTDATA))
#define SET_IVD_CORRUPTEDDATA_ERROR(x)          ((x) |= (x) | (1 << IVD_CORRUPTEDDATA))
#define SET_IVD_CORRUPTEDHEADER_ERROR(x)        ((x) |= (x) | (1 << IVD_CORRUPTEDHEADER))
#define SET_IVD_UNSUPPORTEDINPUT_ERROR(x)       ((x) |= (x) | (1 << IVD_UNSUPPORTEDINPUT))
#define SET_IVD_UNSUPPORTEDPARAM_ERROR(x)       ((x) |= (x) | (1 << IVD_UNSUPPORTEDPARAM))
#define SET_IVD_FATAL_ERROR(x)                  ((x) |= (x) | (1 << IVD_FATALERROR))
#define SET_IVD_INVALID_BITSTREAM_ERROR(x)      ((x) |= (x) | (1 << IVD_INVALID_BITSTREAM))
#define SET_IVD_INCOMPLETE_BITSTREAM_ERROR(x)   ((x) |= (x) | (1 << IVD_INCOMPLETE_BITSTREAM))

/*****************************************************************************/
/* API Function Prototype                                                    */
/*****************************************************************************/
IV_API_CALL_STATUS_T impeg2d_api_function(iv_obj_t *ps_handle,
                                          void *pv_api_ip,
                                          void *pv_api_op);

/*****************************************************************************/
/* Enums                                                                     */
/*****************************************************************************/
/* Codec Error codes for MPEG2 ASP Decoder                                   */

typedef enum
{

    IMPEG2D_UNKNOWN_ERROR = IVD_DUMMY_ELEMENT_FOR_CODEC_EXTENSIONS + 1,
    /* API calls without init call */
    IMPEG2D_INIT_NOT_DONE,
    /* Query number of Memory Records API */
    IMPEG2D_QUERY_NUM_MEM_REC_FAIL,

    /* Fill Memory Records API */
    IMPEG2D_FILL_NUM_MEM_REC_NOT_SUFFICIENT,

    /* Initialize Decoder API */
    IMPEG2D_INIT_DEC_SCR_MEM_INSUFFICIENT,
    IMPEG2D_INIT_DEC_PER_MEM_INSUFFICIENT,
    IMPEG2D_INIT_NUM_MEM_REC_NOT_SUFFICIENT,
    IMPEG2D_INIT_CHROMA_FORMAT_HEIGHT_ERROR,

    /* Decode Sequence Header API */
    IMPEG2D_FRM_HDR_START_CODE_NOT_FOUND,
    IMPEG2D_FRM_HDR_MARKER_BIT_NOT_FOUND,
    IMPEG2D_PROF_LEVEL_NOT_SUPPORTED,
    IMPEG2D_FMT_NOT_SUPPORTED,
    IMPEG2D_SCALABILITIY_NOT_SUPPORTED,
    IMPEG2D_PIC_SIZE_NOT_SUPPORTED,

    /* Search for start code API */
    //IMPEG2D_SEARCH_START_CODE_FAIL         ,
    /* Decode Video Frame API    */
    IMPEG2D_START_CODE_NOT_FOUND,
    IMPEG2D_MARKER_BIT_NOT_FOUND,
    IMPEG2D_INVALID_STUFFING,
    IMPEG2D_PROFILE_LEVEL_NOT_SUP,
    IMPEG2D_CHROMA_FMT_NOT_SUP,
    IMPEG2D_SCALABLITY_NOT_SUP,
    IMPEG2D_FRM_HDR_DECODE_ERR,
    IMPEG2D_MB_HDR_DECODE_ERR,
    IMPEG2D_MB_TEX_DECODE_ERR,
    IMPEG2D_INCORRECT_QUANT_MATRIX,
    IMPEG2D_INVALID_SKIP_MB,
    IMPEG2D_NOT_SUPPORTED_ERR,
    IMPEG2D_BITSTREAM_BUFF_EXCEEDED_ERR,
    IMPEG2D_INVALID_PIC_TYPE,
    IMPEG2D_INVALID_HUFFMAN_CODE,
    IMPEG2D_NO_FREE_BUF_ERR,

    /* slice header errors */
    IMPEG2D_INVALID_VERT_SIZE,
    IMPEG2D_MB_DATA_DECODE_ERR,

    /* Get Display Frame API */
    IMPEG2D_GET_DISP_FRM_FAIL,

    /* Sample Version limitation */
    IMPEG2D_SAMPLE_VERSION_LIMIT_ERR,
    /**
     * Width/height greater than max width and max height
     */
    IMPEG2D_UNSUPPORTED_DIMENSIONS,

    /* Unknown API Command */
    IMPEG2D_UNKNOWN_API_COMMAND

} IMPEG2D_ERROR_CODES_T;

/*****************************************************************************/
/* Extended Structures                                                       */
/*****************************************************************************/
typedef enum
{
    /** Set number of cores/threads to be used */
    IMPEG2D_CMD_CTL_SET_NUM_CORES = IVD_CMD_CTL_CODEC_SUBCMD_START,

    /** Set processor details */
    IMPEG2D_CMD_CTL_SET_PROCESSOR = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x001,

    /** Get display buffer dimensions */
    IMPEG2D_CMD_CTL_GET_BUFFER_DIMENSIONS = IVD_CMD_CTL_CODEC_SUBCMD_START
                    + 0x100,

    /** Get Seq header/seq header extension info */
    IMPEG2D_CMD_CTL_GET_SEQ_INFO     = IVD_CMD_CTL_CODEC_SUBCMD_START + 0x101,

} IMPEG2D_CMD_CTL_SUB_CMDS;

/*****************************************************************************/
/*  Get Number of Memory Records                                             */
/*****************************************************************************/

typedef struct
{
    iv_num_mem_rec_ip_t s_ivd_num_mem_rec_ip_t;
} impeg2d_num_mem_rec_ip_t;

typedef struct
{
    iv_num_mem_rec_op_t s_ivd_num_mem_rec_op_t;
} impeg2d_num_mem_rec_op_t;

/*****************************************************************************/
/*  Fill Memory Records                                                      */
/*****************************************************************************/

typedef struct
{
    iv_fill_mem_rec_ip_t s_ivd_fill_mem_rec_ip_t;
    /* Flag to enable sharing of reference buffers between decoder
     and application */

    UWORD32 u4_share_disp_buf;

    /* format in which codec has to give out frame data for display */
    IV_COLOR_FORMAT_T e_output_format;

    /**
     * Flag to enable/disable deinterlacing
     */
    UWORD32 u4_deinterlace;

    /**
     * enabling threads
    */
    UWORD32 u4_keep_threads_active;

} impeg2d_fill_mem_rec_ip_t;

typedef struct
{
    iv_fill_mem_rec_op_t s_ivd_fill_mem_rec_op_t;
} impeg2d_fill_mem_rec_op_t;

/*****************************************************************************/
/*  Retrieve Memory Records                                                  */
/*****************************************************************************/

typedef struct
{
    iv_retrieve_mem_rec_ip_t s_ivd_retrieve_mem_rec_ip_t;
} impeg2d_retrieve_mem_rec_ip_t;

typedef struct
{
    iv_retrieve_mem_rec_op_t s_ivd_retrieve_mem_rec_op_t;
} impeg2d_retrieve_mem_rec_op_t;

/*****************************************************************************/
/*   Initialize decoder                                                      */
/*****************************************************************************/

typedef struct
{
    ivd_init_ip_t s_ivd_init_ip_t;
    /* Flag to enable sharing of reference buffers between decoder
     and application */
    UWORD32 u4_share_disp_buf;

    /**
     * Flag to enable/disable deinterlacing
     */
    UWORD32 u4_deinterlace;

    /**
     * enable_threads
     */
    UWORD32 u4_keep_threads_active;

} impeg2d_init_ip_t;

typedef struct
{
    ivd_init_op_t s_ivd_init_op_t;
} impeg2d_init_op_t;

/*****************************************************************************/
/*   Video Decode                                                            */
/*****************************************************************************/

typedef struct
{
    ivd_video_decode_ip_t s_ivd_video_decode_ip_t;
} impeg2d_video_decode_ip_t;

typedef struct
{
    ivd_video_decode_op_t s_ivd_video_decode_op_t;
} impeg2d_video_decode_op_t;

/*****************************************************************************/
/*   Get Display Frame                                                       */
/*****************************************************************************/

typedef struct
{
    ivd_get_display_frame_ip_t s_ivd_get_display_frame_ip_t;
} impeg2d_get_display_frame_ip_t;

typedef struct
{
    ivd_get_display_frame_op_t s_ivd_get_display_frame_op_t;
} impeg2d_get_display_frame_op_t;

/*****************************************************************************/
/*   Set Display Frame                                                       */
/*****************************************************************************/
typedef struct
{
    ivd_set_display_frame_ip_t s_ivd_set_display_frame_ip_t;
} impeg2d_set_display_frame_ip_t;

typedef struct
{
    ivd_set_display_frame_op_t s_ivd_set_display_frame_op_t;
} impeg2d_set_display_frame_op_t;

/*****************************************************************************/
/*   Release Display Buffers                                                 */
/*****************************************************************************/

typedef struct
{
    ivd_rel_display_frame_ip_t s_ivd_rel_display_frame_ip_t;
} impeg2d_rel_display_frame_ip_t;

typedef struct
{
    ivd_rel_display_frame_op_t s_ivd_rel_display_frame_op_t;
} impeg2d_rel_display_frame_op_t;

/*****************************************************************************/
/*   Video control  Flush                                                    */
/*****************************************************************************/

typedef struct
{
    ivd_ctl_flush_ip_t s_ivd_ctl_flush_ip_t;
} impeg2d_ctl_flush_ip_t;

typedef struct
{
    ivd_ctl_flush_op_t s_ivd_ctl_flush_op_t;
} impeg2d_ctl_flush_op_t;

/*****************************************************************************/
/*   Video control reset                                                     */
/*****************************************************************************/

typedef struct
{
    ivd_ctl_reset_ip_t s_ivd_ctl_reset_ip_t;
} impeg2d_ctl_reset_ip_t;

typedef struct
{
    ivd_ctl_reset_op_t s_ivd_ctl_reset_op_t;
} impeg2d_ctl_reset_op_t;

/*****************************************************************************/
/*   Video control  Set Params                                               */
/*****************************************************************************/

typedef struct
{
    ivd_ctl_set_config_ip_t s_ivd_ctl_set_config_ip_t;
} impeg2d_ctl_set_config_ip_t;

typedef struct
{
    ivd_ctl_set_config_op_t s_ivd_ctl_set_config_op_t;
} impeg2d_ctl_set_config_op_t;

/*****************************************************************************/
/*   Video control:Get Buf Info                                              */
/*****************************************************************************/

typedef struct
{
    ivd_ctl_getbufinfo_ip_t s_ivd_ctl_getbufinfo_ip_t;
} impeg2d_ctl_getbufinfo_ip_t;

typedef struct
{
    ivd_ctl_getbufinfo_op_t s_ivd_ctl_getbufinfo_op_t;
} impeg2d_ctl_getbufinfo_op_t;

/*****************************************************************************/
/*   Video control:Getstatus Call                                            */
/*****************************************************************************/

typedef struct
{
    ivd_ctl_getstatus_ip_t s_ivd_ctl_getstatus_ip_t;
} impeg2d_ctl_getstatus_ip_t;

typedef struct
{
    ivd_ctl_getstatus_op_t s_ivd_ctl_getstatus_op_t;
} impeg2d_ctl_getstatus_op_t;

/*****************************************************************************/
/*   Video control:Get Version Info                                          */
/*****************************************************************************/

typedef struct
{
    ivd_ctl_getversioninfo_ip_t s_ivd_ctl_getversioninfo_ip_t;
} impeg2d_ctl_getversioninfo_ip_t;

typedef struct
{
    ivd_ctl_getversioninfo_op_t s_ivd_ctl_getversioninfo_op_t;
} impeg2d_ctl_getversioninfo_op_t;

/*****************************************************************************/
/*   Video control:Disable Qpel                                              */
/*****************************************************************************/

typedef struct
{
    UWORD32 u4_size;
    IVD_API_COMMAND_TYPE_T e_cmd;
    IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
    UWORD32 u4_num_cores;
} impeg2d_ctl_set_num_cores_ip_t;

typedef struct
{
    UWORD32 u4_size;
    UWORD32 u4_error_code;
} impeg2d_ctl_set_num_cores_op_t;

typedef struct
{
    /**
     * size
     */
    UWORD32 u4_size;
    /**
     * cmd
     */
    IVD_API_COMMAND_TYPE_T e_cmd;
    /**
     * sub cmd
     */
    IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
    /**
     * Processor type
     */
    UWORD32 u4_arch;
    /**
     * SOC type
     */
    UWORD32 u4_soc;

    /**
     * num_cores
     */
    UWORD32 u4_num_cores;

} impeg2d_ctl_set_processor_ip_t;

typedef struct
{
    /**
     * size
     */
    UWORD32 u4_size;
    /**
     * error_code
     */
    UWORD32 u4_error_code;
} impeg2d_ctl_set_processor_op_t;

typedef struct
{

    /**
     * size
     */
    UWORD32 u4_size;

    /**
     * cmd
     */
    IVD_API_COMMAND_TYPE_T e_cmd;

    /**
     * sub cmd
     */
    IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
} impeg2d_ctl_get_frame_dimensions_ip_t;

typedef struct
{

    /**
     * size
     */
    UWORD32 u4_size;

    /**
     * error_code
     */
    UWORD32 u4_error_code;

    /**
     * x_offset[3]
     */
    UWORD32 u4_x_offset[3];

    /**
     * y_offset[3]
     */
    UWORD32 u4_y_offset[3];

    /**
     * disp_wd[3]
     */
    UWORD32 u4_disp_wd[3];

    /**
     * disp_ht[3]
     */
    UWORD32 u4_disp_ht[3];

    /**
     * buffer_wd[3]
     */
    UWORD32 u4_buffer_wd[3];

    /**
     * buffer_ht[3]
     */
    UWORD32 u4_buffer_ht[3];
} impeg2d_ctl_get_frame_dimensions_op_t;

typedef struct
{
    /**
     * size
     */
    UWORD32 u4_size;

    /**
     * cmd
     */
    IVD_API_COMMAND_TYPE_T e_cmd;

    /**
     * sub cmd
     */
    IVD_CONTROL_API_COMMAND_TYPE_T e_sub_cmd;
} impeg2d_ctl_get_seq_info_ip_t;

typedef struct
{
    /**
     * size
     */
    UWORD32 u4_size;

    /**
     * error_code
     */
    UWORD32 u4_error_code;

    /**
     * aspect_ratio_information
     */
    UWORD8 u1_aspect_ratio_information;

    /**
     * frame_rate_code
     */
    UWORD8 u1_frame_rate_code;

    /**
     * frame_rate_extension_n
     */
    UWORD8 u1_frame_rate_extension_n;

    /**
     * frame_rate_extension_d
     */
    UWORD8 u1_frame_rate_extension_d;

    /**
     * video_format
     */
    UWORD8 u1_video_format;

    /**
     * colour_primaries
     */
    UWORD8 u1_colour_primaries;

    /**
     * transfer_characteristics
     */
    UWORD8 u1_transfer_characteristics;

    /**
     * matrix_coefficients
     */
    UWORD8 u1_matrix_coefficients;

    /**
     * display_horizontal_size
     */
    UWORD16 u2_display_horizontal_size;

    /**
     * display_vertical_size
     */
    UWORD16 u2_display_vertical_size;

} impeg2d_ctl_get_seq_info_op_t;
#ifdef __cplusplus
} /* closing brace for extern "C" */
#endif

#endif /* __IMPEG2D_H__ */
