blob: 34e00a61a349cfdc68ef5b983e8fb1abca344493 [file] [log] [blame]
#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