/* Copyright (c) 2010-2012, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * */ #ifndef _VIDC_H_ #define _VIDC_H_ #include "vidc_hwio_reg.h" #define VIDC_1080P_RISC2HOST_CMD_EMPTY 0 #define VIDC_1080P_RISC2HOST_CMD_OPEN_CH_RET 1 #define VIDC_1080P_RISC2HOST_CMD_CLOSE_CH_RET 2 #define VIDC_1080P_RISC2HOST_CMD_SEQ_DONE_RET 4 #define VIDC_1080P_RISC2HOST_CMD_FRAME_DONE_RET 5 #define VIDC_1080P_RISC2HOST_CMD_SLICE_DONE_RET 6 #define VIDC_1080P_RISC2HOST_CMD_ENC_COMPLETE_RET 7 #define VIDC_1080P_RISC2HOST_CMD_SYS_INIT_RET 8 #define VIDC_1080P_RISC2HOST_CMD_FW_STATUS_RET 9 #define VIDC_1080P_RISC2HOST_CMD_FLUSH_COMMAND_RET 12 #define VIDC_1080P_RISC2HOST_CMD_ABORT_RET 13 #define VIDC_1080P_RISC2HOST_CMD_BATCH_ENC_RET 14 #define VIDC_1080P_RISC2HOST_CMD_INIT_BUFFERS_RET 15 #define VIDC_1080P_RISC2HOST_CMD_EDFU_INT_RET 16 #define VIDC_1080P_RISC2HOST_CMD_ERROR_RET 32 #define VIDC_RISC2HOST_ARG2_VIDC_DISP_ERROR_STATUS_BMSK 0xffff0000 #define VIDC_RISC2HOST_ARG2_VIDC_DISP_ERROR_STATUS_SHFT 16 #define VIDC_RISC2HOST_ARG2_VIDC_DEC_ERROR_STATUS_BMSK 0x0000ffff #define VIDC_RISC2HOST_ARG2_VIDC_DEC_ERROR_STATUS_SHFT 0 #define VIDC_1080P_ERROR_INVALID_CHANNEL_NUMBER 1 #define VIDC_1080P_ERROR_INVALID_COMMAND_ID 2 #define VIDC_1080P_ERROR_CHANNEL_ALREADY_IN_USE 3 #define VIDC_1080P_ERROR_CHANNEL_NOT_OPEN_BEFORE_CHANNEL_CLOSE 4 #define VIDC_1080P_ERROR_OPEN_CH_ERROR_SEQ_START 5 #define VIDC_1080P_ERROR_SEQ_START_ALREADY_CALLED 6 #define VIDC_1080P_ERROR_OPEN_CH_ERROR_INIT_BUFFERS 7 #define VIDC_1080P_ERROR_SEQ_START_ERROR_INIT_BUFFERS 8 #define VIDC_1080P_ERROR_INIT_BUFFER_ALREADY_CALLED 9 #define VIDC_1080P_ERROR_OPEN_CH_ERROR_FRAME_START 10 #define VIDC_1080P_ERROR_SEQ_START_ERROR_FRAME_START 11 #define VIDC_1080P_ERROR_INIT_BUFFERS_ERROR_FRAME_START 12 #define VIDC_1080P_ERROR_RESOLUTION_CHANGED 13 #define VIDC_1080P_ERROR_INVALID_COMMAND_LAST_FRAME 14 #define VIDC_1080P_ERROR_INVALID_COMMAND 15 #define VIDC_1080P_ERROR_INVALID_CODEC_TYPE 16 #define VIDC_1080P_ERROR_MEM_ALLOCATION_FAILED 20 #define VIDC_1080P_ERROR_INSUFFICIENT_CONTEXT_SIZE 25 #define VIDC_1080P_ERROR_UNSUPPORTED_FEATURE_IN_PROFILE 27 #define VIDC_1080P_ERROR_RESOLUTION_NOT_SUPPORTED 28 #define VIDC_1080P_ERROR_HEADER_NOT_FOUND 52 #define VIDC_1080P_ERROR_VOS_END_CODE_RECEIVED 53 #define VIDC_1080P_ERROR_FRAME_RATE_NOT_SUPPORTED 62 #define VIDC_1080P_ERROR_INVALID_QP_VALUE 63 #define VIDC_1080P_ERROR_INVALID_RC_REACTION_COEFFICIENT 64 #define VIDC_1080P_ERROR_INVALID_CPB_SIZE_AT_GIVEN_LEVEL 65 #define VIDC_1080P_ERROR_B_FRAME_NOT_SUPPORTED 66 #define VIDC_1080P_ERROR_ALLOC_DPB_SIZE_NOT_SUFFICIENT 71 #define VIDC_1080P_ERROR_NUM_DPB_OUT_OF_RANGE 74 #define VIDC_1080P_ERROR_NULL_METADATA_INPUT_POINTER 77 #define VIDC_1080P_ERROR_NULL_DPB_POINTER 78 #define VIDC_1080P_ERROR_NULL_OTH_EXT_BUFADDR 79 #define VIDC_1080P_ERROR_NULL_MV_POINTER 80 #define VIDC_1080P_ERROR_DIVIDE_BY_ZERO 81 #define VIDC_1080P_ERROR_BIT_STREAM_BUF_EXHAUST 82 #define VIDC_1080P_ERROR_DESCRIPTOR_BUFFER_EMPTY 83 #define VIDC_1080P_ERROR_DMA_TX_NOT_COMPLETE 84 #define VIDC_1080P_ERROR_DESCRIPTOR_TABLE_ENTRY_INVALID 85 #define VIDC_1080P_ERROR_MB_COEFF_NOT_DONE 86 #define VIDC_1080P_ERROR_CODEC_SLICE_NOT_DONE 87 #define VIDC_1080P_ERROR_VIDC_CORE_TIME_OUT 88 #define VIDC_1080P_ERROR_VC1_BITPLANE_DECODE_ERR 89 #define VIDC_1080P_ERROR_VSP_NOT_READY 90 #define VIDC_1080P_ERROR_BUFFER_FULL_STATE 91 #define VIDC_1080P_ERROR_RESOLUTION_MISMATCH 112 #define VIDC_1080P_ERROR_NV_QUANT_ERR 113 #define VIDC_1080P_ERROR_SYNC_MARKER_ERR 114 #define VIDC_1080P_ERROR_FEATURE_NOT_SUPPORTED 115 #define VIDC_1080P_ERROR_MEM_CORRUPTION 116 #define VIDC_1080P_ERROR_INVALID_REFERENCE_FRAME 117 #define VIDC_1080P_ERROR_PICTURE_CODING_TYPE_ERR 118 #define VIDC_1080P_ERROR_MV_RANGE_ERR 119 #define VIDC_1080P_ERROR_PICTURE_STRUCTURE_ERR 120 #define VIDC_1080P_ERROR_SLICE_ADDR_INVALID 121 #define VIDC_1080P_ERROR_NON_PAIRED_FIELD_NOT_SUPPORTED 122 #define VIDC_1080P_ERROR_NON_FRAME_DATA_RECEIVED 123 #define VIDC_1080P_ERROR_NO_BUFFER_RELEASED_FROM_HOST 125 #define VIDC_1080P_ERROR_NULL_FW_DEBUG_INFO_POINTER 126 #define VIDC_1080P_ERROR_ALLOC_DEBUG_INFO_SIZE_INSUFFICIENT 127 #define VIDC_1080P_ERROR_NALU_HEADER_ERROR 128 #define VIDC_1080P_ERROR_SPS_PARSE_ERROR 129 #define VIDC_1080P_ERROR_PPS_PARSE_ERROR 130 #define VIDC_1080P_ERROR_SLICE_PARSE_ERROR 131 #define VIDC_1080P_ERROR_NON_IDR_FRAME_TYPE 132 #define VIDC_1080P_ERROR_SYNC_POINT_NOT_RECEIVED 171 #define VIDC_1080P_WARN_COMMAND_FLUSHED 145 #define VIDC_1080P_WARN_METADATA_NO_SPACE_NUM_CONCEAL_MB 150 #define VIDC_1080P_WARN_METADATA_NO_SPACE_QP 151 #define VIDC_1080P_WARN_METADATA_NO_SPACE_CONCEAL_MB 152 #define VIDC_1080P_WARN_METADATA_NO_SPACE_VC1_PARAM 153 #define VIDC_1080P_WARN_METADATA_NO_SPACE_SEI 154 #define VIDC_1080P_WARN_METADATA_NO_SPACE_VUI 155 #define VIDC_1080P_WARN_METADATA_NO_SPACE_EXTRA 156 #define VIDC_1080P_WARN_METADATA_NO_SPACE_DATA_NONE 157 #define VIDC_1080P_WARN_FRAME_RATE_UNKNOWN 158 #define VIDC_1080P_WARN_ASPECT_RATIO_UNKNOWN 159 #define VIDC_1080P_WARN_COLOR_PRIMARIES_UNKNOWN 160 #define VIDC_1080P_WARN_TRANSFER_CHAR_UNKNOWN 161 #define VIDC_1080P_WARN_MATRIX_COEFF_UNKNOWN 162 #define VIDC_1080P_WARN_NON_SEQ_SLICE_ADDR 163 #define VIDC_1080P_WARN_BROKEN_LINK 164 #define VIDC_1080P_WARN_FRAME_CONCEALED 165 #define VIDC_1080P_WARN_PROFILE_UNKNOWN 166 #define VIDC_1080P_WARN_LEVEL_UNKNOWN 167 #define VIDC_1080P_WARN_BIT_RATE_NOT_SUPPORTED 168 #define VIDC_1080P_WARN_COLOR_DIFF_FORMAT_NOT_SUPPORTED 169 #define VIDC_1080P_WARN_NULL_EXTRA_METADATA_POINTER 170 #define VIDC_1080P_WARN_DEBLOCKING_NOT_DONE 178 #define VIDC_1080P_WARN_INCOMPLETE_FRAME 179 #define VIDC_1080P_WARN_METADATA_NO_SPACE_MB_INFO 180 #define VIDC_1080P_WARN_METADATA_NO_SPACE_SLICE_SIZE 181 #define VIDC_1080P_WARN_RESOLUTION_WARNING 182 #define VIDC_1080P_WARN_NO_LONG_TERM_REFERENCE 183 #define VIDC_1080P_WARN_NO_SPACE_MPEG2_DATA_DUMP 190 #define VIDC_1080P_WARN_METADATA_NO_SPACE_MISSING_MB 191 #define VIDC_1080P_H264_ENC_TYPE_P 0 #define VIDC_1080P_H264_ENC_TYPE_B 1 #define VIDC_1080P_H264_ENC_TYPE_IDR 2 #define VIDC_1080P_MP4_H263_ENC_TYPE_I 0 #define VIDC_1080P_MP4_H263_ENC_TYPE_P 1 #define VIDC_1080P_MP4_H263_ENC_TYPE_B 2 #define VIDC_1080P_MPEG4_LEVEL0 0 #define VIDC_1080P_MPEG4_LEVEL0b 9 #define VIDC_1080P_MPEG4_LEVEL1 1 #define VIDC_1080P_MPEG4_LEVEL2 2 #define VIDC_1080P_MPEG4_LEVEL3 3 #define VIDC_1080P_MPEG4_LEVEL3b 7 #define VIDC_1080P_MPEG4_LEVEL4 4 #define VIDC_1080P_MPEG4_LEVEL4a 4 #define VIDC_1080P_MPEG4_LEVEL5 5 #define VIDC_1080P_MPEG4_LEVEL6 6 #define VIDC_1080P_MPEG4_LEVEL7 7 #define VIDC_1080P_H264_LEVEL1 10 #define VIDC_1080P_H264_LEVEL1b 9 #define VIDC_1080P_H264_LEVEL1p1 11 #define VIDC_1080P_H264_LEVEL1p2 12 #define VIDC_1080P_H264_LEVEL1p3 13 #define VIDC_1080P_H264_LEVEL2 20 #define VIDC_1080P_H264_LEVEL2p1 21 #define VIDC_1080P_H264_LEVEL2p2 22 #define VIDC_1080P_H264_LEVEL3 30 #define VIDC_1080P_H264_LEVEL3p1 31 #define VIDC_1080P_H264_LEVEL3p2 32 #define VIDC_1080P_H264_LEVEL4 40 #define VIDC_1080P_H264_LEVEL5p1 51 #define VIDC_1080P_H264_LEVEL_MAX VIDC_1080P_H264_LEVEL5p1 #define VIDC_1080P_H263_LEVEL10 10 #define VIDC_1080P_H263_LEVEL20 20 #define VIDC_1080P_H263_LEVEL30 30 #define VIDC_1080P_H263_LEVEL40 40 #define VIDC_1080P_H263_LEVEL45 45 #define VIDC_1080P_H263_LEVEL50 50 #define VIDC_1080P_H263_LEVEL60 60 #define VIDC_1080P_H263_LEVEL70 70 #define VIDC_1080P_BUS_ERROR_HANDLER 0x01 #define VIDC_1080P_ILLEVIDC_INSTRUCTION_HANDLER 0x02 #define VIDC_1080P_TICK_HANDLER 0x04 #define VIDC_1080P_TRAP_HANDLER 0x10 #define VIDC_1080P_ALIGN_HANDLER 0x20 #define VIDC_1080P_RANGE_HANDLER 0x40 #define VIDC_1080P_DTLB_MISS_EXCEPTION_HANDLER 0x80 #define VIDC_1080P_ITLB_MISS_EXCEPTION_HANDLER 0x100 #define VIDC_1080P_DATA_PAGE_FAULT_EXCEPTION_HANDLER 0x200 #define VIDC_1080P_INST_PAGE_FAULT_EXCEPTION_HANDLER 0x400 #define VIDC_1080P_SLICE_BATCH_MAX_STRM_BFR 8 #define VIDC_1080P_SLICE_BATCH_IN_SIZE(idx) (4 * sizeof(u32) + \ idx * sizeof(u32)) enum vidc_1080p_reset{ VIDC_1080P_RESET_IN_SEQ_FIRST_STAGE = 0x0, VIDC_1080P_RESET_IN_SEQ_SECOND_STAGE = 0x1, }; enum vidc_1080p_memory_access_method{ VIDC_1080P_TILE_LINEAR = 0, VIDC_1080P_TILE_16x16 = 2, VIDC_1080P_TILE_64x32 = 3, VIDC_1080P_TILE_32BIT = 0x7FFFFFFF }; enum vidc_1080p_host2risc_cmd{ VIDC_1080P_HOST2RISC_CMD_EMPTY = 0, VIDC_1080P_HOST2RISC_CMD_OPEN_CH = 1, VIDC_1080P_HOST2RISC_CMD_CLOSE_CH = 2, VIDC_1080P_HOST2RISC_CMD_SYS_INIT = 3, VIDC_1080P_HOST2RISC_CMD_FLUSH_COMMMAND = 4, VIDC_1080P_HOST2RISC_CMD_CONTINUE_ENC = 7, VIDC_1080P_HOST2RISC_CMD_ABORT_ENC = 8, VIDC_1080P_HOST2RISC_CMD_32BIT = 0x7FFFFFFF }; enum vidc_1080p_decode_p_cache_enable{ VIDC_1080P_DECODE_PCACHE_ENABLE_P = 0, VIDC_1080P_DECODE_PCACHE_ENABLE_B = 1, VIDC_1080P_DECODE_PCACHE_ENABLE_PB = 2, VIDC_1080P_DECODE_PCACHE_DISABLE = 3, VIDC_1080P_DECODE_PCACHE_32BIT = 0x7FFFFFFF }; enum vidc_1080p_encode_p_cache_enable{ VIDC_1080P_ENCODE_PCACHE_ENABLE = 0, VIDC_1080P_ENCODE_PCACHE_DISABLE = 3, VIDC_1080P_ENCODE_PCACHE_32BIT = 0x7FFFFFFF }; enum vidc_1080p_codec{ VIDC_1080P_H264_DECODE = 0, VIDC_1080P_VC1_DECODE = 1, VIDC_1080P_MPEG4_DECODE = 2, VIDC_1080P_MPEG2_DECODE = 3, VIDC_1080P_H263_DECODE = 4, VIDC_1080P_VC1_RCV_DECODE = 5, VIDC_1080P_DIVX311_DECODE = 6, VIDC_1080P_DIVX412_DECODE = 7, VIDC_1080P_DIVX502_DECODE = 8, VIDC_1080P_DIVX503_DECODE = 9, VIDC_1080P_H264_ENCODE = 16, VIDC_1080P_MPEG4_ENCODE = 17, VIDC_1080P_H263_ENCODE = 18, VIDC_1080P_CODEC_32BIT = 0x7FFFFFFF }; enum vidc_1080p_entropy_sel{ VIDC_1080P_ENTROPY_SEL_CAVLC = 0, VIDC_1080P_ENTROPY_SEL_CABAC = 1, VIDC_1080P_ENTROPY_32BIT = 0x7FFFFFFF }; enum vidc_1080p_DBConfig{ VIDC_1080P_DB_ALL_BLOCKING_BOUNDARY = 0, VIDC_1080P_DB_DISABLE = 1, VIDC_1080P_DB_SKIP_SLICE_BOUNDARY = 2, VIDC_1080P_DB_32BIT = 0x7FFFFFFF }; enum vidc_1080p_MSlice_selection{ VIDC_1080P_MSLICE_DISABLE = 0, VIDC_1080P_MSLICE_BY_MB_COUNT = 1, VIDC_1080P_MSLICE_BY_BYTE_COUNT = 3, VIDC_1080P_MSLICE_32BIT = 0x7FFFFFFF }; enum vidc_1080p_display_status{ VIDC_1080P_DISPLAY_STATUS_DECODE_ONLY = 0, VIDC_1080P_DISPLAY_STATUS_DECODE_AND_DISPLAY = 1, VIDC_1080P_DISPLAY_STATUS_DISPLAY_ONLY = 2, VIDC_1080P_DISPLAY_STATUS_DPB_EMPTY = 3, VIDC_1080P_DISPLAY_STATUS_NOOP = 4, VIDC_1080P_DISPLAY_STATUS_32BIT = 0x7FFFFFFF }; enum vidc_1080p_display_coding{ VIDC_1080P_DISPLAY_CODING_PROGRESSIVE_SCAN = 0, VIDC_1080P_DISPLAY_CODING_INTERLACED = 1, VIDC_1080P_DISPLAY_CODING_32BIT = 0x7FFFFFFF }; enum vidc_1080p_decode_frame{ VIDC_1080P_DECODE_FRAMETYPE_NOT_CODED = 0, VIDC_1080P_DECODE_FRAMETYPE_I = 1, VIDC_1080P_DECODE_FRAMETYPE_P = 2, VIDC_1080P_DECODE_FRAMETYPE_B = 3, VIDC_1080P_DECODE_FRAMETYPE_OTHERS = 4, VIDC_1080P_DECODE_FRAMETYPE_IDR = 5, VIDC_1080P_DECODE_FRAMETYPE_32BIT = 0x7FFFFFFF }; enum vidc_1080P_decode_frame_correct_type { VIDC_1080P_DECODE_NOT_CORRECT = 0, VIDC_1080P_DECODE_CORRECT = 1, VIDC_1080P_DECODE_APPROX_CORRECT = 2, VIDC_1080P_DECODE_CORRECTTYPE_32BIT = 0x7FFFFFFF }; enum vidc_1080p_encode_frame{ VIDC_1080P_ENCODE_FRAMETYPE_NOT_CODED = 0, VIDC_1080P_ENCODE_FRAMETYPE_I = 1, VIDC_1080P_ENCODE_FRAMETYPE_P = 2, VIDC_1080P_ENCODE_FRAMETYPE_B = 3, VIDC_1080P_ENCODE_FRAMETYPE_SKIPPED = 4, VIDC_1080P_ENCODE_FRAMETYPE_OTHERS = 5, VIDC_1080P_ENCODE_FRAMETYPE_32BIT = 0x7FFFFFFF }; enum vidc_1080p_decode_idc_format { VIDC_1080P_IDCFORMAT_MONOCHROME = 0, VIDC_1080P_IDCFORMAT_420 = 1, VIDC_1080P_IDCFORMAT_422 = 2, VIDC_1080P_IDCFORMAT_444 = 3, VIDC_1080P_IDCFORMAT_OTHERS = 4, VIDC_1080P_IDCFORMAT_32BIT = 0x7FFFFFFF }; #define VIDC_1080P_PROFILE_MPEG4_SIMPLE 0x00000000 #define VIDC_1080P_PROFILE_MPEG4_ADV_SIMPLE 0x00000001 #define VIDC_1080P_PROFILE_H264_MAIN 0x00000000 #define VIDC_1080P_PROFILE_H264_HIGH 0x00000001 #define VIDC_1080P_PROFILE_H264_BASELINE 0x00000002 #define VIDC_1080P_PROFILE_H264_CONSTRAINED_BASELINE 0x00000003 enum vidc_1080p_decode{ VIDC_1080P_DEC_TYPE_SEQ_HEADER = 0x00010000, VIDC_1080P_DEC_TYPE_FRAME_DATA = 0x00020000, VIDC_1080P_DEC_TYPE_LAST_FRAME_DATA = 0x00030000, VIDC_1080P_DEC_TYPE_INIT_BUFFERS = 0x00040000, VIDC_1080P_DEC_TYPE_FRAME_START_REALLOC = 0x00050000, VIDC_1080P_DEC_TYPE_32BIT = 0x7FFFFFFF }; enum vidc_1080p_encode{ VIDC_1080P_ENC_TYPE_SEQ_HEADER = 0x00010000, VIDC_1080P_ENC_TYPE_FRAME_DATA = 0x00020000, VIDC_1080P_ENC_TYPE_LAST_FRAME_DATA = 0x00030000, VIDC_1080P_ENC_TYPE_SLICE_BATCH_START = 0x00070000, VIDC_1080P_ENC_TYPE_32BIT = 0x7FFFFFFF }; struct vidc_1080p_dec_seq_start_param{ u32 cmd_seq_num; u32 inst_id; u32 shared_mem_addr_offset; u32 stream_buffer_addr_offset; u32 stream_buffersize; u32 stream_frame_size; u32 descriptor_buffer_addr_offset; u32 descriptor_buffer_size; }; struct vidc_1080p_dec_frame_start_param{ u32 cmd_seq_num; u32 inst_id; u32 shared_mem_addr_offset; u32 stream_buffer_addr_offset; u32 stream_buffersize; u32 stream_frame_size; u32 descriptor_buffer_addr_offset; u32 descriptor_buffer_size; u32 release_dpb_bit_mask; u32 dpb_count; u32 dpb_flush; u32 dmx_disable; enum vidc_1080p_decode decode; }; struct vidc_1080p_dec_init_buffers_param{ u32 cmd_seq_num; u32 inst_id; u32 shared_mem_addr_offset; u32 dpb_count; u32 dmx_disable; }; struct vidc_1080p_seq_hdr_info{ u32 img_size_x; u32 img_size_y; u32 dec_frm_size; u32 min_num_dpb; u32 min_luma_dpb_size; u32 min_chroma_dpb_size; u32 profile; u32 level; u32 disp_progressive; u32 disp_crop_exists; u32 dec_progressive; u32 dec_crop_exists; u32 crop_right_offset; u32 crop_left_offset; u32 crop_bottom_offset; u32 crop_top_offset; u32 data_partition; }; struct vidc_1080p_enc_seq_start_param{ u32 cmd_seq_num; u32 inst_id; u32 shared_mem_addr_offset; u32 stream_buffer_addr_offset; u32 stream_buffer_size; }; struct vidc_1080p_enc_frame_start_param{ u32 cmd_seq_num; u32 inst_id; u32 shared_mem_addr_offset; u32 current_y_addr_offset; u32 current_c_addr_offset; u32 stream_buffer_addr_offset; u32 stream_buffer_size; u32 intra_frame; u32 input_flush; u32 slice_enable; u32 store_ltr0; u32 store_ltr1; u32 use_ltr0; u32 use_ltr1; enum vidc_1080p_encode encode; }; struct vidc_1080p_enc_frame_info{ u32 enc_frame_size; u32 enc_picture_count; u32 enc_write_pointer; u32 enc_luma_address; u32 enc_chroma_address; enum vidc_1080p_encode_frame enc_frame; u32 meta_data_exists; }; struct vidc_1080p_enc_slice_batch_in_param { u32 cmd_type; u32 input_size; u32 num_stream_buffer; u32 stream_buffer_size; u32 stream_buffer_addr_offset[VIDC_1080P_SLICE_BATCH_MAX_STRM_BFR]; }; struct vidc_1080p_enc_slice_info { u32 stream_buffer_idx; u32 stream_buffer_size; }; struct vidc_1080p_enc_slice_batch_out_param { u32 cmd_type; u32 output_size; struct vidc_1080p_enc_slice_info slice_info [VIDC_1080P_SLICE_BATCH_MAX_STRM_BFR]; }; struct vidc_1080p_dec_disp_info{ u32 disp_resl_change; u32 dec_resl_change; u32 reconfig_flush_done; u32 img_size_x; u32 img_size_y; u32 display_y_addr; u32 display_c_addr; u32 decode_y_addr; u32 decode_c_addr; u32 tag_top; u32 pic_time_top; u32 tag_bottom; u32 pic_time_bottom; u32 metadata_exists; u32 disp_crop_exists; u32 dec_crop_exists; u32 crop_right_offset; u32 crop_left_offset; u32 crop_bottom_offset; u32 crop_top_offset; u32 input_bytes_consumed; u32 input_is_interlace; u32 input_frame_num; enum vidc_1080p_display_status display_status; enum vidc_1080p_display_status decode_status; enum vidc_1080p_display_coding display_coding; enum vidc_1080p_display_coding decode_coding; enum vidc_1080P_decode_frame_correct_type display_correct; enum vidc_1080P_decode_frame_correct_type decode_correct; enum vidc_1080p_decode_frame input_frame; }; void vidc_1080p_do_sw_reset(enum vidc_1080p_reset init_flag); void vidc_1080p_release_sw_reset(void); void vidc_1080p_clear_interrupt(void); void vidc_1080p_set_host2risc_cmd( enum vidc_1080p_host2risc_cmd host2risc_command, u32 host2risc_arg1, u32 host2risc_arg2, u32 host2risc_arg3, u32 host2risc_arg4); void vidc_1080p_get_risc2host_cmd(u32 *pn_risc2host_command, u32 *pn_risc2host_arg1, u32 *pn_risc2host_arg2, u32 *pn_risc2host_arg3, u32 *pn_risc2host_arg4); void vidc_1080p_get_risc2host_cmd_status(u32 err_status, u32 *dec_err_status, u32 *disp_err_status); void vidc_1080p_clear_risc2host_cmd(void); void vidc_1080p_get_fw_version(u32 *pn_fw_version); void vidc_1080p_get_fw_status(u32 *pn_fw_status); void vidc_1080p_init_memory_controller(u32 dram_base_addr_a, u32 dram_base_addr_b); void vidc_1080p_get_memory_controller_status(u32 *pb_mc_abusy, u32 *pb_mc_bbusy); void vidc_1080p_set_h264_decode_buffers(u32 dpb, u32 dec_vert_nb_mv_offset, u32 dec_nb_ip_offset, u32 *pn_dpb_luma_offset, u32 *pn_dpb_chroma_offset, u32 *pn_mv_buffer_offset); void vidc_1080p_set_decode_recon_buffers(u32 recon_buffer, u32 *pn_dec_luma, u32 *pn_dec_chroma); void vidc_1080p_set_mpeg4_divx_decode_work_buffers(u32 nb_dcac_buffer_offset, u32 upnb_mv_buffer_offset, u32 sub_anchor_buffer_offset, u32 overlay_transform_buffer_offset, u32 stx_parser_buffer_offset); void vidc_1080p_set_h263_decode_work_buffers(u32 nb_dcac_buffer_offset, u32 upnb_mv_buffer_offset, u32 sub_anchor_buffer_offset, u32 overlay_transform_buffer_offset); void vidc_1080p_set_vc1_decode_work_buffers(u32 nb_dcac_buffer_offset, u32 upnb_mv_buffer_offset, u32 sub_anchor_buffer_offset, u32 overlay_transform_buffer_offset, u32 bitplain1Buffer_offset, u32 bitplain2Buffer_offset, u32 bitplain3Buffer_offset); void vidc_1080p_set_encode_recon_buffers(u32 recon_buffer, u32 *pn_enc_luma, u32 *pn_enc_chroma); void vidc_1080p_set_h264_encode_work_buffers(u32 up_row_mv_buffer_offset, u32 direct_colzero_flag_buffer_offset, u32 upper_intra_md_buffer_offset, u32 upper_intra_pred_buffer_offset, u32 nbor_infor_buffer_offset, u32 mb_info_offset); void vidc_1080p_set_h263_encode_work_buffers(u32 up_row_mv_buffer_offset, u32 up_row_inv_quanti_coeff_buffer_offset); void vidc_1080p_set_mpeg4_encode_work_buffers(u32 skip_flag_buffer_offset, u32 up_row_inv_quanti_coeff_buffer_offset, u32 upper_mv_offset); void vidc_1080p_set_encode_frame_size(u32 hori_size, u32 vert_size); void vidc_1080p_set_encode_profile_level(u32 encode_profile, u32 enc_level); void vidc_1080p_set_encode_field_picture_structure(u32 enc_field_picture); void vidc_1080p_set_decode_mpeg4_pp_filter(u32 lf_enables); void vidc_1080p_set_decode_qp_save_control(u32 enable_q_pout); void vidc_1080p_get_returned_channel_inst_id(u32 *pn_rtn_chid); void vidc_1080p_clear_returned_channel_inst_id(void); void vidc_1080p_get_decode_seq_start_result( struct vidc_1080p_seq_hdr_info *seq_hdr_info); void vidc_1080p_get_decoded_frame_size(u32 *pn_decoded_size); void vidc_1080p_get_display_frame_result( struct vidc_1080p_dec_disp_info *dec_disp_info); void vidc_1080p_get_decode_frame( enum vidc_1080p_decode_frame *pe_frame); void vidc_1080p_get_decode_frame_result( struct vidc_1080p_dec_disp_info *dec_disp_info); void vidc_1080p_decode_seq_start_ch0( struct vidc_1080p_dec_seq_start_param *param); void vidc_1080p_decode_seq_start_ch1( struct vidc_1080p_dec_seq_start_param *param); void vidc_1080p_decode_init_buffers_ch0 (struct vidc_1080p_dec_init_buffers_param *param); void vidc_1080p_decode_init_buffers_ch1( struct vidc_1080p_dec_init_buffers_param *param); void vidc_1080p_decode_frame_start_ch0( struct vidc_1080p_dec_frame_start_param *param); void vidc_1080p_decode_frame_start_ch1( struct vidc_1080p_dec_frame_start_param *param); void vidc_1080p_set_dec_resolution_ch0(u32 width, u32 height); void vidc_1080p_set_dec_resolution_ch1(u32 width, u32 height); void vidc_1080p_get_encode_frame_info( struct vidc_1080p_enc_frame_info *frame_info); void vidc_1080p_encode_seq_start_ch0( struct vidc_1080p_enc_seq_start_param *param); void vidc_1080p_encode_seq_start_ch1( struct vidc_1080p_enc_seq_start_param *param); void vidc_1080p_encode_frame_start_ch0( struct vidc_1080p_enc_frame_start_param *param); void vidc_1080p_encode_frame_start_ch1( struct vidc_1080p_enc_frame_start_param *param); void vidc_1080p_encode_slice_batch_start_ch0( struct vidc_1080p_enc_frame_start_param *param); void vidc_1080p_encode_slice_batch_start_ch1( struct vidc_1080p_enc_frame_start_param *param); void vidc_1080p_set_encode_picture(u32 ifrm_ctrl, u32 number_b); void vidc_1080p_set_encode_multi_slice_control( enum vidc_1080p_MSlice_selection multiple_slice_selection, u32 mslice_mb, u32 mslice_byte); void vidc_1080p_set_encode_circular_intra_refresh(u32 cir_num); void vidc_1080p_set_encode_input_frame_format( enum vidc_1080p_memory_access_method memory_format); void vidc_1080p_set_encode_padding_control(u32 pad_ctrl_on, u32 cr_pad_val, u32 cb_pad_val, u32 luma_pad_val); void vidc_1080p_encode_set_rc_config(u32 enable_frame_level_rc, u32 enable_mb_level_rc_flag, u32 frame_qp); void vidc_1080p_encode_set_frame_level_rc_params(u32 rc_frame_rate, u32 target_bitrate, u32 reaction_coeff); void vidc_1080p_encode_set_qp_params(u32 max_qp, u32 min_qp); void vidc_1080p_encode_set_mb_level_rc_params(u32 disable_dark_region_as_flag, u32 disable_smooth_region_as_flag , u32 disable_static_region_as_flag, u32 disable_activity_region_flag); void vidc_1080p_get_qp(u32 *pn_frame_qp); void vidc_1080p_set_h264_encode_entropy( enum vidc_1080p_entropy_sel entropy_sel); void vidc_1080p_set_h264_encode_loop_filter( enum vidc_1080p_DBConfig db_config, u32 slice_alpha_offset, u32 slice_beta_offset); void vidc_1080p_set_h264_encoder_p_frame_ref_count(u32 max_reference); void vidc_1080p_set_h264_encode_8x8transform_control(u32 enable_8x8transform); void vidc_1080p_set_mpeg4_encode_quarter_pel_control( u32 enable_mpeg4_quarter_pel); void vidc_1080p_set_device_base_addr(u8 *mapped_va); void vidc_1080p_get_intra_bias(u32 *intra_bias); void vidc_1080p_set_intra_bias(u32 intra_bias); void vidc_1080p_get_bi_directional_bias(u32 *bi_directional_bias); void vidc_1080p_set_bi_directional_bias(u32 bi_directional_bias); void vidc_1080p_get_encoder_sequence_header_size(u32 *seq_header_size); void vidc_1080p_get_intermedia_stage_debug_counter( u32 *intermediate_stage_counter); void vidc_1080p_get_exception_status(u32 *exception_status); void vidc_1080p_frame_start_realloc(u32 instance_id); #endif