aboutsummaryrefslogtreecommitdiff
path: root/drivers/staging/dream/include/mach/qdsp5/qdsp5vdeccmdi.h
blob: 3a32ee99c6e4d7d19d162a406f26f43880d4489f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
#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