1bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/*
2bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee INTEL CONFIDENTIAL
3bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee Copyright 2009 Intel Corporation All Rights Reserved.
4bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee The source code contained or described herein and all documents related to the source code ("Material") are owned by Intel Corporation or its suppliers or licensors. Title to the Material remains with Intel Corporation or its suppliers and licensors. The Material contains trade secrets and proprietary and confidential information of Intel or its suppliers and licensors. The Material is protected by worldwide copyright and trade secret laws and treaty provisions. No part of the Material may be used, copied, reproduced, modified, published, uploaded, posted, transmitted, distributed, or disclosed in any way without Intel’s prior express written permission.
5bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
6bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee No license under any patent, copyright, trade secret or other intellectual property right is granted to or conferred upon you by disclosure or delivery of the Materials, either expressly, by implication, inducement, estoppel or otherwise. Any license under such intellectual property rights must be express and approved by Intel in writing.
7bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
8bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
9bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef VBP_LOADER_H
10bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define VBP_LOADER_H
11bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
12bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#include <va/va.h>
13bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
14bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef TRUE
15bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define TRUE 1
16bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif
17bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
18bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef FALSE
19bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#define FALSE 0
20bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif
21bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
22bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
23bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef uint8
24bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef unsigned char uint8;
25bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif
26bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef uint16
27bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef unsigned short uint16;
28bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif
29bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef uint32
30bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef unsigned int uint32;
31bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif
32bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#ifndef bool
33bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef int bool;
34bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif
35bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
36bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef void *Handle;
37bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
38bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/*
39bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * MPEG-4 Part 2 data structure
40bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
41bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
42bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct _vbp_codec_data_mp42
43bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
44bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee    uint8  profile_and_level_indication;
45bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} vbp_codec_data_mp42;
46bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
47bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct _vbp_slice_data_mp42
48bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
49bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8* buffer_addr;
50bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint32 slice_offset;
51bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint32 slice_size;
52bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VASliceParameterBufferMPEG4 slice_param;
53bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} vbp_slice_data_mp42;
54bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
55bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct _vbp_picture_data_mp42
56bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
57bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8 vop_coded;
58bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VAPictureParameterBufferMPEG4 picture_param;
59bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VAIQMatrixBufferMPEG4 iq_matrix_buffer;
60bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
61bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint32 number_slices;
62bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	vbp_slice_data_mp42 *slice_data;
63bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
64bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} vbp_picture_data_mp42;
65bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
66bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct _vbp_data_mp42
67bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
68bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	vbp_codec_data_mp42 codec_data;
69bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
70bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint32 number_pictures;
71bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	vbp_picture_data_mp42 *picture_data;
72bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
73bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} vbp_data_mp42;
74bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
75bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/*
76bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * H.264 data structure
77bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
78bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
79bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct _vbp_codec_data_h264
80bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
81bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8		pic_parameter_set_id;
82bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8	 	seq_parameter_set_id;
83bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
84bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8 		profile_idc;
85bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8 		level_idc;
86bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8		constraint_set1_flag;
87bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
88bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8	 	num_ref_frames;
89bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8	 	gaps_in_frame_num_value_allowed_flag;
90bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
91bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8	 	frame_mbs_only_flag;
92bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8	 	mb_adaptive_frame_field_flag;
93bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
94bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	int			frame_width;
95bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	int			frame_height;
96bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
97bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8	 	frame_cropping_flag;
98bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	int 		frame_crop_rect_left_offset;
99bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	int			frame_crop_rect_right_offset;
100bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	int 		frame_crop_rect_top_offset;
101bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	int 		frame_crop_rect_bottom_offset;
102bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
103bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8	 	vui_parameters_present_flag;
104bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	/* aspect ratio */
105bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  		aspect_ratio_info_present_flag;
106bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  		aspect_ratio_idc;
107bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint16		sar_width;
108bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint16		sar_height;
109bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
110bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	/* video fromat */
111bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8   	video_signal_type_present_flag;
112bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  		video_format;
113bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
114bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} vbp_codec_data_h264;
115bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
116bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct _vbp_slice_data_h264
117bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
118bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     uint8* buffer_addr;
119bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
120bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     uint32 slice_offset; /* slice data offset */
121bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
122bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     uint32 slice_size; /* slice data size */
123bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
124bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     VASliceParameterBufferH264 slc_parms;
125bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
126bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} vbp_slice_data_h264;
127bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
128bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
129bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee typedef struct _vbp_picture_data_h264
130bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee {
131bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     VAPictureParameterBufferH264* pic_parms;
132bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
133bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     uint32 num_slices;
134bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
135bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     vbp_slice_data_h264* slc_data;
136bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
137bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee } vbp_picture_data_h264;
138bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
139bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
140bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct _vbp_data_h264
141bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
142bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     /* rolling counter of buffers sent by vbp_parse */
143bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     uint32 buf_number;
144bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
145bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	 uint32 num_pictures;
146bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
147bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	 vbp_picture_data_h264* pic_data;
148bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
149bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     /**
150bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	 * do we need to send matrix to VA for each picture? If not, we need
151bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     * a flag indicating whether it is updated.
152bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	 */
153bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     VAIQMatrixBufferH264* IQ_matrix_buf;
154bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
155bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee     vbp_codec_data_h264* codec_data;
156bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
157bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} vbp_data_h264;
158bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
159bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/*
160bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * vc1 data structure
161bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
162bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct _vbp_codec_data_vc1
163bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
164bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	/* Sequence layer. */
165bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  PROFILE;
166bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  LEVEL;
167bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  POSTPROCFLAG;
168bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  PULLDOWN;
169bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  INTERLACE;
170bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  TFCNTRFLAG;
171bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  FINTERPFLAG;
172bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  PSF;
173bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
174bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	/* Entry point layer. */
175bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  BROKEN_LINK;
176bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  CLOSED_ENTRY;
177bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  PANSCAN_FLAG;
178bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  REFDIST_FLAG;
179bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  LOOPFILTER;
180bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  FASTUVMC;
181bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  EXTENDED_MV;
182bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  DQUANT;
183bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  VSTRANSFORM;
184bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  OVERLAP;
185bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  QUANTIZER;
186bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint16 CODED_WIDTH;
187bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint16 CODED_HEIGHT;
188bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  EXTENDED_DMV;
189bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  RANGE_MAPY_FLAG;
190bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  RANGE_MAPY;
191bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  RANGE_MAPUV_FLAG;
192bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  RANGE_MAPUV;
193bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
194bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	/* Others. */
195bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  RANGERED;
196bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  MAXBFRAMES;
197bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  MULTIRES;
198bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  SYNCMARKER;
199bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  RNDCTRL;
200bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  REFDIST;
201bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint16 widthMB;
202bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint16 heightMB;
203bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
204bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  INTCOMPFIELD;
205bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  LUMSCALE2;
206bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8  LUMSHIFT2;
207bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} vbp_codec_data_vc1;
208bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
209bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct _vbp_slice_data_vc1
210bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
211bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8 *buffer_addr;
212bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint32 slice_offset;
213bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint32 slice_size;
214bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VASliceParameterBufferVC1 slc_parms;     /* pointer to slice parms */
215bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} vbp_slice_data_vc1;
216bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
217bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
218bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct _vbp_picture_data_vc1
219bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
220bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint32 picture_is_skipped;                /* VC1_PTYPE_SKIPPED is PTYPE is skipped. */
221bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VAPictureParameterBufferVC1 *pic_parms;   /* current parsed picture header */
222bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint32 size_bitplanes;                    /* based on number of MBs */
223bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint8 *packed_bitplanes;                  /* contains up to three bitplanes packed for libVA */
224bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint32 num_slices;                        /* number of slices.  always at least one */
225bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	vbp_slice_data_vc1 *slc_data;             /* pointer to array of slice data */
226bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} vbp_picture_data_vc1;
227bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
228bd8388b4555645b3d29abc6a94c303638064d69awonjong.leetypedef struct _vbp_data_vc1
229bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
230bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint32 buf_number;                        /* rolling counter of buffers sent by vbp_parse */
231bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	vbp_codec_data_vc1 *se_data;              /* parsed SH/EPs */
232bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
233bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	uint32 num_pictures;
234bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
235bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	vbp_picture_data_vc1* pic_data;
236bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee} vbp_data_vc1;
237bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
238bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeenum _picture_type
239bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
240bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VC1_PTYPE_I,
241bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VC1_PTYPE_P,
242bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VC1_PTYPE_B,
243bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VC1_PTYPE_BI,
244bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VC1_PTYPE_SKIPPED
245bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee};
246bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
247bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeenum _vbp_parser_error
248bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
249bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VBP_OK,
250bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VBP_TYPE,
251bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VBP_LOAD,
252bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VBP_UNLOAD,
253bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VBP_INIT,
254bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VBP_DATA,
255bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VBP_DONE,
256bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VBP_GLIB,
257bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VBP_MEM,
258bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VBP_PARM,
259bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VBP_CXT,
260bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VBP_IMPL
261bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee};
262bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
263bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeenum _vbp_parser_type
264bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee{
265bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VBP_VC1,
266bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VBP_MPEG2,
267bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VBP_MPEG4,
268bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee	VBP_H264
269bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee};
270bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
271bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/*
272bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * open video bitstream parser to parse a specific media type.
273bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @param  parser_type: one of the types defined in #vbp_parser_type
274bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @param  hcontext: pointer to hold returned VBP context handle.
275bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @return VBP_OK on success, anything else on failure.
276bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
277bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
278bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeuint32 vbp_open(uint32 parser_type, Handle *hcontext);
279bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
280bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/*
281bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * close video bitstream parser.
282bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @param hcontext: VBP context handle.
283bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @returns VBP_OK on success, anything else on failure.
284bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
285bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
286bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeuint32 vbp_close(Handle hcontext);
287bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
288bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/*
289bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * parse bitstream.
290bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @param hcontext: handle to VBP context.
291bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @param data: pointer to bitstream buffer.
292bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @param size: size of bitstream buffer.
293bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @param init_flag: 1 if buffer contains bitstream configuration data, 0 otherwise.
294bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @return VBP_OK on success, anything else on failure.
295bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
296bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
297bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeuint32 vbp_parse(Handle hcontext, uint8 *data, uint32 size, uint8 init_data_flag);
298bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
299bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/*
300bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * query parsing result.
301bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @param hcontext: handle to VBP context.
302bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @param data: pointer to hold a data blob that contains parsing result.
303bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * 				Structure of data blob is determined by the media type.
304bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @return VBP_OK on success, anything else on failure.
305bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
306bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
307bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeuint32 vbp_query(Handle hcontext, void **data);
308bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
309bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
310bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee/*
311bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * flush any un-parsed bitstream.
312bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @param hcontext: handle to VBP context.
313bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee * @returns VBP_OK on success, anything else on failure.
314bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee *
315bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee */
316bd8388b4555645b3d29abc6a94c303638064d69awonjong.leeuint32 vbp_flush(Handle hcontent);
317bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee
318bd8388b4555645b3d29abc6a94c303638064d69awonjong.lee#endif /* VBP_LOADER_H */
319