232 lines
5.9 KiB
C
232 lines
5.9 KiB
C
#ifndef QDSP5VIDENCCMDI_H
|
|
#define QDSP5VIDENCCMDI_H
|
|
|
|
/*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*
|
|
|
|
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
|
|
|
|
GENERAL DESCRIPTION
|
|
This file contains defintions of format blocks of commands
|
|
that are accepted by VIDENC Task
|
|
|
|
REFERENCES
|
|
None
|
|
|
|
EXTERNALIZED FUNCTIONS
|
|
None
|
|
|
|
Copyright (c) 2008-2009, The Linux Foundation. All rights reserved.
|
|
*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*/
|
|
/*===========================================================================
|
|
|
|
EDIT HISTORY FOR FILE
|
|
|
|
This section contains comments describing changes made to this file.
|
|
Notice that changes are listed in reverse chronological order.
|
|
|
|
Revision History:
|
|
|
|
when who what, where, why
|
|
-------- --- ----------------------------------------------------------
|
|
09/25/08 umeshp initial version
|
|
===========================================================================*/
|
|
|
|
#define VIDENC_CMD_CFG 0x0000
|
|
#define VIDENC_CMD_ACTIVE 0x0001
|
|
#define VIDENC_CMD_IDLE 0x0002
|
|
#define VIDENC_CMD_FRAME_START 0x0003
|
|
#define VIDENC_CMD_STATUS_QUERY 0x0004
|
|
#define VIDENC_CMD_RC_CFG 0x0005
|
|
#define VIDENC_CMD_INTRA_REFRESH 0x0006
|
|
#define VIDENC_CMD_CODEC_CONFIG 0x0007
|
|
#define VIDENC_CMD_VIDEO_CONFIG 0x0008
|
|
#define VIDENC_CMD_PARAMETER_UPDATE 0x0009
|
|
#define VIDENC_CMD_VENC_CLOCK 0x000A
|
|
#define VIDENC_CMD_DIS_CFG 0x000B
|
|
#define VIDENC_CMD_DIS 0x000C
|
|
#define VIDENC_CMD_DIGITAL_ZOOM 0x000D
|
|
|
|
|
|
|
|
|
|
/*
|
|
* Command to pass the frame message information to VIDENC
|
|
*/
|
|
|
|
|
|
#define VIDENC_CMD_FRAME_START_LEN \
|
|
sizeof(videnc_cmd_frame_start)
|
|
|
|
typedef struct {
|
|
unsigned short cmd_id;
|
|
unsigned short frame_info;
|
|
unsigned short frame_rho_budget_word_high;
|
|
unsigned short frame_rho_budget_word_low;
|
|
unsigned short input_luma_addr_high;
|
|
unsigned short input_luma_addr_low;
|
|
unsigned short input_chroma_addr_high;
|
|
unsigned short input_chroma_addr_low;
|
|
unsigned short ref_vop_buf_ptr_high;
|
|
unsigned short ref_vop_buf_ptr_low;
|
|
unsigned short enc_pkt_buf_ptr_high;
|
|
unsigned short enc_pkt_buf_ptr_low;
|
|
unsigned short enc_pkt_buf_size_high;
|
|
unsigned short enc_pkt_buf_size_low;
|
|
unsigned short unfilt_recon_vop_buf_ptr_high;
|
|
unsigned short unfilt_recon_vop_buf_ptr_low;
|
|
unsigned short filt_recon_vop_buf_ptr_high;
|
|
unsigned short filt_recon_vop_buf_ptr_low;
|
|
} __attribute__((packed)) videnc_cmd_frame_start;
|
|
|
|
/*
|
|
* Command to pass the frame-level digital stabilization parameters to VIDENC
|
|
*/
|
|
|
|
|
|
#define VIDENC_CMD_DIS_LEN \
|
|
sizeof(videnc_cmd_dis)
|
|
|
|
typedef struct {
|
|
unsigned short cmd_id;
|
|
unsigned short vfe_out_prev_luma_addr_high;
|
|
unsigned short vfe_out_prev_luma_addr_low;
|
|
unsigned short stabilization_info;
|
|
} __attribute__((packed)) videnc_cmd_dis;
|
|
|
|
/*
|
|
* Command to pass the codec related parameters to VIDENC
|
|
*/
|
|
|
|
|
|
#define VIDENC_CMD_CFG_LEN \
|
|
sizeof(videnc_cmd_cfg)
|
|
|
|
typedef struct {
|
|
unsigned short cmd_id;
|
|
unsigned short cfg_info_0;
|
|
unsigned short cfg_info_1;
|
|
unsigned short four_mv_threshold;
|
|
unsigned short ise_fse_mv_cost_fac;
|
|
unsigned short venc_frame_dim;
|
|
unsigned short venc_DM_partition;
|
|
} __attribute__((packed)) videnc_cmd_cfg;
|
|
|
|
/*
|
|
* Command to start the video encoding
|
|
*/
|
|
|
|
|
|
#define VIDENC_CMD_ACTIVE_LEN \
|
|
sizeof(videnc_cmd_active)
|
|
|
|
typedef struct {
|
|
unsigned short cmd_id;
|
|
} __attribute__((packed)) videnc_cmd_active;
|
|
|
|
/*
|
|
* Command to stop the video encoding
|
|
*/
|
|
|
|
|
|
#define VIDENC_CMD_IDLE_LEN \
|
|
sizeof(videnc_cmd_idle)
|
|
|
|
typedef struct {
|
|
unsigned short cmd_id;
|
|
} __attribute__((packed)) videnc_cmd_idle;
|
|
|
|
/*
|
|
* Command to query staus of VIDENC
|
|
*/
|
|
|
|
|
|
#define VIDENC_CMD_STATUS_QUERY_LEN \
|
|
sizeof(videnc_cmd_status_query)
|
|
|
|
typedef struct {
|
|
unsigned short cmd_id;
|
|
} __attribute__((packed)) videnc_cmd_status_query;
|
|
|
|
/*
|
|
* Command to set rate control for a frame
|
|
*/
|
|
|
|
|
|
#define VIDENC_CMD_RC_CFG_LEN \
|
|
sizeof(videnc_cmd_rc_cfg)
|
|
|
|
typedef struct {
|
|
unsigned short cmd_id;
|
|
unsigned short max_frame_qp_delta;
|
|
unsigned short max_min_frame_qp;
|
|
} __attribute__((packed)) videnc_cmd_rc_cfg;
|
|
|
|
/*
|
|
* Command to set intra-refreshing
|
|
*/
|
|
|
|
|
|
#define VIDENC_CMD_INTRA_REFRESH_LEN \
|
|
sizeof(videnc_cmd_intra_refresh)
|
|
|
|
typedef struct {
|
|
unsigned short cmd_id;
|
|
unsigned short num_mb_refresh;
|
|
unsigned short mb_index[15];
|
|
} __attribute__((packed)) videnc_cmd_intra_refresh;
|
|
|
|
/*
|
|
* Command to pass digital zoom information to the VIDENC
|
|
*/
|
|
#define VIDENC_CMD_DIGITAL_ZOOM_LEN \
|
|
sizeof(videnc_cmd_digital_zoom)
|
|
|
|
typedef struct {
|
|
unsigned short cmd_id;
|
|
unsigned short digital_zoom_en;
|
|
unsigned short luma_frame_shift_X;
|
|
unsigned short luma_frame_shift_Y;
|
|
unsigned short up_ip_luma_rows;
|
|
unsigned short up_ip_luma_cols;
|
|
unsigned short up_ip_chroma_rows;
|
|
unsigned short up_ip_chroma_cols;
|
|
unsigned short luma_ph_incr_V_low;
|
|
unsigned short luma_ph_incr_V_high;
|
|
unsigned short luma_ph_incr_H_low;
|
|
unsigned short luma_ph_incr_H_high;
|
|
unsigned short chroma_ph_incr_V_low;
|
|
unsigned short chroma_ph_incr_V_high;
|
|
unsigned short chroma_ph_incr_H_low;
|
|
unsigned short chroma_ph_incr_H_high;
|
|
} __attribute__((packed)) videnc_cmd_digital_zoom;
|
|
|
|
/*
|
|
* Command to configure digital stabilization parameters
|
|
*/
|
|
|
|
#define VIDENC_CMD_DIS_CFG_LEN \
|
|
sizeof(videnc_cmd_dis_cfg)
|
|
|
|
typedef struct {
|
|
unsigned short cmd_id;
|
|
unsigned short image_stab_subf_start_row_col;
|
|
unsigned short image_stab_subf_dim;
|
|
unsigned short image_stab_info_0;
|
|
} __attribute__((packed)) videnc_cmd_dis_cfg;
|
|
|
|
|
|
/*
|
|
* Command to set VIDENC_CMD_VENC_CLOCK
|
|
*/
|
|
|
|
|
|
#define VIDENC_CMD_VENC_CLOCK_LEN \
|
|
sizeof(struct videnc_cmd_venc_clock)
|
|
|
|
struct videnc_cmd_venc_clock {
|
|
unsigned short cmd_id;
|
|
unsigned short payload;
|
|
} __attribute__((packed)) ;
|
|
|
|
#endif
|