1#ifndef QDSP5VIDENCCMDI_H 2#define QDSP5VIDENCCMDI_H 3 4/*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====* 5 6 V I D E O E N C O D E R I N T E R N A L C O M M A N D S 7 8GENERAL DESCRIPTION 9 This file contains defintions of format blocks of commands 10 that are accepted by VIDENC Task 11 12REFERENCES 13 None 14 15EXTERNALIZED FUNCTIONS 16 None 17 18Copyright(c) 2008 by QUALCOMM, Incorporated. 19*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*/ 20/*=========================================================================== 21 22 EDIT HISTORY FOR FILE 23 24This section contains comments describing changes made to this file. 25Notice that changes are listed in reverse chronological order. 26 27Revision History: 28 29when who what, where, why 30-------- --- ---------------------------------------------------------- 3109/25/08 umeshp initial version 32===========================================================================*/ 33 34 #define VIDENC_CMD_CFG 0x0000 35 #define VIDENC_CMD_ACTIVE 0x0001 36 #define VIDENC_CMD_IDLE 0x0002 37 #define VIDENC_CMD_FRAME_START 0x0003 38 #define VIDENC_CMD_STATUS_QUERY 0x0004 39 #define VIDENC_CMD_RC_CFG 0x0005 40 #define VIDENC_CMD_DIS_CFG 0x0006 41 #define VIDENC_CMD_DIS 0x0007 42 #define VIDENC_CMD_INTRA_REFRESH 0x0008 43 #define VIDENC_CMD_DIGITAL_ZOOM 0x0009 44 45 46/* 47 * Command to pass the frame message information to VIDENC 48 */ 49 50 51#define VIDENC_CMD_FRAME_START_LEN \ 52 sizeof(videnc_cmd_frame_start) 53 54typedef struct { 55 unsigned short cmd_id; 56 unsigned short frame_info; 57 unsigned short frame_rho_budget_word_high; 58 unsigned short frame_rho_budget_word_low; 59 unsigned short input_luma_addr_high; 60 unsigned short input_luma_addr_low; 61 unsigned short input_chroma_addr_high; 62 unsigned short input_chroma_addr_low; 63 unsigned short ref_vop_buf_ptr_high; 64 unsigned short ref_vop_buf_ptr_low; 65 unsigned short enc_pkt_buf_ptr_high; 66 unsigned short enc_pkt_buf_ptr_low; 67 unsigned short enc_pkt_buf_size_high; 68 unsigned short enc_pkt_buf_size_low; 69 unsigned short unfilt_recon_vop_buf_ptr_high; 70 unsigned short unfilt_recon_vop_buf_ptr_low; 71 unsigned short filt_recon_vop_buf_ptr_high; 72 unsigned short filt_recon_vop_buf_ptr_low; 73} __attribute__((packed)) videnc_cmd_frame_start; 74 75/* 76 * Command to pass the frame-level digital stabilization parameters to VIDENC 77 */ 78 79 80#define VIDENC_CMD_DIS_LEN \ 81 sizeof(videnc_cmd_dis) 82 83typedef struct { 84 unsigned short cmd_id; 85 unsigned short vfe_out_prev_luma_addr_high; 86 unsigned short vfe_out_prev_luma_addr_low; 87 unsigned short stabilization_info; 88} __attribute__((packed)) videnc_cmd_dis; 89 90/* 91 * Command to pass the codec related parameters to VIDENC 92 */ 93 94 95#define VIDENC_CMD_CFG_LEN \ 96 sizeof(videnc_cmd_cfg) 97 98typedef struct { 99 unsigned short cmd_id; 100 unsigned short cfg_info_0; 101 unsigned short cfg_info_1; 102 unsigned short four_mv_threshold; 103 unsigned short ise_fse_mv_cost_fac; 104 unsigned short venc_frame_dim; 105 unsigned short venc_DM_partition; 106} __attribute__((packed)) videnc_cmd_cfg; 107 108/* 109 * Command to start the video encoding 110 */ 111 112 113#define VIDENC_CMD_ACTIVE_LEN \ 114 sizeof(videnc_cmd_active) 115 116typedef struct { 117 unsigned short cmd_id; 118} __attribute__((packed)) videnc_cmd_active; 119 120/* 121 * Command to stop the video encoding 122 */ 123 124 125#define VIDENC_CMD_IDLE_LEN \ 126 sizeof(videnc_cmd_idle) 127 128typedef struct { 129 unsigned short cmd_id; 130} __attribute__((packed)) videnc_cmd_idle; 131 132/* 133 * Command to query staus of VIDENC 134 */ 135 136 137#define VIDENC_CMD_STATUS_QUERY_LEN \ 138 sizeof(videnc_cmd_status_query) 139 140typedef struct { 141 unsigned short cmd_id; 142} __attribute__((packed)) videnc_cmd_status_query; 143 144/* 145 * Command to set rate control for a frame 146 */ 147 148 149#define VIDENC_CMD_RC_CFG_LEN \ 150 sizeof(videnc_cmd_rc_cfg) 151 152typedef struct { 153 unsigned short cmd_id; 154 unsigned short max_frame_qp_delta; 155 unsigned short max_min_frame_qp; 156} __attribute__((packed)) videnc_cmd_rc_cfg; 157 158/* 159 * Command to set intra-refreshing 160 */ 161 162 163#define VIDENC_CMD_INTRA_REFRESH_LEN \ 164 sizeof(videnc_cmd_intra_refresh) 165 166typedef struct { 167 unsigned short cmd_id; 168 unsigned short num_mb_refresh; 169 unsigned short mb_index[15]; 170} __attribute__((packed)) videnc_cmd_intra_refresh; 171 172/* 173 * Command to pass digital zoom information to the VIDENC 174 */ 175#define VIDENC_CMD_DIGITAL_ZOOM_LEN \ 176 sizeof(videnc_cmd_digital_zoom) 177 178typedef struct { 179 unsigned short cmd_id; 180 unsigned short digital_zoom_en; 181 unsigned short luma_frame_shift_X; 182 unsigned short luma_frame_shift_Y; 183 unsigned short up_ip_luma_rows; 184 unsigned short up_ip_luma_cols; 185 unsigned short up_ip_chroma_rows; 186 unsigned short up_ip_chroma_cols; 187 unsigned short luma_ph_incr_V_low; 188 unsigned short luma_ph_incr_V_high; 189 unsigned short luma_ph_incr_H_low; 190 unsigned short luma_ph_incr_H_high; 191 unsigned short chroma_ph_incr_V_low; 192 unsigned short chroma_ph_incr_V_high; 193 unsigned short chroma_ph_incr_H_low; 194 unsigned short chroma_ph_incr_H_high; 195} __attribute__((packed)) videnc_cmd_digital_zoom; 196 197/* 198 * Command to configure digital stabilization parameters 199 */ 200 201#define VIDENC_CMD_DIS_CFG_LEN \ 202 sizeof(videnc_cmd_dis_cfg) 203 204typedef struct { 205 unsigned short cmd_id; 206 unsigned short image_stab_subf_start_row_col; 207 unsigned short image_stab_subf_dim; 208 unsigned short image_stab_info_0; 209} __attribute__((packed)) videnc_cmd_dis_cfg; 210 211 212#endif 213