blob: 3a32ee99c6e4d7d19d162a406f26f43880d4489f [file] [log] [blame]
#ifndef QDSP5VIDDECCMDI_H
#define QDSP5VIDDECCMDI_H
/*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*
V I D E O D E 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 VIDDEC Task
REFERENCES
None
EXTERNALIZED FUNCTIONS
None
Copyright(c) 1992 - 2008 by QUALCOMM, Incorporated.
This software is licensed under the terms of the GNU General Public
License version 2, as published by the Free Software Foundation, and
may be copied, distributed, and modified under those terms.
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.
*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*/
/*===========================================================================
EDIT HISTORY FOR FILE
This section contains comments describing changes made to this file.
Notice that changes are listed in reverse chronological order.
$Header: //source/qcom/qct/multimedia2/AdspSvc/7XXX/qdsp5cmd/video/qdsp5vdeccmdi.h#2 $ $DateTime: 2008/07/30 10:50:23 $ $Author: pavanr $
Revision History:
when who what, where, why
-------- --- ----------------------------------------------------------
05/10/08 ac initial version
===========================================================================*/
/*
* Command to inform VIDDEC that new subframe packet is ready
*/
#define VIDDEC_CMD_SUBFRAME_PKT 0x0000
#define VIDDEC_CMD_SUBFRAME_PKT_LEN \
sizeof(viddec_cmd_subframe_pkt)
#define VIDDEC_CMD_SF_INFO_1_DM_DMA_STATS_EXCHANGE_FLAG_DM 0x0000
#define VIDDEC_CMD_SF_INFO_1_DM_DMA_STATS_EXCHANGE_FLAG_DMA 0x0001
#define VIDDEC_CMD_SF_INFO_0_SUBFRAME_CONTI 0x0000
#define VIDDEC_CMD_SF_INFO_0_SUBFRAME_FIRST 0x0001
#define VIDDEC_CMD_SF_INFO_0_SUBFRAME_LAST 0x0002
#define VIDDEC_CMD_SF_INFO_0_SUBFRAME_FIRST_AND_LAST 0x0003
#define VIDDEC_CMD_CODEC_SELECTION_WORD_MPEG_4 0x0000
#define VIDDEC_CMD_CODEC_SELECTION_WORD_H_263_P0 0x0001
#define VIDDEC_CMD_CODEC_SELECTION_WORD_H_264 0x0002
#define VIDDEC_CMD_CODEC_SELECTION_WORD_H_263_p3 0x0003
#define VIDDEC_CMD_CODEC_SELECTION_WORD_RV9 0x0004
#define VIDDEC_CMD_CODEC_SELECTION_WORD_WMV9 0x0005
#define VIDDEC_CMD_CODEC_SELECTION_WORD_SMCDB 0x0006
#define VIDDEC_CMD_CODEC_SELECTION_WORD_QFRE 0x0007
#define VIDDEC_CMD_CODEC_SELECTION_WORD_VLD 0x0008
typedef struct {
unsigned short cmd_id;
unsigned short packet_seq_number;
unsigned short codec_instance_id;
unsigned short subframe_packet_size_high;
unsigned short subframe_packet_size_low;
unsigned short subframe_packet_high;
unsigned short subframe_packet_low;
unsigned short subframe_packet_partition;
unsigned short statistics_packet_size_high;
unsigned short statistics_packet_size_low;
unsigned short statistics_packet_high;
unsigned short statistics_packet_low;
unsigned short statistics_partition;
unsigned short subframe_info_1;
unsigned short subframe_info_0;
unsigned short codec_selection_word;
unsigned short num_mbs;
} __attribute__((packed)) viddec_cmd_subframe_pkt;
/*
* Command to inform VIDDEC task that post processing is required for the frame
*/
#define VIDDEC_CMD_PP_ENABLE 0x0001
#define VIDDEC_CMD_PP_ENABLE_LEN \
sizeof(viddec_cmd_pp_enable)
#define VIDDEC_CMD_PP_INFO_0_DM_DMA_LS_EXCHANGE_FLAG_DM 0x0000
#define VIDDEC_CMD_PP_INFO_0_DM_DMA_LS_EXCHANGE_FLAG_DMA 0x0001
typedef struct {
unsigned short cmd_id;
unsigned short packet_seq_num;
unsigned short codec_instance_id;
unsigned short postproc_info_0;
unsigned short codec_selection_word;
unsigned short pp_output_addr_high;
unsigned short pp_output_addr_low;
unsigned short postproc_info_1;
unsigned short load_sharing_packet_size_high;
unsigned short load_sharing_packet_size_low;
unsigned short load_sharing_packet_high;
unsigned short load_sharing_packet_low;
unsigned short load_sharing_partition;
unsigned short pp_param_0;
unsigned short pp_param_1;
unsigned short pp_param_2;
unsigned short pp_param_3;
} __attribute__((packed)) viddec_cmd_pp_enable;
/*
* FRAME Header Packet : It is at the start of new frame
*/
#define VIDDEC_CMD_FRAME_HEADER_PACKET 0x0002
#define VIDDEC_CMD_FRAME_HEADER_PACKET_LEN \
sizeof(viddec_cmd_frame_header_packet)
#define VIDDEC_CMD_FRAME_INFO_0_ERROR_SKIP 0x0000
#define VIDDEC_CMD_FRAME_INFO_0_ERROR_BLACK 0x0800
typedef struct {
unsigned short packet_id;
unsigned short x_dimension;
unsigned short y_dimension;
unsigned short line_width;
unsigned short frame_info_0;
unsigned short frame_buffer_0_high;
unsigned short frame_buffer_0_low;
unsigned short frame_buffer_1_high;
unsigned short frame_buffer_1_low;
unsigned short frame_buffer_2_high;
unsigned short frame_buffer_2_low;
unsigned short frame_buffer_3_high;
unsigned short frame_buffer_3_low;
unsigned short frame_buffer_4_high;
unsigned short frame_buffer_4_low;
unsigned short frame_buffer_5_high;
unsigned short frame_buffer_5_low;
unsigned short frame_buffer_6_high;
unsigned short frame_buffer_6_low;
unsigned short frame_buffer_7_high;
unsigned short frame_buffer_7_low;
unsigned short frame_buffer_8_high;
unsigned short frame_buffer_8_low;
unsigned short frame_buffer_9_high;
unsigned short frame_buffer_9_low;
unsigned short frame_buffer_10_high;
unsigned short frame_buffer_10_low;
unsigned short frame_buffer_11_high;
unsigned short frame_buffer_11_low;
unsigned short frame_buffer_12_high;
unsigned short frame_buffer_12_low;
unsigned short frame_buffer_13_high;
unsigned short frame_buffer_13_low;
unsigned short frame_buffer_14_high;
unsigned short frame_buffer_14_low;
unsigned short frame_buffer_15_high;
unsigned short frame_buffer_15_low;
unsigned short output_frame_buffer_high;
unsigned short output_frame_buffer_low;
unsigned short end_of_packet_marker;
} __attribute__((packed)) viddec_cmd_frame_header_packet;
/*
* SLICE HEADER PACKET
* I-Slice and P-Slice
*/
#define VIDDEC_CMD_SLICE_HEADER_PKT_ISLICE 0x0003
#define VIDDEC_CMD_SLICE_HEADER_PKT_ISLICE_LEN \
sizeof(viddec_cmd_slice_header_pkt_islice)
#define VIDDEC_CMD_ISLICE_INFO_1_MOD_SLICE_TYPE_PSLICE 0x0000
#define VIDDEC_CMD_ISLICE_INFO_1_MOD_SLICE_TYPE_BSLICE 0x0100
#define VIDDEC_CMD_ISLICE_INFO_1_MOD_SLICE_TYPE_ISLICE 0x0200
#define VIDDEC_CMD_ISLICE_INFO_1_MOD_SLICE_TYPE_SPSLICE 0x0300
#define VIDDEC_CMD_ISLICE_INFO_1_MOD_SLICE_TYPE_SISLICE 0x0400
#define VIDDEC_CMD_ISLICE_INFO_1_NOPADDING 0x0000
#define VIDDEC_CMD_ISLICE_INFO_1_PADDING 0x0800
#define VIDDEC_CMD_ISLICE_EOP_MARKER 0x7FFF
typedef struct {
unsigned short cmd_id;
unsigned short packet_id;
unsigned short slice_info_0;
unsigned short slice_info_1;
unsigned short slice_info_2;
unsigned short num_bytes_in_rbsp_high;
unsigned short num_bytes_in_rbsp_low;
unsigned short num_bytes_in_rbsp_consumed;
unsigned short end_of_packet_marker;
} __attribute__((packed)) viddec_cmd_slice_header_pkt_islice;
#define VIDDEC_CMD_SLICE_HEADER_PKT_PSLICE 0x0003
#define VIDDEC_CMD_SLICE_HEADER_PKT_PSLICE_LEN \
sizeof(viddec_cmd_slice_header_pkt_pslice)
typedef struct {
unsigned short cmd_id;
unsigned short packet_id;
unsigned short slice_info_0;
unsigned short slice_info_1;
unsigned short slice_info_2;
unsigned short slice_info_3;
unsigned short refidx_l0_map_tab_info_0;
unsigned short refidx_l0_map_tab_info_1;
unsigned short refidx_l0_map_tab_info_2;
unsigned short refidx_l0_map_tab_info_3;
unsigned short num_bytes_in_rbsp_high;
unsigned short num_bytes_in_rbsp_low;
unsigned short num_bytes_in_rbsp_consumed;
unsigned short end_of_packet_marker;
} __attribute__((packed)) viddec_cmd_slice_header_pkt_pslice;
#endif