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