1437b3eda28a4bf098efa80598cab67f190275266Fei Jiang/*
2f91c8768670386683a281cc39141e21bdda9c97fKun Wang * Copyright (c) 2011 Intel Corporation. All Rights Reserved.
33f3d1e8746d2b793c982ac19a73061e006b1b178Kun Wang * Copyright (c) Imagination Technologies Limited, UK
4437b3eda28a4bf098efa80598cab67f190275266Fei Jiang *
5f91c8768670386683a281cc39141e21bdda9c97fKun Wang * Permission is hereby granted, free of charge, to any person obtaining a
6f91c8768670386683a281cc39141e21bdda9c97fKun Wang * copy of this software and associated documentation files (the
7f91c8768670386683a281cc39141e21bdda9c97fKun Wang * "Software"), to deal in the Software without restriction, including
8f91c8768670386683a281cc39141e21bdda9c97fKun Wang * without limitation the rights to use, copy, modify, merge, publish,
9f91c8768670386683a281cc39141e21bdda9c97fKun Wang * distribute, sub license, and/or sell copies of the Software, and to
10f91c8768670386683a281cc39141e21bdda9c97fKun Wang * permit persons to whom the Software is furnished to do so, subject to
11f91c8768670386683a281cc39141e21bdda9c97fKun Wang * the following conditions:
123f3d1e8746d2b793c982ac19a73061e006b1b178Kun Wang *
13f91c8768670386683a281cc39141e21bdda9c97fKun Wang * The above copyright notice and this permission notice (including the
14f91c8768670386683a281cc39141e21bdda9c97fKun Wang * next paragraph) shall be included in all copies or substantial portions
15f91c8768670386683a281cc39141e21bdda9c97fKun Wang * of the Software.
163f3d1e8746d2b793c982ac19a73061e006b1b178Kun Wang *
17f91c8768670386683a281cc39141e21bdda9c97fKun Wang * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18f91c8768670386683a281cc39141e21bdda9c97fKun Wang * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19f91c8768670386683a281cc39141e21bdda9c97fKun Wang * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
20f91c8768670386683a281cc39141e21bdda9c97fKun Wang * IN NO EVENT SHALL PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR
21f91c8768670386683a281cc39141e21bdda9c97fKun Wang * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22f91c8768670386683a281cc39141e21bdda9c97fKun Wang * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23f91c8768670386683a281cc39141e21bdda9c97fKun Wang * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun *
25bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang * Authors:
26bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang *    Waldo Bastian <waldo.bastian@intel.com>
2706c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng *    Li Zeng <li.zeng@intel.com>
28bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang *
29bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang */
30437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
31437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#include "pnw_MPEG4.h"
3206c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng#include "tng_vld_dec.h"
33437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#include "psb_def.h"
34c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang#include "psb_drv_debug.h"
35437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
36437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#include "hwdefs/reg_io2.h"
37437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#include "hwdefs/msvdx_offsets.h"
38437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#include "hwdefs/msvdx_cmds_io2.h"
39437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#include "hwdefs/msvdx_vec_reg_io2.h"
40437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#include "hwdefs/msvdx_vec_mpeg4_reg_io2.h"
41437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#include "hwdefs/dxva_fw_ctrl.h"
42437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
43437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#include <stdlib.h>
44437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#include <stdint.h>
45437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#include <string.h>
46437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
47437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define GET_SURFACE_INFO_is_defined(psb_surface) ((int) (psb_surface->extra_info[0]))
48437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define SET_SURFACE_INFO_is_defined(psb_surface, val) psb_surface->extra_info[0] = (uint32_t) val;
49437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define GET_SURFACE_INFO_picture_structure(psb_surface) (psb_surface->extra_info[1])
50437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define SET_SURFACE_INFO_picture_structure(psb_surface, val) psb_surface->extra_info[1] = val;
51437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define GET_SURFACE_INFO_picture_coding_type(psb_surface) ((int) (psb_surface->extra_info[2]))
52437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define SET_SURFACE_INFO_picture_coding_type(psb_surface, val) psb_surface->extra_info[2] = (uint32_t) val;
53437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
54437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define SLICEDATA_BUFFER_TYPE(type) ((type==VASliceDataBufferType)?"VASliceDataBufferType":"VAProtectedSliceDataBufferType")
55437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
56437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define PIXELS_TO_MB(x)    ((x + 15) / 16)
57437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
58437b3eda28a4bf098efa80598cab67f190275266Fei Jiang/*
59437b3eda28a4bf098efa80598cab67f190275266Fei Jiang * Frame types - format dependant!
60437b3eda28a4bf098efa80598cab67f190275266Fei Jiang */
61437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define PICTURE_CODING_I    0x00
62437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define PICTURE_CODING_P    0x01
63437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define PICTURE_CODING_B    0x02
64437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define PICTURE_CODING_S    0x03
65437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
66437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
67437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define FE_STATE_BUFFER_SIZE    4096
68bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang#define FE_STATE_SAVE_SIZE      ( 0xB40 - 0x700 )
69437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
70437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define MPEG4_PROFILE_SIMPLE    0
71437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define MPEG4_PROFILE_ASP    2
72437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
73bf7467cc67edc15c630f8b32795f9779ede68da1Gu, Wangyi#define HW_SUPPORTED_MAX_PICTURE_WIDTH_MPEG4   1920
74bf7467cc67edc15c630f8b32795f9779ede68da1Gu, Wangyi#define HW_SUPPORTED_MAX_PICTURE_HEIGHT_MPEG4  1088
75bf7467cc67edc15c630f8b32795f9779ede68da1Gu, Wangyi#define HW_SUPPORTED_MAX_PICTURE_WIDTH_H263    720
76bf7467cc67edc15c630f8b32795f9779ede68da1Gu, Wangyi#define HW_SUPPORTED_MAX_PICTURE_HEIGHT_H263   576
77bf7467cc67edc15c630f8b32795f9779ede68da1Gu, Wangyi
78437b3eda28a4bf098efa80598cab67f190275266Fei Jiang/* Table V2-2 ISO/IEC 14496-2:2001(E) - sprite enable codewords */
79dc1209519284865899ca8d990b3a2c7dbca8ae08wangkuntypedef enum {
80437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    SPRITE_NOT_USED = 0,
81437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    STATIC,
82437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    GMC,
83437b3eda28a4bf098efa80598cab67f190275266Fei Jiang} MPEG4_eSpriteEnable;
84437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
85437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
86437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define MAX_QUANT_TABLES    (2) /* only 2 tables for 4:2:0 decode */
87437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
88bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wangstatic int scan0[64] = { // spec, fig 7-2
89bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang    /*u 0  .....                   7*/
90437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    0,  1,  5,  6,  14, 15, 27, 28,  /* v = 0 */
91437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    2,  4,  7,  13, 16, 26, 29, 42,
92437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    3,  8,  12, 17, 25, 30, 41, 43,
93437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    9,  11, 18, 24, 31, 40, 44, 53,
94437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    10, 19, 23, 32, 39, 45, 52, 54,
95437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    20, 22, 33, 38, 46, 51, 55, 60,
96437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    21, 34, 37, 47, 50, 56, 59, 61,
97437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    35, 36, 48, 49, 57, 58, 62, 63  /* v = 7 */
98437b3eda28a4bf098efa80598cab67f190275266Fei Jiang};
99dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
100dc1209519284865899ca8d990b3a2c7dbca8ae08wangkuntypedef enum {
101437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    NONINTRA_LUMA_Q = 0,
102437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    INTRA_LUMA_Q = 1
103437b3eda28a4bf098efa80598cab67f190275266Fei Jiang} QUANT_IDX;
104437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
105437b3eda28a4bf098efa80598cab67f190275266Fei Jiang/************************************************************************************/
106437b3eda28a4bf098efa80598cab67f190275266Fei Jiang/*                Variable length codes in 'packed' format                            */
107437b3eda28a4bf098efa80598cab67f190275266Fei Jiang/************************************************************************************/
108437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
109437b3eda28a4bf098efa80598cab67f190275266Fei Jiang/* Format is: opcode, width, symbol. All VLC tables are concatenated.                 */
110dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun#define VLC_PACK(a,b,c)         ( ( (a) << 12 ) | ( (b) << 9  ) | (c) )
111cecb10be5449aa74cd1d9a2eb41c2a6a76d9ee79ywanstatic const IMG_UINT16 gaui16mpeg4VlcTableDataPacked[] =
112751400dde1eac64dd41c7de33fcddf8a939e4ab2hding{
113751400dde1eac64dd41c7de33fcddf8a939e4ab2hding/* B6_mcbpc_i_s_vops_piece.out */
114751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 12 ) ,
115751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 7 ) ,
116751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 13 ) ,
117751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 16 ) ,
118751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 9 ) ,
119751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 5 , 17 ) ,
120751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 2 , 1 ) ,
121751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 2 , 0 ) ,
122751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 2 , 0 ) ,
123751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 36 ) ,
124751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 2 , 0 ) ,
125751400dde1eac64dd41c7de33fcddf8a939e4ab2hding/* B7_mcbpc_p_s_vops_update.out */
126751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 0 ) ,
127751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 6 ) ,
128751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 7 ) ,
129751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 8 ) ,
130751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 10 ) ,
131751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 13 ) ,
132751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 2 , 15 ) ,
133751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 8 ) ,
134751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 4 ) ,
135751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 2 ) ,
136751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 1 ) ,
137751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 12 ) ,
138751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 3 ) ,
139751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 16 ) ,
140751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 10 ) ,
141751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 9 ) ,
142751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 6 ) ,
143751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 5 ) ,
144751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 15 ) ,
145751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 11 ) ,
146751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 13 ) ,
147751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 2 , 0 ) ,
148751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 36 ) ,
149751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 19 ) ,
150751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 18 ) ,
151751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 17 ) ,
152751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 7 ) ,
153751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 14 ) ,
154751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 14 ) ,
155751400dde1eac64dd41c7de33fcddf8a939e4ab2hding/* B8_cbpy_intra.out */
156751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 1 , 1 , 16 ) ,
157751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 18 ) ,
158751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 19 ) ,
159751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 0 ) ,
160751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 12 ) ,
161751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 10 ) ,
162751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 14 ) ,
163751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 5 ) ,
164751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 13 ) ,
165751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 3 ) ,
166751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 11 ) ,
167751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 7 ) ,
168751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 15 ) ,
169751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 15 ) ,
170751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 15 ) ,
171751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 15 ) ,
172751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
173751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 6 ) ,
174751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 9 ) ,
175751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 8 ) ,
176751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 4 ) ,
177751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 2 ) ,
178751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 1 ) ,
179751400dde1eac64dd41c7de33fcddf8a939e4ab2hding/* B8_cbpy_inter.out */
180751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 1 , 1 , 16 ) ,
181751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 18 ) ,
182751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 6 , 0 , 6 ) ,
183751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 15 ) ,
184751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 3 ) ,
185751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 5 ) ,
186751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 1 ) ,
187751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 10 ) ,
188751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 2 ) ,
189751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 12 ) ,
190751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 4 ) ,
191751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 8 ) ,
192751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 0 ) ,
193751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 0 ) ,
194751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 0 ) ,
195751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 0 ) ,
196751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
197751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 9 ) ,
198751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 6 ) ,
199751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 7 ) ,
200751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 11 ) ,
201751400dde1eac64dd41c7de33fcddf8a939e4ab2hding/* B3_modb.out */
202751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 0 ) ,
203751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 1 ) ,
204751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 2 ) ,
205751400dde1eac64dd41c7de33fcddf8a939e4ab2hding/* B4_mb_type.out */
206751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 0 ) ,
207751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 1 ) ,
208751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 2 ) ,
209751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 3 ) ,
210751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 3 , 0 ) ,
211751400dde1eac64dd41c7de33fcddf8a939e4ab2hding/* 6_33_dbquant.out */
212751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 0 ) ,
213751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 6 ) ,
214751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 2 ) ,
215751400dde1eac64dd41c7de33fcddf8a939e4ab2hding/* B12_mvd.out */
216751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 0 ) ,
217751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 1 ) ,
218751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 2 ) ,
219751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 3 ) ,
220751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 3 ) ,
221751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 3 , 5 ) ,
222751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 3 , 11 ) ,
223751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 4 ) ,
224751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 5 ) ,
225751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 6 ) ,
226751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 7 ) ,
227751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 4 ) ,
228751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 10 ) ,
229751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 11 ) ,
230751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 12 ) ,
231751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 9 ) ,
232751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 8 ) ,
233751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 1 , 1 , 16 ) ,
234751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 18 ) ,
235751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 19 ) ,
236751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 20 ) ,
237751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 24 ) ,
238751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 23 ) ,
239751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 22 ) ,
240751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 21 ) ,
241751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 20 ) ,
242751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 19 ) ,
243751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 18 ) ,
244751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 17 ) ,
245751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 16 ) ,
246751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 15 ) ,
247751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 14 ) ,
248751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 13 ) ,
249751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
250751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 32 ) ,
251751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 31 ) ,
252751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 30 ) ,
253751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 29 ) ,
254751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 28 ) ,
255751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 27 ) ,
256751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 26 ) ,
257751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 25 ) ,
258751400dde1eac64dd41c7de33fcddf8a939e4ab2hding/* B13_dct_dc_size_luminance.out */
259751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 5 , 4 ) ,
260751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 14 ) ,
261751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 2 ) ,
262751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 1 ) ,
263751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 4 ) ,
264751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 5 ) ,
265751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 6 ) ,
266751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 7 ) ,
267751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 4 , 8 ) ,
268751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 5 , 9 ) ,
269751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 2 , 1 ) ,
270751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 10 ) ,
271751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 11 ) ,
272751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 12 ) ,
273751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 2 , 0 ) ,
274751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 3 ) ,
275751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 0 ) ,
276751400dde1eac64dd41c7de33fcddf8a939e4ab2hding/* B14_dct_dc_size_chrominance.out */
277751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 5 , 4 ) ,
278751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 2 ) ,
279751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 1 ) ,
280751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 0 ) ,
281751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 3 ) ,
282751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 4 ) ,
283751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 5 ) ,
284751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 6 ) ,
285751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 4 , 7 ) ,
286751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 5 , 8 ) ,
287751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 3 , 1 ) ,
288751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 9 ) ,
289751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 10 ) ,
290751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 11 ) ,
291751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 12 ) ,
292751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 3 , 0 ) ,
293751400dde1eac64dd41c7de33fcddf8a939e4ab2hding/* B16_intra_tcoeff.out */
294751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 16 ) ,
295751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 3 , 77 ) ,
296751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 2 , 96 ) ,
297751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 103 ) ,
298751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 106 ) ,
299751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 108 ) ,
300751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 1 , 250 ) ,
301751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 254 ) ,
302751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 508 ) ,
303751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 508 ) ,
304751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 509 ) ,
305751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 509 ) ,
306751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 506 ) ,
307751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 507 ) ,
308751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 222 ) ,
309751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 252 ) ,
310751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 3 , 3 ) ,
311751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 18 ) ,
312751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 3 , 44 ) ,
313751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 1 , 237 ) ,
314751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 433 ) ,
315751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 434 ) ,
316751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 435 ) ,
317751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 436 ) ,
318751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 437 ) ,
319751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 221 ) ,
320751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 251 ) ,
321751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 435 ) ,
322751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 436 ) ,
323751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 29 ) ,
324751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 61 ) ,
325751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 93 ) ,
326751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 156 ) ,
327751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 188 ) ,
328751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 217 ) ,
329751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 255 ) ,
330751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 3 , 2 ) ,
331751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 2 , 17 ) ,
332751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 230 ) ,
333751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 229 ) ,
334751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 228 ) ,
335751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 214 ) ,
336751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 60 ) ,
337751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 213 ) ,
338751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 186 ) ,
339751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 28 ) ,
340751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 433 ) ,
341751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 247 ) ,
342751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 93 ) ,
343751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 61 ) ,
344751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 430 ) ,
345751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 429 ) ,
346751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 428 ) ,
347751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 427 ) ,
348751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 232 ) ,
349751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 231 ) ,
350751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 215 ) ,
351751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 374 ) ,
352751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 157 ) ,
353751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 125 ) ,
354751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 432 ) ,
355751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 431 ) ,
356751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 3 , 0 ) ,
357751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 3 , 0 ) ,
358751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 1 , 248 ) ,
359751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 1 , 233 ) ,
360751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 189 ) ,
361751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 220 ) ,
362751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 250 ) ,
363751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 434 ) ,
364751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 92 ) ,
365751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 375 ) ,
366751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 124 ) ,
367751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 155 ) ,
368751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 187 ) ,
369751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 216 ) ,
370751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 235 ) ,
371751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 236 ) ,
372751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 16 ) ,
373751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 17 ) ,
374751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 1 , 241 ) ,
375751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 439 ) ,
376751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 30 ) ,
377751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 62 ) ,
378751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 252 ) ,
379751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 437 ) ,
380751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 438 ) ,
381751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 439 ) ,
382751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 438 ) ,
383751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 157 ) ,
384751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 219 ) ,
385751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 243 ) ,
386751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 244 ) ,
387751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 245 ) ,
388751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 218 ) ,
389751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 239 ) ,
390751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 125 ) ,
391751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 240 ) ,
392751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 126 ) ,
393751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 158 ) ,
394751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 62 ) ,
395751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 94 ) ,
396751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 30 ) ,
397751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 189 ) ,
398751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 220 ) ,
399751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 246 ) ,
400751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 253 ) ,
401751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 94 ) ,
402751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 190 ) ,
403751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 222 ) ,
404751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 1 , 247 ) ,
405751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 158 ) ,
406751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 126 ) ,
407751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 190 ) ,
408751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 249 ) ,
409751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 221 ) ,
410751400dde1eac64dd41c7de33fcddf8a939e4ab2hding/* B17_inter_tcoeff.out */
411751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 4 , 16 ) ,
412751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 3 , 68 ) ,
413751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 2 , 84 ) ,
414751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 91 ) ,
415751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 1 , 1 , 94 ) ,
416751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 96 ) ,
417751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 98 ) ,
418751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 254 ) ,
419751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 508 ) ,
420751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 508 ) ,
421751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 509 ) ,
422751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 2 , 509 ) ,
423751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 444 ) ,
424751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 445 ) ,
425751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 190 ) ,
426751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 253 ) ,
427751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 3 , 6 ) ,
428751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 14 ) ,
429751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 2 , 40 ) ,
430751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 2 , 419 ) ,
431751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 46 ) ,
432751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 4 , 0 ) ,
433751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 2 , 5 ) ,
434751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 2 , 426 ) ,
435751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 1 , 424 ) ,
436751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 423 ) ,
437751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 1 , 246 ) ,
438751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 2 , 427 ) ,
439751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 1 , 425 ) ,
440751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 253 ) ,
441751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 430 ) ,
442751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 255 ) ,
443751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 3 , 2 ) ,
444751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 2 , 17 ) ,
445751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 217 ) ,
446751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 187 ) ,
447751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 124 ) ,
448751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 92 ) ,
449751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 60 ) ,
450751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 373 ) ,
451751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 422 ) ,
452751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 421 ) ,
453751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 414 ) ,
454751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 413 ) ,
455751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 412 ) ,
456751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 411 ) ,
457751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 410 ) ,
458751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 409 ) ,
459751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 408 ) ,
460751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 407 ) ,
461751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 243 ) ,
462751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 218 ) ,
463751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 424 ) ,
464751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 423 ) ,
465751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 418 ) ,
466751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 417 ) ,
467751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 416 ) ,
468751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 415 ) ,
469751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 374 ) ,
470751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 375 ) ,
471751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 29 ) ,
472751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 61 ) ,
473751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 93 ) ,
474751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 156 ) ,
475751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 188 ) ,
476751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 219 ) ,
477751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 1 , 244 ) ,
478751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 252 ) ,
479751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 221 ) ,
480751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 2 , 5 ) ,
481751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 2 , 432 ) ,
482751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 11 ) ,
483751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 12 ) ,
484751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 1 , 431 ) ,
485751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 436 ) ,
486751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 437 ) ,
487751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 438 ) ,
488751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 433 ) ,
489751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 434 ) ,
490751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 189 ) ,
491751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 220 ) ,
492751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 250 ) ,
493751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 1 , 248 ) ,
494751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 431 ) ,
495751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 125 ) ,
496751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 157 ) ,
497751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 439 ) ,
498751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 30 ) ,
499751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 62 ) ,
500751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 94 ) ,
501751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 435 ) ,
502751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 436 ) ,
503751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 437 ) ,
504751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 251 ) ,
505751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 126 ) ,
506751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 158 ) ,
507751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 190 ) ,
508751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 222 ) ,
509751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 1 , 438 ) ,
510751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 30 ) ,
511751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 62 ) ,
512751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 94 ) ,
513751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 252 ) ,
514751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 221 ) ,
515751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 126 ) ,
516751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 158 ) ,
517751400dde1eac64dd41c7de33fcddf8a939e4ab2hding/* B23_rvlc_tcoeff_0.out */
518751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 255 ) ,
519751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 222 ) ,
520751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 14 ) ,
521751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 15 ) ,
522751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 44 ) ,
523751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 45 ) ,
524751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 74 ) ,
525751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 2 , 103 ) ,
526751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 230 ) ,
527751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 256 ) ,
528751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 252 ) ,
529751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 254 ) ,
530751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 508 ) ,
531751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 509 ) ,
532751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 506 ) ,
533751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 507 ) ,
534751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 190 ) ,
535751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 158 ) ,
536751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 126 ) ,
537751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 94 ) ,
538751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
539751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
540751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 62 ) ,
541751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 30 ) ,
542751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 439 ) ,
543751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 438 ) ,
544751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
545751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
546751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 437 ) ,
547751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 93 ) ,
548751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 436 ) ,
549751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 435 ) ,
550751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
551751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
552751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 434 ) ,
553751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 374 ) ,
554751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 373 ) ,
555751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 123 ) ,
556751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
557751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
558751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 433 ) ,
559751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 432 ) ,
560751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 431 ) ,
561751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 430 ) ,
562751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
563751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
564751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 228 ) ,
565751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 150 ) ,
566751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 221 ) ,
567751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 251 ) ,
568751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 250 ) ,
569751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 249 ) ,
570751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
571751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
572751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 189 ) ,
573751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 220 ) ,
574751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 157 ) ,
575751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 125 ) ,
576751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
577751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
578751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 188 ) ,
579751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 156 ) ,
580751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 61 ) ,
581751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 29 ) ,
582751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
583751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
584751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 92 ) ,
585751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 60 ) ,
586751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 91 ) ,
587751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 59 ) ,
588751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
589751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
590751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 372 ) ,
591751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 311 ) ,
592751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 429 ) ,
593751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 503 ) ,
594751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
595751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
596751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 58 ) ,
597751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 26 ) ,
598751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 158 ) ,
599751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 126 ) ,
600751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
601751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
602751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 248 ) ,
603751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 30 ) ,
604751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 219 ) ,
605751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 218 ) ,
606751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
607751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
608751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 217 ) ,
609751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 245 ) ,
610751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 375 ) ,
611751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 124 ) ,
612751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
613751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
614751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 28 ) ,
615751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 155 ) ,
616751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 154 ) ,
617751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 122 ) ,
618751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
619751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
620751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 310 ) ,
621751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 27 ) ,
622751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 90 ) ,
623751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 121 ) ,
624751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
625751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
626751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 502 ) ,
627751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 371 ) ,
628751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 439 ) ,
629751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 438 ) ,
630751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 6 ) ,
631751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 7 ) ,
632751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 27 ) ,
633751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 28 ) ,
634751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 48 ) ,
635751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 2 , 68 ) ,
636751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 247 ) ,
637751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 246 ) ,
638751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 244 ) ,
639751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 221 ) ,
640751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
641751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
642751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 187 ) ,
643751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 216 ) ,
644751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 186 ) ,
645751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 185 ) ,
646751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
647751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
648751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 213 ) ,
649751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 237 ) ,
650751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 153 ) ,
651751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 184 ) ,
652751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
653751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 3 ) ,
654751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 89 ) ,
655751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 152 ) ,
656751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
657751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 218 ) ,
658751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 428 ) ,
659751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 253 ) ,
660751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 435 ) ,
661751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 432 ) ,
662751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 431 ) ,
663751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
664751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
665751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 243 ) ,
666751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 242 ) ,
667751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 215 ) ,
668751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 214 ) ,
669751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
670751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
671751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 236 ) ,
672751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 233 ) ,
673751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 183 ) ,
674751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 182 ) ,
675751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
676751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 3 ) ,
677751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 151 ) ,
678751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 181 ) ,
679751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
680751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 370 ) ,
681751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 188 ) ,
682751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 430 ) ,
683751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 429 ) ,
684751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
685751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
686751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 241 ) ,
687751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 426 ) ,
688751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 240 ) ,
689751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 239 ) ,
690751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
691751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
692751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 220 ) ,
693751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 157 ) ,
694751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 212 ) ,
695751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 235 ) ,
696751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
697751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 3 ) ,
698751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 180 ) ,
699751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 211 ) ,
700751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
701751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 405 ) ,
702751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 406 ) ,
703751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 425 ) ,
704751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 424 ) ,
705751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 6 ) ,
706751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 7 ) ,
707751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 18 ) ,
708751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 19 ) ,
709751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 27 ) ,
710751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 2 , 35 ) ,
711751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 238 ) ,
712751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 252 ) ,
713751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 125 ) ,
714751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 418 ) ,
715751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
716751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
717751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 234 ) ,
718751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 232 ) ,
719751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 210 ) ,
720751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 231 ) ,
721751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
722751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
723751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 404 ) ,
724751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 403 ) ,
725751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 189 ) ,
726751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 421 ) ,
727751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 417 ) ,
728751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 416 ) ,
729751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
730751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 3 ) ,
731751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 251 ) ,
732751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 93 ) ,
733751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
734751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 229 ) ,
735751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 230 ) ,
736751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 415 ) ,
737751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 414 ) ,
738751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
739751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 3 ) ,
740751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 61 ) ,
741751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 29 ) ,
742751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
743751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 219 ) ,
744751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 250 ) ,
745751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 2 , 4 ) ,
746751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 7 ) ,
747751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 374 ) ,
748751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 375 ) ,
749751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 2 , 0 ) ,
750751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 2 , 0 ) ,
751751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 409 ) ,
752751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 371 ) ,
753751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
754751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 372 ) ,
755751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 373 ) ,
756751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 4 ) ,
757751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 24 ) ,
758751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 94 ) ,
759751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 62 ) ,
760751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 4 ) ,
761751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 18 ) ,
762751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 434 ) ,
763751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 433 ) ,
764751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 4 ) ,
765751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 12 ) ,
766751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 423 ) ,
767751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 422 ) ,
768751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 1 , 1 , 4 ) ,
769751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 6 ) ,
770751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 413 ) ,
771751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 412 ) ,
772751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
773751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 408 ) ,
774751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 407 ) ,
775751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 411 ) ,
776751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 410 ) ,
777751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 420 ) ,
778751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 419 ) ,
779751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 428 ) ,
780751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 427 ) ,
781751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 437 ) ,
782751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 436 ) ,
783751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 222 ) ,
784751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 190 ) ,
785751400dde1eac64dd41c7de33fcddf8a939e4ab2hding/* B23_rvlc_tcoeff_1.out */
786751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 255 ) ,
787751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 253 ) ,
788751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 14 ) ,
789751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 15 ) ,
790751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 44 ) ,
791751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 45 ) ,
792751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 74 ) ,
793751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 2 , 103 ) ,
794751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 230 ) ,
795751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 256 ) ,
796751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 190 ) ,
797751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 254 ) ,
798751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 508 ) ,
799751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 509 ) ,
800751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 444 ) ,
801751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 3 , 445 ) ,
802751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 252 ) ,
803751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 158 ) ,
804751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 221 ) ,
805751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 62 ) ,
806751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
807751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
808751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 251 ) ,
809751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 189 ) ,
810751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 250 ) ,
811751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 249 ) ,
812751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
813751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
814751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 248 ) ,
815751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 219 ) ,
816751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 247 ) ,
817751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 246 ) ,
818751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
819751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
820751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 245 ) ,
821751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 244 ) ,
822751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 243 ) ,
823751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 216 ) ,
824751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
825751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
826751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 242 ) ,
827751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 241 ) ,
828751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 238 ) ,
829751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 237 ) ,
830751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
831751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
832751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 236 ) ,
833751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 152 ) ,
834751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 126 ) ,
835751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 94 ) ,
836751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 30 ) ,
837751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 439 ) ,
838751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
839751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
840751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 438 ) ,
841751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 437 ) ,
842751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 220 ) ,
843751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 157 ) ,
844751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
845751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
846751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 188 ) ,
847751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 93 ) ,
848751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 218 ) ,
849751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 156 ) ,
850751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
851751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
852751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 217 ) ,
853751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 187 ) ,
854751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 186 ) ,
855751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 155 ) ,
856751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
857751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
858751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 240 ) ,
859751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 239 ) ,
860751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 214 ) ,
861751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 213 ) ,
862751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
863751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
864751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 122 ) ,
865751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 27 ) ,
866751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 158 ) ,
867751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 126 ) ,
868751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
869751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
870751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 436 ) ,
871751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 30 ) ,
872751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 125 ) ,
873751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 435 ) ,
874751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
875751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
876751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 432 ) ,
877751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 431 ) ,
878751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 61 ) ,
879751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 29 ) ,
880751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
881751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
882751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 124 ) ,
883751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 92 ) ,
884751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 60 ) ,
885751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 28 ) ,
886751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
887751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
888751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 215 ) ,
889751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 154 ) ,
890751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 185 ) ,
891751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 184 ) ,
892751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
893751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
894751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 366 ) ,
895751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 410 ) ,
896751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 439 ) ,
897751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 438 ) ,
898751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 6 ) ,
899751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 7 ) ,
900751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 27 ) ,
901751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 28 ) ,
902751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 48 ) ,
903751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 2 , 68 ) ,
904751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 434 ) ,
905751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 433 ) ,
906751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 430 ) ,
907751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 221 ) ,
908751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
909751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
910751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 375 ) ,
911751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 374 ) ,
912751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 373 ) ,
913751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 426 ) ,
914751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
915751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
916751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 372 ) ,
917751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 420 ) ,
918751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 123 ) ,
919751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 91 ) ,
920751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
921751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 3 ) ,
922751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 153 ) ,
923751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 59 ) ,
924751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
925751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 218 ) ,
926751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 409 ) ,
927751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 253 ) ,
928751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 435 ) ,
929751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 432 ) ,
930751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 431 ) ,
931751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
932751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
933751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 429 ) ,
934751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 428 ) ,
935751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 425 ) ,
936751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 424 ) ,
937751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
938751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
939751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 419 ) ,
940751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 418 ) ,
941751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 311 ) ,
942751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 371 ) ,
943751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
944751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 3 ) ,
945751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 310 ) ,
946751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 370 ) ,
947751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
948751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 370 ) ,
949751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 188 ) ,
950751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 430 ) ,
951751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 429 ) ,
952751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
953751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
954751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 427 ) ,
955751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 426 ) ,
956751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 423 ) ,
957751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 422 ) ,
958751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
959751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
960751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 220 ) ,
961751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 157 ) ,
962751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 417 ) ,
963751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 416 ) ,
964751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
965751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 3 ) ,
966751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 369 ) ,
967751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 368 ) ,
968751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
969751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 405 ) ,
970751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 406 ) ,
971751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 425 ) ,
972751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 424 ) ,
973751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 6 ) ,
974751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 7 ) ,
975751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 18 ) ,
976751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 19 ) ,
977751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 27 ) ,
978751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 2 , 35 ) ,
979751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 421 ) ,
980751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 252 ) ,
981751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 125 ) ,
982751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 418 ) ,
983751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
984751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 3 ) ,
985751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 415 ) ,
986751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 414 ) ,
987751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 367 ) ,
988751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 413 ) ,
989751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
990751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
991751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 404 ) ,
992751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 403 ) ,
993751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 189 ) ,
994751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 421 ) ,
995751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 417 ) ,
996751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 416 ) ,
997751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
998751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 3 ) ,
999751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 251 ) ,
1000751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 93 ) ,
1001751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
1002751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 411 ) ,
1003751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 412 ) ,
1004751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 415 ) ,
1005751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 414 ) ,
1006751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 2 ) ,
1007751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 3 ) ,
1008751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 61 ) ,
1009751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 29 ) ,
1010751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
1011751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 219 ) ,
1012751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 250 ) ,
1013751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 2 , 4 ) ,
1014751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 2 , 1 , 7 ) ,
1015751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 374 ) ,
1016751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 375 ) ,
1017751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 2 , 0 ) ,
1018751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 2 , 0 ) ,
1019751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 409 ) ,
1020751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 371 ) ,
1021751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
1022751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 372 ) ,
1023751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 373 ) ,
1024751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 4 ) ,
1025751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 24 ) ,
1026751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 94 ) ,
1027751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 62 ) ,
1028751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 4 ) ,
1029751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 18 ) ,
1030751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 434 ) ,
1031751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 433 ) ,
1032751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 1 , 4 ) ,
1033751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 12 ) ,
1034751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 423 ) ,
1035751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 422 ) ,
1036751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 1 , 1 , 4 ) ,
1037751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 0 , 0 , 6 ) ,
1038751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 413 ) ,
1039751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 412 ) ,
1040751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 3 , 1 , 0 ) ,
1041751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 408 ) ,
1042751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 407 ) ,
1043751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 411 ) ,
1044751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 410 ) ,
1045751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 420 ) ,
1046751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 419 ) ,
1047751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 428 ) ,
1048751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 427 ) ,
1049751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 437 ) ,
1050751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 436 ) ,
1051751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 222 ) ,
1052751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 7 , 0 , 190 ) ,
1053751400dde1eac64dd41c7de33fcddf8a939e4ab2hding/* B29_MVDs.out */
1054751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 0 ) ,
1055751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 1 ) ,
1056751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 2 ) ,
1057751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 3 ) ,
1058751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 4 ) ,
1059751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 5 ) ,
1060751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 1 , 5 , 1 ) ,
1061751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 6 ) ,
1062751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 7 ) ,
1063751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 8 ) ,
1064751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 9 ) ,
1065751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 10 ) ,
1066751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 11 ) ,
1067751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 1 , 3 , 1 ) ,
1068751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 12 ) ,
1069751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 13 ) ,
1070751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 14 ) ,
1071751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 15 ) ,
1072751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 1 , 16 ) ,
1073751400dde1eac64dd41c7de33fcddf8a939e4ab2hding/* B30_MVDs.out */
1074751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 1 ) ,
1075751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 2 ) ,
1076751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 3 ) ,
1077751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 4 ) ,
1078751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 5 ) ,
1079751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 6 ) ,
1080751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 1 , 5 , 1 ) ,
1081751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 7 ) ,
1082751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 8 ) ,
1083751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 9 ) ,
1084751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 10 ) ,
1085751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 11 ) ,
1086751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 12 ) ,
1087751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 1 , 2 , 1 ) ,
1088751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 13 ) ,
1089751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 14 ) ,
1090751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 0 , 15 ) ,
1091751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 5 , 1 , 16 ) ,
1092751400dde1eac64dd41c7de33fcddf8a939e4ab2hding/* B31_conv_ratio.out */
1093751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 0 , 1 ) ,
1094751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 2 ) ,
1095751400dde1eac64dd41c7de33fcddf8a939e4ab2hding	VLC_PACK( 4 , 1 , 4 ) ,
1096437b3eda28a4bf098efa80598cab67f190275266Fei Jiang};
1097437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1098437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1099437b3eda28a4bf098efa80598cab67f190275266Fei Jiangstruct context_MPEG4_s {
110006c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    struct context_DEC_s dec_ctx;
1101437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    object_context_p obj_context; /* back reference */
1102437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1103437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t profile;
1104dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1105437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Picture parameters */
1106437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    VAPictureParameterBufferMPEG4 *pic_params;
1107437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    object_surface_p forward_ref_surface;
1108437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    object_surface_p backward_ref_surface;
1109437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1110437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t display_picture_width;    /* in pixels */
1111437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t display_picture_height;    /* in pixels */
1112437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1113437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t coded_picture_width;    /* in pixels */
1114437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t coded_picture_height;    /* in pixels */
1115437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1116437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t picture_width_mb;        /* in macroblocks */
1117437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t picture_height_mb;        /* in macroblocks */
1118437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t size_mb;                /* in macroblocks */
1119437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1120437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t FEControl;
1121437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t FE_SPS0;
1122437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t FE_VOP_PPS0;
1123437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t FE_VOP_SPS0;
1124437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t FE_PICSH_PPS0;
1125437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1126437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t BE_SPS0;
1127437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t BE_SPS1;
1128437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t BE_VOP_PPS0;
1129437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t BE_VOP_SPS0;
1130437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t BE_VOP_SPS1;
1131437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t BE_PICSH_PPS0;
1132dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1133437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* IQ Matrix */
1134437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t qmatrix_data[MAX_QUANT_TABLES][16];
1135437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    int load_non_intra_quant_mat;
1136437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    int load_intra_quant_mat;
1137437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1138437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* VLC packed data */
1139437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    struct psb_buffer_s vlc_packed_table;
1140437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1141437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* FE state buffer */
114206c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    struct psb_buffer_s preload_buffer;
1143437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1144751400dde1eac64dd41c7de33fcddf8a939e4ab2hding    struct psb_buffer_s *data_partition_buffer0;
1145751400dde1eac64dd41c7de33fcddf8a939e4ab2hding    struct psb_buffer_s *data_partition_buffer1;
114639eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng
114739eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    uint32_t field_type;
1148437b3eda28a4bf098efa80598cab67f190275266Fei Jiang};
1149437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1150437b3eda28a4bf098efa80598cab67f190275266Fei Jiangtypedef struct context_MPEG4_s *context_MPEG4_p;
1151437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1152437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define INIT_CONTEXT_MPEG4    context_MPEG4_p ctx = (context_MPEG4_p) obj_context->format_data;
1153437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1154437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define SURFACE(id)    ((object_surface_p) object_heap_lookup( &ctx->obj_context->driver_data->surface_heap, id ))
1155437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1156437b3eda28a4bf098efa80598cab67f190275266Fei Jiangstatic const char *psb__debug_picture_coding_str(unsigned char vop_coding_type)
1157437b3eda28a4bf098efa80598cab67f190275266Fei Jiang{
1158dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    switch (vop_coding_type) {
1159dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    case PICTURE_CODING_I:
1160dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        return ("PICTURE_CODING_I");
1161dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    case PICTURE_CODING_P:
1162dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        return ("PICTURE_CODING_P");
1163dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    case PICTURE_CODING_B:
1164dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        return ("PICTURE_CODING_B");
1165dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    case PICTURE_CODING_S:
1166dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        return ("PICTURE_CODING_S");
1167437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1168437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    return ("UNKNOWN!!!");
1169437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
1170437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1171437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1172437b3eda28a4bf098efa80598cab67f190275266Fei Jiangstatic void pnw_MPEG4_QueryConfigAttributes(
1173dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    VAProfile profile,
1174dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    VAEntrypoint entrypoint,
1175dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    VAConfigAttrib *attrib_list,
1176dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    int num_attribs)
1177437b3eda28a4bf098efa80598cab67f190275266Fei Jiang{
1178e37fcc2bab81380c933f7a5f771b8c88a6069122Cheng Yao    int i;
1179fb8a31899f22ce7676739d47bfce3095b2b919a2Cheng Yao    drv_debug_msg(VIDEO_DEBUG_GENERAL, "pnw_MPEG4_QueryConfigAttributes\n");
1180e37fcc2bab81380c933f7a5f771b8c88a6069122Cheng Yao
1181e37fcc2bab81380c933f7a5f771b8c88a6069122Cheng Yao    for (i = 0; i < num_attribs; i++) {
1182e37fcc2bab81380c933f7a5f771b8c88a6069122Cheng Yao        switch (attrib_list[i].type) {
1183e37fcc2bab81380c933f7a5f771b8c88a6069122Cheng Yao        case VAConfigAttribMaxPictureWidth:
1184bf7467cc67edc15c630f8b32795f9779ede68da1Gu, Wangyi            if (entrypoint == VAEntrypointVLD) {
1185bf7467cc67edc15c630f8b32795f9779ede68da1Gu, Wangyi                if (profile == VAProfileMPEG4AdvancedSimple)
1186bf7467cc67edc15c630f8b32795f9779ede68da1Gu, Wangyi                    attrib_list[i].value = HW_SUPPORTED_MAX_PICTURE_WIDTH_MPEG4;
1187bf7467cc67edc15c630f8b32795f9779ede68da1Gu, Wangyi                else if(profile == VAProfileH263Baseline)
1188bf7467cc67edc15c630f8b32795f9779ede68da1Gu, Wangyi                    attrib_list[i].value = HW_SUPPORTED_MAX_PICTURE_WIDTH_H263;
1189bf7467cc67edc15c630f8b32795f9779ede68da1Gu, Wangyi                else
1190bf7467cc67edc15c630f8b32795f9779ede68da1Gu, Wangyi                    attrib_list[i].value = VA_ATTRIB_NOT_SUPPORTED;
1191bf7467cc67edc15c630f8b32795f9779ede68da1Gu, Wangyi            }
1192e37fcc2bab81380c933f7a5f771b8c88a6069122Cheng Yao            else
1193e37fcc2bab81380c933f7a5f771b8c88a6069122Cheng Yao                attrib_list[i].value = VA_ATTRIB_NOT_SUPPORTED;
1194e37fcc2bab81380c933f7a5f771b8c88a6069122Cheng Yao            break;
1195e37fcc2bab81380c933f7a5f771b8c88a6069122Cheng Yao        case VAConfigAttribMaxPictureHeight:
1196bf7467cc67edc15c630f8b32795f9779ede68da1Gu, Wangyi            if (entrypoint == VAEntrypointVLD) {
1197bf7467cc67edc15c630f8b32795f9779ede68da1Gu, Wangyi                if (profile == VAProfileMPEG4AdvancedSimple)
1198bf7467cc67edc15c630f8b32795f9779ede68da1Gu, Wangyi                    attrib_list[i].value = HW_SUPPORTED_MAX_PICTURE_HEIGHT_MPEG4;
1199bf7467cc67edc15c630f8b32795f9779ede68da1Gu, Wangyi                else if(profile == VAProfileH263Baseline)
1200bf7467cc67edc15c630f8b32795f9779ede68da1Gu, Wangyi                    attrib_list[i].value = HW_SUPPORTED_MAX_PICTURE_HEIGHT_H263;
1201bf7467cc67edc15c630f8b32795f9779ede68da1Gu, Wangyi            }
1202e37fcc2bab81380c933f7a5f771b8c88a6069122Cheng Yao            else
1203e37fcc2bab81380c933f7a5f771b8c88a6069122Cheng Yao                attrib_list[i].value = VA_ATTRIB_NOT_SUPPORTED;
1204e37fcc2bab81380c933f7a5f771b8c88a6069122Cheng Yao            break;
1205e37fcc2bab81380c933f7a5f771b8c88a6069122Cheng Yao        default:
1206e37fcc2bab81380c933f7a5f771b8c88a6069122Cheng Yao            break;
1207e37fcc2bab81380c933f7a5f771b8c88a6069122Cheng Yao        }
1208e37fcc2bab81380c933f7a5f771b8c88a6069122Cheng Yao    }
1209437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
1210437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1211437b3eda28a4bf098efa80598cab67f190275266Fei Jiangstatic VAStatus pnw_MPEG4_ValidateConfig(
1212dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    object_config_p obj_config)
1213437b3eda28a4bf098efa80598cab67f190275266Fei Jiang{
1214437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    int i;
1215437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Check all attributes */
1216dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    for (i = 0; i < obj_config->attrib_count; i++) {
1217dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        switch (obj_config->attrib_list[i].type) {
1218dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        case VAConfigAttribRTFormat:
1219dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun            /* Ignore */
1220dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun            break;
1221dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1222dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        default:
1223dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun            return VA_STATUS_ERROR_ATTR_NOT_SUPPORTED;
1224437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        }
1225437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1226437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1227437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    return VA_STATUS_SUCCESS;
1228437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
1229437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1230437b3eda28a4bf098efa80598cab67f190275266Fei Jiangstatic VAStatus psb__MPEG4_check_legal_picture(object_context_p obj_context, object_config_p obj_config)
1231437b3eda28a4bf098efa80598cab67f190275266Fei Jiang{
1232437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    VAStatus vaStatus = VA_STATUS_SUCCESS;
1233437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
12346d37ae34fcae80f2e898b61e2506ed8e887bd16anguo    CHECK_CONTEXT(obj_context);
1235437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
12366d37ae34fcae80f2e898b61e2506ed8e887bd16anguo    CHECK_CONFIG(obj_config);
1237437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1238437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* MSVDX decode capability for MPEG4:
1239437b3eda28a4bf098efa80598cab67f190275266Fei Jiang     *     SP@L3
1240437b3eda28a4bf098efa80598cab67f190275266Fei Jiang     *     ASP@L5
1241437b3eda28a4bf098efa80598cab67f190275266Fei Jiang     *
1242437b3eda28a4bf098efa80598cab67f190275266Fei Jiang     * Refer to the "MSVDX MPEG4 decode capability" table of "Poulsbo Media Software Overview".
1243437b3eda28a4bf098efa80598cab67f190275266Fei Jiang     */
1244dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    switch (obj_config->profile) {
1245dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    case VAProfileMPEG4Simple:
1246dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    case VAProfileMPEG4AdvancedSimple:
1247dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        if ((obj_context->picture_width <= 0) || (obj_context->picture_height <= 0)) {
1248dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun            vaStatus = VA_STATUS_ERROR_RESOLUTION_NOT_SUPPORTED;
1249dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        }
1250dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        break;
1251437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1252dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    default:
1253dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        vaStatus = VA_STATUS_ERROR_UNSUPPORTED_PROFILE;
1254dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        break;
1255437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1256437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1257437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    return vaStatus;
1258437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
1259437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1260437b3eda28a4bf098efa80598cab67f190275266Fei Jiangstatic void pnw_MPEG4_DestroyContext(object_context_p obj_context);
126106c7c30796be2e6b18a6263956a0ca308616ecdeLi Zengstatic void psb__MPEG4_process_slice_data(context_DEC_p dec_ctx, VASliceParameterBufferBase *vld_slice_param);
126206c7c30796be2e6b18a6263956a0ca308616ecdeLi Zengstatic void psb__MPEG4_end_slice(context_DEC_p dec_ctx);
126306c7c30796be2e6b18a6263956a0ca308616ecdeLi Zengstatic void psb__MPEG4_begin_slice(context_DEC_p dec_ctx, VASliceParameterBufferBase *vld_slice_param);
126406c7c30796be2e6b18a6263956a0ca308616ecdeLi Zengstatic VAStatus pnw_MPEG4_process_buffer(context_DEC_p dec_ctx, object_buffer_p buffer);
1265437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1266437b3eda28a4bf098efa80598cab67f190275266Fei Jiangstatic VAStatus pnw_MPEG4_CreateContext(
1267dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    object_context_p obj_context,
1268dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    object_config_p obj_config)
1269437b3eda28a4bf098efa80598cab67f190275266Fei Jiang{
1270437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    VAStatus vaStatus = VA_STATUS_SUCCESS;
1271437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    context_MPEG4_p ctx;
1272437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Validate flag */
1273437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Validate picture dimensions */
1274437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    vaStatus = psb__MPEG4_check_legal_picture(obj_context, obj_config);
12756d37ae34fcae80f2e898b61e2506ed8e887bd16anguo    CHECK_VASTATUS();
1276dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
12772befccec034c13d34746a9e87149889d59ac767bFei Jiang    ctx = (context_MPEG4_p) calloc(1, sizeof(struct context_MPEG4_s));
12786d37ae34fcae80f2e898b61e2506ed8e887bd16anguo    CHECK_ALLOCATION(ctx);
12796d37ae34fcae80f2e898b61e2506ed8e887bd16anguo
1280437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    obj_context->format_data = (void*) ctx;
1281437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->obj_context = obj_context;
1282437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->pic_params = NULL;
1283437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->load_non_intra_quant_mat = FALSE;
1284437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->load_intra_quant_mat = FALSE;
1285437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
128606c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    ctx->dec_ctx.begin_slice = psb__MPEG4_begin_slice;
128706c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    ctx->dec_ctx.process_slice = psb__MPEG4_process_slice_data;
128806c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    ctx->dec_ctx.end_slice = psb__MPEG4_end_slice;
128906c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    ctx->dec_ctx.process_buffer = pnw_MPEG4_process_buffer;
1290437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1291751400dde1eac64dd41c7de33fcddf8a939e4ab2hding    ctx->data_partition_buffer0 = NULL;
1292751400dde1eac64dd41c7de33fcddf8a939e4ab2hding    ctx->data_partition_buffer1 = NULL;
1293751400dde1eac64dd41c7de33fcddf8a939e4ab2hding
1294dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    switch (obj_config->profile) {
1295dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    case VAProfileMPEG4Simple:
1296c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang        drv_debug_msg(VIDEO_DEBUG_GENERAL, "MPEG4_PROFILE_SIMPLE\n");
1297437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        ctx->profile = MPEG4_PROFILE_SIMPLE;
1298437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        break;
1299dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1300dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    case VAProfileMPEG4AdvancedSimple:
1301c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang        drv_debug_msg(VIDEO_DEBUG_GENERAL, "MPEG4_PROFILE_ASP\n");
1302437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        ctx->profile = MPEG4_PROFILE_ASP;
1303437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        break;
1304dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1305dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    default:
1306437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        ASSERT(0 == 1);
1307437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        vaStatus = VA_STATUS_ERROR_UNKNOWN;
1308437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1309437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1310437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    // TODO
1311437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1312dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (vaStatus == VA_STATUS_SUCCESS) {
1313dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        vaStatus = psb_buffer_create(obj_context->driver_data,
1314dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                                     FE_STATE_BUFFER_SIZE,
1315dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                                     psb_bt_vpu_only,
131606c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng                                     &ctx->preload_buffer);
1317437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        DEBUG_FAILURE;
1318437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
131906c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    ctx->dec_ctx.preload_buffer = &ctx->preload_buffer;
1320437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1321dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (vaStatus == VA_STATUS_SUCCESS) {
1322dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        vaStatus = psb_buffer_create(obj_context->driver_data,
1323dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                                     sizeof(gaui16mpeg4VlcTableDataPacked),
1324dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                                     psb_bt_cpu_vpu,
1325dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                                     &ctx->vlc_packed_table);
1326437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        DEBUG_FAILURE;
1327437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1328dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (vaStatus == VA_STATUS_SUCCESS) {
1329e9f11f100c212e9aeb194337ae43bbfea6a130dbKun Wang        unsigned char *vlc_packed_data_address;
1330dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        if (0 ==  psb_buffer_map(&ctx->vlc_packed_table, &vlc_packed_data_address)) {
1331dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun            memcpy(vlc_packed_data_address, gaui16mpeg4VlcTableDataPacked, sizeof(gaui16mpeg4VlcTableDataPacked));
1332dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun            psb_buffer_unmap(&ctx->vlc_packed_table);
1333dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        } else {
1334437b3eda28a4bf098efa80598cab67f190275266Fei Jiang            vaStatus = VA_STATUS_ERROR_ALLOCATION_FAILED;
1335437b3eda28a4bf098efa80598cab67f190275266Fei Jiang            DEBUG_FAILURE;
1336437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        }
1337437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1338437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
133906c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    if (vaStatus == VA_STATUS_SUCCESS) {
134006c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng        vaStatus = vld_dec_CreateContext(&ctx->dec_ctx, obj_context);
134106c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng        DEBUG_FAILURE;
134206c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    }
134306c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng
134439eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    ctx->field_type = 2;
134539eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng
1346dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (vaStatus != VA_STATUS_SUCCESS) {
1347437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        pnw_MPEG4_DestroyContext(obj_context);
1348437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1349437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1350437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    return vaStatus;
1351437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
1352437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1353437b3eda28a4bf098efa80598cab67f190275266Fei Jiangstatic void pnw_MPEG4_DestroyContext(
1354dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    object_context_p obj_context)
1355437b3eda28a4bf098efa80598cab67f190275266Fei Jiang{
1356437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    INIT_CONTEXT_MPEG4
1357437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    int i;
1358437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
135906c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    vld_dec_DestroyContext(&ctx->dec_ctx);
136006c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng
1361dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_buffer_destroy(&ctx->vlc_packed_table);
136206c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    psb_buffer_destroy(&ctx->preload_buffer);
1363437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1364751400dde1eac64dd41c7de33fcddf8a939e4ab2hding    if(ctx->data_partition_buffer0)
1365751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        psb_buffer_destroy(ctx->data_partition_buffer0);
1366751400dde1eac64dd41c7de33fcddf8a939e4ab2hding
1367751400dde1eac64dd41c7de33fcddf8a939e4ab2hding    if(ctx->data_partition_buffer1)
1368751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        psb_buffer_destroy(ctx->data_partition_buffer1);
1369751400dde1eac64dd41c7de33fcddf8a939e4ab2hding
1370751400dde1eac64dd41c7de33fcddf8a939e4ab2hding    ctx->data_partition_buffer0 = NULL;
1371751400dde1eac64dd41c7de33fcddf8a939e4ab2hding    ctx->data_partition_buffer1 = NULL;
1372751400dde1eac64dd41c7de33fcddf8a939e4ab2hding
1373dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (ctx->pic_params) {
1374437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        free(ctx->pic_params);
1375437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        ctx->pic_params = NULL;
1376437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1377437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1378437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    free(obj_context->format_data);
1379437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    obj_context->format_data = NULL;
1380437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
1381437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1382437b3eda28a4bf098efa80598cab67f190275266Fei Jiangstatic VAStatus psb__MPEG4_process_picture_param(context_MPEG4_p ctx, object_buffer_p obj_buffer)
1383437b3eda28a4bf098efa80598cab67f190275266Fei Jiang{
1384437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    VAStatus vaStatus;
138555dbfaffb153fbec01e82c471b7ea5bf7bcac5femahongpe    object_surface_p obj_surface = ctx->obj_context->current_render_target;
138655dbfaffb153fbec01e82c471b7ea5bf7bcac5femahongpe
1387437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ASSERT(obj_buffer->type == VAPictureParameterBufferType);
1388437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ASSERT(obj_buffer->num_elements == 1);
1389437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ASSERT(obj_buffer->size == sizeof(VAPictureParameterBufferMPEG4));
1390dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1391437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    if ((obj_buffer->num_elements != 1) ||
1392bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang        (obj_buffer->size != sizeof(VAPictureParameterBufferMPEG4))) {
1393437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        return VA_STATUS_ERROR_UNKNOWN;
1394437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1395437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1396437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Transfer ownership of VAPictureParameterBufferMPEG4 data */
1397dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (ctx->pic_params) {
1398437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        free(ctx->pic_params);
1399437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1400437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->pic_params = (VAPictureParameterBufferMPEG4 *) obj_buffer->buffer_data;
1401437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    obj_buffer->buffer_data = NULL;
1402437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    obj_buffer->size = 0;
1403437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1404437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1405437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Lookup surfaces for backward/forward references */
1406437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Lookup surfaces for backward/forward references */
1407dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    switch (ctx->pic_params->vop_fields.bits.vop_coding_type) {
1408dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    case PICTURE_CODING_I:
1409dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        ctx->forward_ref_surface = NULL;
1410dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        ctx->backward_ref_surface = NULL;
1411c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang        drv_debug_msg(VIDEO_DEBUG_GENERAL, "PICTURE_CODING_I\nTarget surface = %08x (%08x)\n", ctx->obj_context->current_render_target->psb_surface, ctx->obj_context->current_render_target->base.id);
1412c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang        drv_debug_msg(VIDEO_DEBUG_GENERAL, "Forward ref  = NULL\n");
1413c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang        drv_debug_msg(VIDEO_DEBUG_GENERAL, "Backward ref = NULL\n");
1414dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        break;
1415dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1416dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    case PICTURE_CODING_P:
1417dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        ctx->forward_ref_surface = SURFACE(ctx->pic_params->forward_reference_picture);
1418dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        ctx->backward_ref_surface = NULL;
1419b6b9c482c9c72f4e2bc90260813cc00b454e011dShuduo Sang
14203f3d1e8746d2b793c982ac19a73061e006b1b178Kun Wang        if (ctx->pic_params->forward_reference_picture == VA_INVALID_SURFACE)
1421b6b9c482c9c72f4e2bc90260813cc00b454e011dShuduo Sang            ctx->forward_ref_surface = NULL;
1422b6b9c482c9c72f4e2bc90260813cc00b454e011dShuduo Sang        if (NULL == ctx->forward_ref_surface && ctx->pic_params->forward_reference_picture != VA_INVALID_SURFACE) {
1423dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun            return VA_STATUS_ERROR_INVALID_SURFACE;
1424dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        }
1425c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang        drv_debug_msg(VIDEO_DEBUG_GENERAL, "PICTURE_CODING_P\nTarget surface = %08x (%08x)\n", ctx->obj_context->current_render_target->psb_surface, ctx->obj_context->current_render_target->base.id);
1426c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang        drv_debug_msg(VIDEO_DEBUG_GENERAL, "Forward ref  = %08x (%08x)\n", (ctx->forward_ref_surface ? ctx->forward_ref_surface->psb_surface : 0), ctx->pic_params->forward_reference_picture);
1427c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang        drv_debug_msg(VIDEO_DEBUG_GENERAL, "Backward ref = NULL\n");
1428dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        break;
1429dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1430dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    case PICTURE_CODING_B:
1431dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        ctx->forward_ref_surface = SURFACE(ctx->pic_params->forward_reference_picture);
1432dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        ctx->backward_ref_surface = SURFACE(ctx->pic_params->backward_reference_picture);
1433dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        if ((NULL == ctx->forward_ref_surface) ||
1434bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang            (NULL == ctx->backward_ref_surface)) {
1435dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun            return VA_STATUS_ERROR_INVALID_SURFACE;
1436dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        }
1437c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang        drv_debug_msg(VIDEO_DEBUG_GENERAL, "PICTURE_CODING_B\nTarget surface = %08x (%08x)\n", ctx->obj_context->current_render_target->psb_surface, ctx->obj_context->current_render_target->base.id);
1438c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang        drv_debug_msg(VIDEO_DEBUG_GENERAL, "Forward ref  = %08x (%08x)\n", ctx->forward_ref_surface->psb_surface, ctx->pic_params->forward_reference_picture);
1439c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang        drv_debug_msg(VIDEO_DEBUG_GENERAL, "Backward ref = %08x (%08x)\n", ctx->backward_ref_surface->psb_surface, ctx->pic_params->backward_reference_picture);
1440dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        break;
1441dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1442dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    case PICTURE_CODING_S:
1443dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        ctx->forward_ref_surface = SURFACE(ctx->pic_params->forward_reference_picture);
1444dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        ctx->backward_ref_surface = SURFACE(ctx->pic_params->backward_reference_picture);
1445c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang        drv_debug_msg(VIDEO_DEBUG_GENERAL, "PICTURE_CODING_S\nTarget surface = %08x (%08x)\n", ctx->obj_context->current_render_target->psb_surface, ctx->obj_context->current_render_target->base.id);
1446c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang        drv_debug_msg(VIDEO_DEBUG_GENERAL, "Forward ref  = %08x (%08x)\n", ctx->forward_ref_surface ? ctx->forward_ref_surface->psb_surface : 0, ctx->pic_params->forward_reference_picture);
1447c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang        drv_debug_msg(VIDEO_DEBUG_GENERAL, "Backward ref = %08x (%08x)\n", ctx->backward_ref_surface ? ctx->backward_ref_surface->psb_surface : 0, ctx->pic_params->backward_reference_picture);
1448dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        break;
1449dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1450dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    default:
1451c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang        drv_debug_msg(VIDEO_DEBUG_ERROR, "Unhandled MPEG4 vop_coding_type '%d'\n", ctx->pic_params->vop_fields.bits.vop_coding_type);
1452dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        return VA_STATUS_ERROR_UNKNOWN;
1453437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1454dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1455dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (NULL == ctx->forward_ref_surface) {
1456437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /* for mmu fault protection */
1457437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        ctx->forward_ref_surface = ctx->obj_context->current_render_target;
1458437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1459dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (NULL == ctx->backward_ref_surface) {
1460437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /* for mmu fault protection */
1461437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        ctx->backward_ref_surface = ctx->obj_context->current_render_target;
1462437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1463437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1464437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->display_picture_width = ctx->pic_params->vop_width;
1465437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->display_picture_height = ctx->pic_params->vop_height;
1466437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->picture_width_mb = PIXELS_TO_MB(ctx->display_picture_width);
1467437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->picture_height_mb = PIXELS_TO_MB(ctx->display_picture_height);
1468437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->coded_picture_width = ctx->picture_width_mb * 16;
1469437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->coded_picture_height = ctx->picture_height_mb * 16;
1470437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->size_mb = ctx->picture_width_mb * ctx->picture_height_mb;
1471dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
147255dbfaffb153fbec01e82c471b7ea5bf7bcac5femahongpe    if (obj_surface->share_info) {
147355dbfaffb153fbec01e82c471b7ea5bf7bcac5femahongpe        obj_surface->share_info->coded_width = ctx->coded_picture_width;
147420f2ef257b798a174166858314731050410e31f4mahongpe        obj_surface->share_info->coded_height = ctx->coded_picture_height;
147555dbfaffb153fbec01e82c471b7ea5bf7bcac5femahongpe    }
147655dbfaffb153fbec01e82c471b7ea5bf7bcac5femahongpe
1477dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    uint32_t mbInPic = ctx->picture_width_mb * ctx->picture_height_mb;
1478437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1479437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    mbInPic += 4;
1480437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1481437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t colocated_size = ((mbInPic * 200) + 0xfff) & ~0xfff;
1482437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
148306c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    vaStatus = vld_dec_allocate_colocated_buffer(&ctx->dec_ctx, ctx->obj_context->current_render_target, colocated_size);
14846d37ae34fcae80f2e898b61e2506ed8e887bd16anguo    CHECK_VASTATUS();
14856d37ae34fcae80f2e898b61e2506ed8e887bd16anguo
148606c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    vaStatus = vld_dec_allocate_colocated_buffer(&ctx->dec_ctx, ctx->forward_ref_surface, colocated_size);
14876d37ae34fcae80f2e898b61e2506ed8e887bd16anguo    CHECK_VASTATUS();
1488dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1489437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->FEControl = 0;
1490dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->FEControl ,
1491dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                           MSVDX_VEC,
1492dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                           CR_VEC_ENTDEC_FE_CONTROL,
1493dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                           ENTDEC_FE_PROFILE,
1494dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                           ctx->profile);    /* MPEG4 SP / ASP profile    */
1495dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1496dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->FEControl ,
1497dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                           MSVDX_VEC,
1498dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                           CR_VEC_ENTDEC_FE_CONTROL,
1499dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                           ENTDEC_FE_MODE,
1500dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                           4);                                /* Set MPEG4 mode            */
1501437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1502437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* FE_SPS0                                                                        */
1503437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->FE_SPS0 = 0;
1504dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->FE_SPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_SPS0, FE_VOP_WIDTH_IN_MBS_LESS_1,    ctx->picture_width_mb - 1);
1505dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->FE_SPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_SPS0, FE_SHORT_HEADER_FLAG,               ctx->pic_params->vol_fields.bits.short_video_header);
1506dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->FE_SPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_SPS0, FE_PROFILE,                    ctx->profile);
1507437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1508437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* FE_VOP_SPS0                                                                    */
1509437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->FE_VOP_SPS0 = 0;
1510dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->FE_VOP_SPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_VOP_SPS0, FE_VOP_HEIGHT_IN_MBS_LESS_1, ctx->picture_height_mb - 1);
1511dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->FE_VOP_SPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_VOP_SPS0, QUANT_PRECISION,        ctx->pic_params->quant_precision);
15120fd26f1f2d1111fd6532f949cdc8d5d1bfc51cffnguo    REGIO_WRITE_FIELD_LITE(ctx->FE_VOP_SPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_VOP_SPS0, FE_NO_OF_GMC_WARPING_POINTS, ((ctx->pic_params->no_of_sprite_warping_points) ? 1 : 0));
1513dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->FE_VOP_SPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_VOP_SPS0, FE_GMC_ENABLE, (ctx->pic_params->vol_fields.bits.sprite_enable == GMC));
1514dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->FE_VOP_SPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_VOP_SPS0, REVERSIBLE_VLC,        ctx->pic_params->vol_fields.bits.reversible_vlc);
1515dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->FE_VOP_SPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_VOP_SPS0, FE_DATA_PARTITIONED,    ctx->pic_params->vol_fields.bits.data_partitioned);
1516dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->FE_VOP_SPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_VOP_SPS0, FE_INTERLACED,            ctx->pic_params->vol_fields.bits.interlaced);
1517dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1518dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (ctx->pic_params->vol_fields.bits.short_video_header) {
1519437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /* FE_PICSH_PPS0                                                            */
1520437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        ctx->FE_PICSH_PPS0 = 0;
1521dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->FE_PICSH_PPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_PICSH_PPS0, NUM_MBS_IN_GOB,        ctx->pic_params->num_macroblocks_in_gob);
1522dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->FE_PICSH_PPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_PICSH_PPS0, NUM_GOBS_IN_VOP,        ctx->pic_params->num_gobs_in_vop);
1523dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->FE_PICSH_PPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_PICSH_PPS0, FE_PICSH_CODING_TYPE,    ctx->pic_params->vop_fields.bits.vop_coding_type);
1524437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1525437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1526437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* FE_VOP_PPS0 */
1527437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->FE_VOP_PPS0 = 0;
1528dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->FE_VOP_PPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_VOP_PPS0, BACKWARD_REF_VOP_CODING_TYPE,    ctx->pic_params->vop_fields.bits.backward_reference_vop_coding_type);
1529dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->FE_VOP_PPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_VOP_PPS0, FE_FCODE_BACKWARD,                ctx->pic_params->vop_fcode_backward);
1530dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->FE_VOP_PPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_VOP_PPS0, FE_FCODE_FORWARD,                ctx->pic_params->vop_fcode_forward);
1531dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->FE_VOP_PPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_VOP_PPS0, INTRA_DC_VLC_THR,                ctx->pic_params->vop_fields.bits.intra_dc_vlc_thr);
1532dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->FE_VOP_PPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_VOP_PPS0, FE_VOP_CODING_TYPE,              ctx->pic_params->vop_fields.bits.vop_coding_type);
1533437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1534437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* BE_SPS0                                                                        */
1535437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Common for VOPs and pictures with short header                                */
1536437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->BE_SPS0 = 0;
1537dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->BE_SPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_SPS0, BE_SHORT_HEADER_FLAG,    ctx->pic_params->vol_fields.bits.short_video_header);
1538dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->BE_SPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_SPS0, BE_PROFILE,            ctx->profile);
1539437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1540437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* BE_SPS1                                                                        */
1541437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Common for VOPs and pictures with short header                                */
1542437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->BE_SPS1 = 0;
1543dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->BE_SPS1, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_SPS1, BE_VOP_WIDTH_IN_MBS_LESS_1, ctx->picture_width_mb - 1);
1544dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(ctx->BE_SPS1, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_SPS1, VOP_HEIGHT_IN_MBS_LESS_1,   ctx->picture_height_mb - 1);
1545437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1546dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (0 == ctx->pic_params->vol_fields.bits.short_video_header) {
1547437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /* BE_VOP_SPS0                                                                */
1548437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        ctx->BE_VOP_SPS0 = 0;
1549dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->BE_VOP_SPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_SPS0, QUANT_TYPE,     ctx->pic_params->vol_fields.bits.quant_type);
1550dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->BE_VOP_SPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_SPS0, OBMC_DISABLE,   ctx->pic_params->vol_fields.bits.obmc_disable);
1551dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->BE_VOP_SPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_SPS0, QUARTER_SAMPLE, ctx->pic_params->vol_fields.bits.quarter_sample);
1552437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1553437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /* BE_VOP_SPS1                                                                */
1554437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        ctx->BE_VOP_SPS1 = 0;
1555dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->BE_VOP_SPS1, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_SPS1, GMC_WARPING_ACCURACY,        ctx->pic_params->vol_fields.bits.sprite_warping_accuracy);
15560fd26f1f2d1111fd6532f949cdc8d5d1bfc51cffnguo        REGIO_WRITE_FIELD_LITE(ctx->BE_VOP_SPS1, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_SPS1, BE_NO_OF_GMC_WARPING_POINTS, ((ctx->pic_params->no_of_sprite_warping_points) ? 1 : 0));
1557dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->BE_VOP_SPS1, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_SPS1, BE_GMC_ENABLE, (ctx->pic_params->vol_fields.bits.sprite_enable == GMC));
1558dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->BE_VOP_SPS1, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_SPS1, BE_DATA_PARTITIONED,         ctx->pic_params->vol_fields.bits.data_partitioned);
1559dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->BE_VOP_SPS1, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_SPS1, BE_INTERLACED,               ctx->pic_params->vol_fields.bits.interlaced);
1560437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1561437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /* BE_VOP_PPS0                                                                */
1562437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        ctx->BE_VOP_PPS0 = 0;
1563dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->BE_VOP_PPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_PPS0, BE_FCODE_BACKWARD,                ctx->pic_params->vop_fcode_backward);
1564dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->BE_VOP_PPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_PPS0, BE_FCODE_FORWARD,                ctx->pic_params->vop_fcode_forward);
1565dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->BE_VOP_PPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_PPS0, ALTERNATE_VERTICAL_SCAN_FLAG,    ctx->pic_params->vop_fields.bits.alternate_vertical_scan_flag);
1566dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->BE_VOP_PPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_PPS0, TOP_FIELD_FIRST,                ctx->pic_params->vop_fields.bits.top_field_first);
1567dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->BE_VOP_PPS0,
1568dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                               MSVDX_VEC_MPEG4,
1569dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                               CR_VEC_MPEG4_BE_VOP_PPS0,
1570dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                               ROUNDING_TYPE,
1571dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                               ((PICTURE_CODING_I == ctx->pic_params->vop_fields.bits.vop_coding_type ||
1572dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                                 PICTURE_CODING_B == ctx->pic_params->vop_fields.bits.vop_coding_type) ?
1573dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                                0 : ctx->pic_params->vop_fields.bits.vop_rounding_type));
1574437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        REGIO_WRITE_FIELD_LITE(ctx->BE_VOP_PPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_PPS0, BE_VOP_CODING_TYPE,                ctx->pic_params->vop_fields.bits.vop_coding_type);
1575dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    } else {
1576437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /* BE_VOP_PPS0                                                                */
1577437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        ctx->BE_VOP_PPS0 = 0;
1578dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->BE_VOP_PPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_PPS0, BE_FCODE_FORWARD,                1);  // Always 1 in short header mode 6.3.5.2
1579dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->BE_VOP_PPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_PPS0, ALTERNATE_VERTICAL_SCAN_FLAG,    ctx->pic_params->vop_fields.bits.alternate_vertical_scan_flag);
1580dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->BE_VOP_PPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_PPS0, TOP_FIELD_FIRST,                ctx->pic_params->vop_fields.bits.top_field_first);
1581dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->BE_VOP_PPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_PPS0, ROUNDING_TYPE,                     0);  // Always 0 in short header mode 6.3.5.2
1582dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->BE_VOP_PPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_PPS0, BE_VOP_CODING_TYPE,            ctx->pic_params->vop_fields.bits.vop_coding_type);
1583437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1584437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /* BE_PICSH_PPS0                                                            */
1585437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        ctx->BE_PICSH_PPS0 = 0;
1586dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        REGIO_WRITE_FIELD_LITE(ctx->BE_PICSH_PPS0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_PICSH_PPS0, BE_PICSH_CODING_TYPE,         ctx->pic_params->vop_fields.bits.vop_coding_type);
1587437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1588437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1589751400dde1eac64dd41c7de33fcddf8a939e4ab2hding    if(ctx->pic_params->vol_fields.bits.data_partitioned) {
1590751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        if(!ctx->data_partition_buffer0) {
1591751400dde1eac64dd41c7de33fcddf8a939e4ab2hding            int size = 16 * ctx->size_mb;
1592751400dde1eac64dd41c7de33fcddf8a939e4ab2hding            ctx->data_partition_buffer0 = (psb_buffer_p) calloc(1, sizeof(struct psb_buffer_s));
15938bc6a6aa815a18f936036b5a47106b47aa904b1bhding            CHECK_ALLOCATION(ctx->data_partition_buffer0);
1594751400dde1eac64dd41c7de33fcddf8a939e4ab2hding            size = (size + 0xfff) & (~0xfff);
1595751400dde1eac64dd41c7de33fcddf8a939e4ab2hding            vaStatus = psb_buffer_create(ctx->obj_context->driver_data, size, psb_bt_vpu_only, ctx->data_partition_buffer0);
15966d37ae34fcae80f2e898b61e2506ed8e887bd16anguo            CHECK_VASTATUS();
1597751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        }
1598751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        if(!ctx->data_partition_buffer1) {
1599751400dde1eac64dd41c7de33fcddf8a939e4ab2hding            int size = 16 * ctx->size_mb;
1600751400dde1eac64dd41c7de33fcddf8a939e4ab2hding            ctx->data_partition_buffer1 = (psb_buffer_p) calloc(1, sizeof(struct psb_buffer_s));
16018bc6a6aa815a18f936036b5a47106b47aa904b1bhding            CHECK_ALLOCATION(ctx->data_partition_buffer1);
1602751400dde1eac64dd41c7de33fcddf8a939e4ab2hding            size = (size + 0xfff) & (~0xfff);
1603751400dde1eac64dd41c7de33fcddf8a939e4ab2hding            vaStatus = psb_buffer_create(ctx->obj_context->driver_data, size, psb_bt_vpu_only, ctx->data_partition_buffer1);
16046d37ae34fcae80f2e898b61e2506ed8e887bd16anguo            CHECK_VASTATUS();
1605751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        }
1606751400dde1eac64dd41c7de33fcddf8a939e4ab2hding    }
1607751400dde1eac64dd41c7de33fcddf8a939e4ab2hding
1608437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    return VA_STATUS_SUCCESS;
1609437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
1610437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1611437b3eda28a4bf098efa80598cab67f190275266Fei Jiangstatic void psb__MPEG4_convert_iq_matrix(uint32_t *dest32, unsigned char *src)
1612437b3eda28a4bf098efa80598cab67f190275266Fei Jiang{
1613437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    int i;
1614437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    int *idx = scan0;
1615437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint8_t *dest8 = (uint8_t*) dest32;
1616dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1617dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    for (i = 0; i < 64; i++) {
1618437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        *dest8++ = src[*idx++];
1619437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1620437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
1621437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1622437b3eda28a4bf098efa80598cab67f190275266Fei Jiangstatic VAStatus psb__MPEG4_process_iq_matrix(context_MPEG4_p ctx, object_buffer_p obj_buffer)
1623437b3eda28a4bf098efa80598cab67f190275266Fei Jiang{
1624437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    VAIQMatrixBufferMPEG4 *iq_matrix = (VAIQMatrixBufferMPEG4 *) obj_buffer->buffer_data;
1625437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ASSERT(obj_buffer->type == VAIQMatrixBufferType);
1626437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ASSERT(obj_buffer->num_elements == 1);
1627437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ASSERT(obj_buffer->size == sizeof(VAIQMatrixBufferMPEG4));
1628437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1629437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    if ((obj_buffer->num_elements != 1) ||
1630bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang        (obj_buffer->size != sizeof(VAIQMatrixBufferMPEG4))) {
1631437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        return VA_STATUS_ERROR_UNKNOWN;
1632437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1633437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1634dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (iq_matrix->load_non_intra_quant_mat) {
1635dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        psb__MPEG4_convert_iq_matrix(ctx->qmatrix_data[NONINTRA_LUMA_Q], iq_matrix->non_intra_quant_mat);
1636437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1637dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (iq_matrix->load_intra_quant_mat) {
1638dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        psb__MPEG4_convert_iq_matrix(ctx->qmatrix_data[INTRA_LUMA_Q], iq_matrix->intra_quant_mat);
1639437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1640437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->load_non_intra_quant_mat = iq_matrix->load_non_intra_quant_mat;
1641437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->load_intra_quant_mat = iq_matrix->load_intra_quant_mat;
1642437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1643437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    return VA_STATUS_SUCCESS;
1644437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
1645437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1646437b3eda28a4bf098efa80598cab67f190275266Fei Jiangstatic void psb__MPEG4_write_qmatrices(context_MPEG4_p ctx)
1647437b3eda28a4bf098efa80598cab67f190275266Fei Jiang{
1648437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    psb_cmdbuf_p cmdbuf = ctx->obj_context->cmdbuf;
1649437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    int i;
1650437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1651437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    // TODO: Verify that this is indeed the same as MPEG2
1652437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1653dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    /* Since we only decode 4:2:0 We only need to the Intra tables.
1654437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    Chroma quant tables are only used in Mpeg 4:2:2 and 4:4:4.
1655437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    The hardware wants non-intra followed by intra */
16564b5b72d7dd3fe944d75029ff0ca6db1e74600e59Liu, Shuo    /* psb_cmdbuf_rendec_start_block( cmdbuf ); */
1657dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_start(cmdbuf, REG_MSVDX_VEC_IQRAM_OFFSET);
1658437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1659437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* todo : optimisation here is to only load the need table */
1660dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (ctx->load_non_intra_quant_mat) {
1661437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /*  NONINTRA_LUMA_Q --> REG_MSVDX_VEC_IQRAM_OFFSET + 0 */
1662dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        for (i = 0; i < 16; i++) {
1663dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun            psb_cmdbuf_rendec_write(cmdbuf, ctx->qmatrix_data[NONINTRA_LUMA_Q][i]);
1664437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        }
1665dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    } else {
1666dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        for (i = 0; i < 16; i++) {
1667dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun            psb_cmdbuf_rendec_write(cmdbuf, 0);
1668437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        }
1669437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1670dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (ctx->load_intra_quant_mat) {
1671437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /*  INTRA_LUMA_Q --> REG_MSVDX_VEC_IQRAM_OFFSET + (16*4) */
1672dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        for (i = 0; i < 16; i++) {
1673dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun            psb_cmdbuf_rendec_write(cmdbuf, ctx->qmatrix_data[INTRA_LUMA_Q][i]);
1674437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        }
1675dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    } else {
1676dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        for (i = 0; i < 16; i++) {
1677dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun            psb_cmdbuf_rendec_write(cmdbuf, 0);
1678437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        }
1679437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1680437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1681dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_end(cmdbuf);
16824b5b72d7dd3fe944d75029ff0ca6db1e74600e59Liu, Shuo    /* psb_cmdbuf_rendec_end_block( cmdbuf ); */
1683437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
1684437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1685437b3eda28a4bf098efa80598cab67f190275266Fei Jiang/* Precalculated values */
1686437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define ADDR0        (0x00005800)
1687437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define ADDR1        (0x0001f828)
1688437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define ADDR2        (0x0002b854)
1689437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define ADDR3        (0x0002f85c)
1690437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define ADDR4        (0x0004d089)
1691437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define ADDR5        (0x0008f0aa)
1692437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define ADDR6        (0x00149988)
1693437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define ADDR7        (0x001d8b9e)
1694437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define ADDR8        (0x000003c3)
1695437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define WIDTH0        (0x09a596ed)
1696437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define WIDTH1        (0x0006d6db)
1697437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define OPCODE0        (0x50009a0a)
1698437b3eda28a4bf098efa80598cab67f190275266Fei Jiang#define OPCODE1        (0x00000001)
1699437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1700437b3eda28a4bf098efa80598cab67f190275266Fei Jiangstatic void psb__MPEG4_write_VLC_tables(context_MPEG4_p ctx)
1701437b3eda28a4bf098efa80598cab67f190275266Fei Jiang{
1702437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    psb_cmdbuf_p cmdbuf = ctx->obj_context->cmdbuf;
1703437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1704dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_skip_start_block(cmdbuf, SKIP_ON_CONTEXT_SWITCH);
1705437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* VLC Table */
1706437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Write a LLDMA Cmd to transfer VLD Table data */
1707680952832ef474a95bb0c4fee50c06e5126ad66dKun Wang    psb_cmdbuf_dma_write_cmdbuf(cmdbuf, &ctx->vlc_packed_table, 0,
1708680952832ef474a95bb0c4fee50c06e5126ad66dKun Wang                                  sizeof(gaui16mpeg4VlcTableDataPacked), 0,
1709680952832ef474a95bb0c4fee50c06e5126ad66dKun Wang                                  DMA_TYPE_VLC_TABLE);
1710dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1711dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    /* Write the vec registers with the index data for each of the tables and then write    */
1712dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    /* the actual table data.                                                                */
1713680952832ef474a95bb0c4fee50c06e5126ad66dKun Wang    psb_cmdbuf_reg_start_block(cmdbuf, 0);
1714dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_set(cmdbuf, REGISTER_OFFSET(MSVDX_VEC, CR_VEC_VLC_TABLE_ADDR0),            ADDR0);
1715dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_set(cmdbuf, REGISTER_OFFSET(MSVDX_VEC, CR_VEC_VLC_TABLE_ADDR1),            ADDR1);
1716dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_set(cmdbuf, REGISTER_OFFSET(MSVDX_VEC, CR_VEC_VLC_TABLE_ADDR2),            ADDR2);
1717dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_set(cmdbuf, REGISTER_OFFSET(MSVDX_VEC, CR_VEC_VLC_TABLE_ADDR3),            ADDR3);
1718dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_set(cmdbuf, REGISTER_OFFSET(MSVDX_VEC, CR_VEC_VLC_TABLE_ADDR4),            ADDR4);
1719dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_set(cmdbuf, REGISTER_OFFSET(MSVDX_VEC, CR_VEC_VLC_TABLE_ADDR5),            ADDR5);
1720dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_set(cmdbuf, REGISTER_OFFSET(MSVDX_VEC, CR_VEC_VLC_TABLE_ADDR6),            ADDR6);
1721dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_set(cmdbuf, REGISTER_OFFSET(MSVDX_VEC, CR_VEC_VLC_TABLE_ADDR7),            ADDR7);
1722dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_set(cmdbuf, REGISTER_OFFSET(MSVDX_VEC, CR_VEC_VLC_TABLE_ADDR8),            ADDR8);
1723dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_set(cmdbuf, REGISTER_OFFSET(MSVDX_VEC, CR_VEC_VLC_TABLE_INITIAL_WIDTH0),    WIDTH0);
1724dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_set(cmdbuf, REGISTER_OFFSET(MSVDX_VEC, CR_VEC_VLC_TABLE_INITIAL_WIDTH1),    WIDTH1);
1725dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_set(cmdbuf, REGISTER_OFFSET(MSVDX_VEC, CR_VEC_VLC_TABLE_INITIAL_OPCODE0),    OPCODE0);
1726dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_set(cmdbuf, REGISTER_OFFSET(MSVDX_VEC, CR_VEC_VLC_TABLE_INITIAL_OPCODE1),    OPCODE1);
1727dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_end_block(cmdbuf);
1728dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1729dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_skip_end_block(cmdbuf);
1730437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
1731437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1732cecb10be5449aa74cd1d9a2eb41c2a6a76d9ee79ywanstatic void psb__MPEG4_set_picture_params(context_MPEG4_p ctx, VASliceParameterBufferMPEG4 __maybe_unused * slice_param)
1733437b3eda28a4bf098efa80598cab67f190275266Fei Jiang{
1734437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t cmd;
1735437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    psb_cmdbuf_p cmdbuf = ctx->obj_context->cmdbuf;
1736437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    psb_surface_p target_surface = ctx->obj_context->current_render_target->psb_surface;
1737437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
173806c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    psb_buffer_p colocated_target_buffer = vld_dec_lookup_colocated_buffer(&ctx->dec_ctx, target_surface);
173906c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    psb_buffer_p colocated_ref_buffer = vld_dec_lookup_colocated_buffer(&ctx->dec_ctx, ctx->forward_ref_surface->psb_surface); /* FIXME DE2.0 use backward ref surface */
1740437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ASSERT(colocated_target_buffer);
1741437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ASSERT(colocated_ref_buffer);
1742dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
17434b5b72d7dd3fe944d75029ff0ca6db1e74600e59Liu, Shuo    /* psb_cmdbuf_rendec_start_block( cmdbuf ); */
1744437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1745437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* BE_PARAM_BASE_ADDR                                                            */
1746dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_start(cmdbuf, RENDEC_REGISTER_OFFSET(MSVDX_VEC, MPEG4_CR_VEC_MPEG4_BE_PARAM_BASE_ADDR));
1747dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (colocated_target_buffer) {
1748dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        psb_cmdbuf_rendec_write_address(cmdbuf, colocated_target_buffer, 0);
1749dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    } else {
1750437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /* This is an error */
1751dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        psb_cmdbuf_rendec_write(cmdbuf, 0);
1752437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1753dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_end(cmdbuf);
1754437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1755437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* PARAM_BASE_ADDRESS                                                            */
1756dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_start(cmdbuf, RENDEC_REGISTER_OFFSET(MSVDX_VEC, MPEG4_CR_VEC_MPEG4_BE_COLPARAM_BASE_ADDR));
1757dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (colocated_ref_buffer) {
1758dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        psb_cmdbuf_rendec_write_address(cmdbuf, colocated_ref_buffer, 0);
1759dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    } else {
1760437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /* This is an error */
1761dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        psb_cmdbuf_rendec_write(cmdbuf, 0);
1762437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1763dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_end(cmdbuf);
17644b5b72d7dd3fe944d75029ff0ca6db1e74600e59Liu, Shuo
176506c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    vld_dec_setup_alternative_frame(ctx->obj_context);
1766437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1767437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Send VDMC and VDEB commands                                                    */
1768dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_start(cmdbuf, RENDEC_REGISTER_OFFSET(MSVDX_CMDS, DISPLAY_PICTURE_SIZE));
1769437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1770437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Display picture size cmd                                                        */
1771437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    cmd = 0;
1772dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_CMDS, DISPLAY_PICTURE_SIZE, DISPLAY_PICTURE_HEIGHT, ctx->coded_picture_height - 1);
1773dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_CMDS, DISPLAY_PICTURE_SIZE, DISPLAY_PICTURE_WIDTH,  ctx->coded_picture_width - 1);
1774dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_write(cmdbuf, cmd);
1775437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1776437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Coded picture size cmd                                                        */
1777437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    cmd = 0;
1778dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_CMDS, CODED_PICTURE_SIZE, CODED_PICTURE_HEIGHT, ctx->coded_picture_height - 1);
1779dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_CMDS, CODED_PICTURE_SIZE, CODED_PICTURE_WIDTH,  ctx->coded_picture_width - 1);
1780dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_write(cmdbuf, cmd);
1781437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1782437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Operating mode cmd                                                            */
1783437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    cmd = 0;
1784dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_CMDS, OPERATING_MODE, CHROMA_INTERLEAVED, 0);                                 /* 0 = CbCr, 1 = CrCb        */
1785dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_CMDS, OPERATING_MODE, ROW_STRIDE,         ctx->obj_context->current_render_target->psb_surface->stride_mode);
1786dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_CMDS, OPERATING_MODE, CODEC_PROFILE,      ctx->profile); /* MPEG4 SP / ASP profile    */
1787dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_CMDS, OPERATING_MODE, CODEC_MODE,         4);                                 /* MPEG4                    */
1788dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_CMDS, OPERATING_MODE, ASYNC_MODE,         1);                                 /* VDMC only                */
1789dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_CMDS, OPERATING_MODE, CHROMA_FORMAT,      1);
1790dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_CMDS, OPERATING_MODE, INTERLACED,         ctx->pic_params->vol_fields.bits.interlaced);
1791dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_write(cmdbuf, cmd);
1792437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->obj_context->operating_mode = cmd;
1793437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1794c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang    drv_debug_msg(VIDEO_DEBUG_GENERAL, "    vop_coding_type = %s\n", psb__debug_picture_coding_str(ctx->pic_params->vop_fields.bits.vop_coding_type));
1795c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang    drv_debug_msg(VIDEO_DEBUG_GENERAL, "    backward ref vop_coding_type = %s\n", psb__debug_picture_coding_str(ctx->pic_params->vop_fields.bits.backward_reference_vop_coding_type));
1796437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1797437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* LUMA_RECONSTRUCTED_PICTURE_BASE_ADDRESSES                                    */
1798dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_write_address(cmdbuf, &target_surface->buf, target_surface->buf.buffer_ofs);
1799437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* CHROMA_RECONSTRUCTED_PICTURE_BASE_ADDRESSES                                    */
1800dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_write_address(cmdbuf, &target_surface->buf, target_surface->buf.buffer_ofs + target_surface->chroma_offset);
1801437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1802dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_end(cmdbuf);
1803437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1804437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Reference pictures base addresses                                            */
1805dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_start(cmdbuf, RENDEC_REGISTER_OFFSET(MSVDX_CMDS, REFERENCE_PICTURE_BASE_ADDRESSES));
1806437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1807c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang//drv_debug_msg(VIDEO_DEBUG_GENERAL, "Target surface = %08x\n", target_surface);
1808c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang//drv_debug_msg(VIDEO_DEBUG_GENERAL, "Forward ref = %08x\n", ctx->forward_ref_surface->psb_surface);
1809c60d5b7bdb5616ca37e0b912c10725bec4320f33Fei Jiang//drv_debug_msg(VIDEO_DEBUG_GENERAL, "Backward ref = %08x\n", ctx->backward_ref_surface->psb_surface);
1810437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1811437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* forward reference picture */
1812437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* LUMA_RECONSTRUCTED_PICTURE_BASE_ADDRESSES                                    */
1813dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_write_address(cmdbuf, &ctx->forward_ref_surface->psb_surface->buf, ctx->forward_ref_surface->psb_surface->buf.buffer_ofs);
1814437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* CHROMA_RECONSTRUCTED_PICTURE_BASE_ADDRESSES                                    */
1815dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_write_address(cmdbuf, &ctx->forward_ref_surface->psb_surface->buf, ctx->forward_ref_surface->psb_surface->buf.buffer_ofs + ctx->forward_ref_surface->psb_surface->chroma_offset);
1816437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1817437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* backward reference picture */
1818437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* LUMA_RECONSTRUCTED_PICTURE_BASE_ADDRESSES                                    */
1819dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_write_address(cmdbuf, &ctx->backward_ref_surface->psb_surface->buf, ctx->backward_ref_surface->psb_surface->buf.buffer_ofs);
1820437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* CHROMA_RECONSTRUCTED_PICTURE_BASE_ADDRESSES                                    */
1821dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_write_address(cmdbuf, &ctx->backward_ref_surface->psb_surface->buf, ctx->backward_ref_surface->psb_surface->buf.buffer_ofs + ctx->backward_ref_surface->psb_surface->chroma_offset);
1822437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1823dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_end(cmdbuf);
18244b5b72d7dd3fe944d75029ff0ca6db1e74600e59Liu, Shuo    /* psb_cmdbuf_rendec_end_block( cmdbuf ); */
1825437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
1826437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1827437b3eda28a4bf098efa80598cab67f190275266Fei Jiangstatic void psb__MPEG4_set_backend_registers(context_MPEG4_p ctx, VASliceParameterBufferMPEG4 *slice_param)
1828437b3eda28a4bf098efa80598cab67f190275266Fei Jiang{
1829437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    psb_cmdbuf_p cmdbuf = ctx->obj_context->cmdbuf;
1830437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t cmd;
1831437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    unsigned short width_mb = PIXELS_TO_MB(ctx->pic_params->vop_width);
1832437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
18334b5b72d7dd3fe944d75029ff0ca6db1e74600e59Liu, Shuo    /* psb_cmdbuf_rendec_start_block( cmdbuf ); */
1834437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1835437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Write Back-End EntDec registers                                                */
1836dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_start(cmdbuf, RENDEC_REGISTER_OFFSET(MSVDX_VEC, MPEG4_CR_VEC_MPEG4_BE_SPS0));
1837437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* BE_SPS0                                                                        */
1838437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Common for VOPs and pictures with short header                                */
1839dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_write(cmdbuf, ctx->BE_SPS0);
1840437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* BE_SPS1                                                                        */
1841437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Common for VOPs and pictures with short header                                */
1842dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_write(cmdbuf, ctx->BE_SPS1);
1843dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_end(cmdbuf);
1844437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1845dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_start(cmdbuf, RENDEC_REGISTER_OFFSET(MSVDX_VEC, MPEG4_CR_VEC_MPEG4_BE_VOP_SPS0));
1846dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (0 == ctx->pic_params->vol_fields.bits.short_video_header) {
1847437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /* BE_VOP_SPS0                                                                */
1848dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        psb_cmdbuf_rendec_write(cmdbuf, ctx->BE_VOP_SPS0);
1849437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /* BE_VOP_SPS1                                                                */
1850dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        psb_cmdbuf_rendec_write(cmdbuf, ctx->BE_VOP_SPS1);
1851437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /* BE_VOP_PPS0                                                                */
1852dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        psb_cmdbuf_rendec_write(cmdbuf, ctx->BE_VOP_PPS0);
1853dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    } else { /* Short-header mode */
1854437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /* BE_VOP_SPS0 */
1855dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        psb_cmdbuf_rendec_write(cmdbuf, 0);
1856437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /* BE_VOP_SPS1 */
1857dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        psb_cmdbuf_rendec_write(cmdbuf, 0);
1858437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /* BE_VOP_PPS0                                                                */
1859dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        psb_cmdbuf_rendec_write(cmdbuf, ctx->BE_VOP_PPS0);
1860437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /* BE_PICSH_PPS0                                                            */
1861dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        psb_cmdbuf_rendec_write(cmdbuf, ctx->BE_PICSH_PPS0);
1862437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1863dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_end(cmdbuf);
1864437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1865437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    if (0 == ctx->pic_params->vol_fields.bits.short_video_header) {
1866437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        if ((GMC == ctx->pic_params->vol_fields.bits.sprite_enable) &&
1867bde3ed7517cc876cb2a6e174ea2a96a75938e787Kun Wang            (PICTURE_CODING_S == ctx->pic_params->vop_fields.bits.vop_coding_type)) {
1868dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun            psb_cmdbuf_rendec_start(cmdbuf, RENDEC_REGISTER_OFFSET(MSVDX_VEC, MPEG4_CR_VEC_MPEG4_BE_GMC_X));
1869437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1870437b3eda28a4bf098efa80598cab67f190275266Fei Jiang            /* TODO: GMC Motion Vectors */
1871437b3eda28a4bf098efa80598cab67f190275266Fei Jiang            /* It is still needed to specify the precision of the motion vectors (should they be in        */
1872437b3eda28a4bf098efa80598cab67f190275266Fei Jiang            /* half-sample, quarter-sample...?) and how much processing    is done on the firmware on        */
1873dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun            /* the values of the warping points.                                                        */
1874dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1875437b3eda28a4bf098efa80598cab67f190275266Fei Jiang            // TODO: Which index to use?
18760fd26f1f2d1111fd6532f949cdc8d5d1bfc51cffnguo            int sprite_index = 0;
18770fd26f1f2d1111fd6532f949cdc8d5d1bfc51cffnguo            while (sprite_index < 3) {
18780fd26f1f2d1111fd6532f949cdc8d5d1bfc51cffnguo                if (ctx->pic_params->sprite_trajectory_du[sprite_index] || ctx->pic_params->sprite_trajectory_dv[sprite_index])
18790fd26f1f2d1111fd6532f949cdc8d5d1bfc51cffnguo                    break;
18800fd26f1f2d1111fd6532f949cdc8d5d1bfc51cffnguo                sprite_index++;
18810fd26f1f2d1111fd6532f949cdc8d5d1bfc51cffnguo            }
18820fd26f1f2d1111fd6532f949cdc8d5d1bfc51cffnguo            if (sprite_index >= 3)
18830fd26f1f2d1111fd6532f949cdc8d5d1bfc51cffnguo                sprite_index = 0;
1884dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1885437b3eda28a4bf098efa80598cab67f190275266Fei Jiang            /* BE_GMC_X                                                                */
1886437b3eda28a4bf098efa80598cab67f190275266Fei Jiang            cmd = 0;
1887dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun            REGIO_WRITE_FIELD_LITE(cmd, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_GMC_X, GMC_X, ctx->pic_params->sprite_trajectory_du[sprite_index] & 0x3FFF);
1888dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun            psb_cmdbuf_rendec_write(cmdbuf, cmd);
1889437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1890437b3eda28a4bf098efa80598cab67f190275266Fei Jiang            /* BE_GMC_Y                                                                */
1891437b3eda28a4bf098efa80598cab67f190275266Fei Jiang            cmd = 0;
1892dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun            REGIO_WRITE_FIELD_LITE(cmd, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_GMC_Y, GMC_Y, ctx->pic_params->sprite_trajectory_dv[sprite_index] & 0x3FFF);
1893dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun            psb_cmdbuf_rendec_write(cmdbuf, cmd);
1894437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1895dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun            psb_cmdbuf_rendec_end(cmdbuf);
1896437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        }
1897437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1898437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1899dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_start(cmdbuf, RENDEC_REGISTER_OFFSET(MSVDX_VEC, MPEG4_CR_VEC_MPEG4_BE_SLICE0));
1900dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1901437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* BE_SLICE0                                                                    */
1902437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    cmd = 0;
1903dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_SLICE0, BE_FIRST_MB_IN_SLICE_Y, slice_param->macroblock_number / width_mb);
1904dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_SLICE0, BE_FIRST_MB_IN_SLICE_X, slice_param->macroblock_number % width_mb);
1905dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_write(cmdbuf, cmd);
1906437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1907437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* CR_VEC_MPEG4_BE_VOP_TR                                                        */
1908437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    cmd = 0;
1909dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_TRB, BE_TRB, ctx->pic_params->TRB);
1910dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_write(cmdbuf, cmd);
1911437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1912437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    cmd = 0;
1913dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_VOP_TRD, BE_TRD, ctx->pic_params->TRD);
1914dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_write(cmdbuf, cmd);
1915437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1916dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_end(cmdbuf);
1917437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1918437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1919437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Send Slice Data for every slice */
1920437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* MUST be the last slice sent */
1921dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_start(cmdbuf, RENDEC_REGISTER_OFFSET(MSVDX_CMDS, SLICE_PARAMS));
1922437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1923437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Slice params command                                                            */
1924437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    cmd = 0;
1925dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd,
1926dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                           MSVDX_CMDS,
1927dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                           SLICE_PARAMS,
1928dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                           RND_CTL_BIT,
1929dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                           ((PICTURE_CODING_I == ctx->pic_params->vop_fields.bits.vop_coding_type ||
1930dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                             PICTURE_CODING_B == ctx->pic_params->vop_fields.bits.vop_coding_type) ?
1931dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun                            0 : ctx->pic_params->vop_fields.bits.vop_rounding_type));
1932dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_CMDS, SLICE_PARAMS, MODE_CONFIG,            ctx->pic_params->vol_fields.bits.sprite_warping_accuracy);
1933dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_CMDS, SLICE_PARAMS, SUBPEL_FILTER_MODE,    ctx->pic_params->vol_fields.bits.quarter_sample);
1934437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* SP and ASP profiles don't support field coding in different VOPs */
1935dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_CMDS, SLICE_PARAMS, SLICE_FIELD_TYPE,   2);
1936dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_CMDS, SLICE_PARAMS, SLICE_CODE_TYPE,    ctx->pic_params->vop_fields.bits.vop_coding_type);
1937dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_write(cmdbuf, cmd);
1938dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1939dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_end(cmdbuf);
1940437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
194106c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    *ctx->dec_ctx.p_slice_params = cmd;
1942437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1943437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* CHUNK: Entdec back-end profile and level                                        */
1944dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_start(cmdbuf, RENDEC_REGISTER_OFFSET(MSVDX_VEC, CR_VEC_ENTDEC_BE_CONTROL));
1945dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
1946437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    cmd = 0;
1947dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_VEC, CR_VEC_ENTDEC_BE_CONTROL, ENTDEC_BE_PROFILE, ctx->profile);     /* MPEG4 SP / ASP profile*/
1948dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(cmd, MSVDX_VEC, CR_VEC_ENTDEC_BE_CONTROL, ENTDEC_BE_MODE,    4);             /* 4 - MPEG4             */
1949dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_write(cmdbuf, cmd);
1950437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1951dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_rendec_end(cmdbuf);
19524b5b72d7dd3fe944d75029ff0ca6db1e74600e59Liu, Shuo    /* psb_cmdbuf_rendec_end_block( cmdbuf ); */
1953751400dde1eac64dd41c7de33fcddf8a939e4ab2hding    if (ctx->pic_params->vol_fields.bits.data_partitioned)
1954751400dde1eac64dd41c7de33fcddf8a939e4ab2hding    {
1955751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        /*set buffer pointer to store the parsed data-partition data */
1956751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        psb_cmdbuf_rendec_start(cmdbuf, RENDEC_REGISTER_OFFSET(MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_DATAPARTITION0_BASE_ADDR));
1957751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        psb_cmdbuf_rendec_write_address(cmdbuf, ctx->data_partition_buffer0, ctx->data_partition_buffer0->buffer_ofs);
1958751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        psb_cmdbuf_rendec_end(cmdbuf);
1959751400dde1eac64dd41c7de33fcddf8a939e4ab2hding
1960751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        psb_cmdbuf_rendec_start(cmdbuf, RENDEC_REGISTER_OFFSET(MSVDX_VEC_MPEG4, CR_VEC_MPEG4_BE_DATAPARTITION1_BASE_ADDR));
1961751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        psb_cmdbuf_rendec_write_address(cmdbuf, ctx->data_partition_buffer1, ctx->data_partition_buffer1->buffer_ofs);
1962751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        psb_cmdbuf_rendec_end(cmdbuf);
1963751400dde1eac64dd41c7de33fcddf8a939e4ab2hding   }
1964437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1965437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Send IQ matrices to Rendec */
1966437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    psb__MPEG4_write_qmatrices(ctx);
1967437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
1968437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1969437b3eda28a4bf098efa80598cab67f190275266Fei Jiangstatic void psb__MPEG4_set_frontend_registers(context_MPEG4_p ctx, VASliceParameterBufferMPEG4 *slice_param)
1970437b3eda28a4bf098efa80598cab67f190275266Fei Jiang{
1971437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    psb_cmdbuf_p cmdbuf = ctx->obj_context->cmdbuf;
1972437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    uint32_t FE_slice0;
1973437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    unsigned short width_mb = PIXELS_TO_MB(ctx->pic_params->vop_width);
1974437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1975680952832ef474a95bb0c4fee50c06e5126ad66dKun Wang    psb_cmdbuf_reg_start_block(cmdbuf, 0);
1976437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1977437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* FE_SLICE0                                                                    */
1978437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    FE_slice0 = 0;
1979dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(FE_slice0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_SLICE0, FE_VOP_QUANT,            slice_param->quant_scale);
1980dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(FE_slice0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_SLICE0, FE_FIRST_MB_IN_SLICE_Y, slice_param->macroblock_number / width_mb);
1981dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    REGIO_WRITE_FIELD_LITE(FE_slice0, MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_SLICE0, FE_FIRST_MB_IN_SLICE_X, slice_param->macroblock_number % width_mb);
1982437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1983dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_set(cmdbuf, REGISTER_OFFSET(MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_SLICE0) , FE_slice0);
1984437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1985437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* Entdec Front-End controls*/
1986dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_set(cmdbuf, REGISTER_OFFSET(MSVDX_VEC, CR_VEC_ENTDEC_FE_CONTROL) , ctx->FEControl);
1987437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1988437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* FE_SPS0                                                                        */
1989dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_set(cmdbuf, REGISTER_OFFSET(MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_SPS0) , ctx->FE_SPS0);
1990437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1991437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* FE_VOP_SPS0                                                                    */
1992dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_set(cmdbuf, REGISTER_OFFSET(MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_VOP_SPS0) , ctx->FE_VOP_SPS0);
1993437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1994437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
1995dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (ctx->pic_params->vol_fields.bits.short_video_header) {
1996437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        /* FE_PICSH_PPS0                                                            */
1997dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun        psb_cmdbuf_reg_set(cmdbuf, REGISTER_OFFSET(MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_PICSH_PPS0) , ctx->FE_PICSH_PPS0);
1998437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
1999437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
2000437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    /* FE_VOP_PPS0 */
2001dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_set(cmdbuf, REGISTER_OFFSET(MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_VOP_PPS0) , ctx->FE_VOP_PPS0);
2002437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
2003dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    psb_cmdbuf_reg_end_block(cmdbuf);
2004751400dde1eac64dd41c7de33fcddf8a939e4ab2hding
2005751400dde1eac64dd41c7de33fcddf8a939e4ab2hding    if (ctx->pic_params->vol_fields.bits.data_partitioned)
2006751400dde1eac64dd41c7de33fcddf8a939e4ab2hding    {
2007751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        /*set buffer pointer to store the parsed data-partition data */
2008751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        psb_cmdbuf_reg_start_block(cmdbuf, 0);
2009751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        psb_cmdbuf_reg_set_address(cmdbuf, REGISTER_OFFSET(MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_DATAPARTITION0_BASE_ADDR),
2010751400dde1eac64dd41c7de33fcddf8a939e4ab2hding                                   ctx->data_partition_buffer0, ctx->data_partition_buffer0->buffer_ofs);
2011751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        psb_cmdbuf_reg_end_block(cmdbuf);
2012751400dde1eac64dd41c7de33fcddf8a939e4ab2hding
2013751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        psb_cmdbuf_reg_start_block(cmdbuf, 0);
2014751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        psb_cmdbuf_reg_set_address(cmdbuf, REGISTER_OFFSET(MSVDX_VEC_MPEG4, CR_VEC_MPEG4_FE_DATAPARTITION1_BASE_ADDR),
2015751400dde1eac64dd41c7de33fcddf8a939e4ab2hding                                   ctx->data_partition_buffer1, ctx->data_partition_buffer1->buffer_ofs);
2016751400dde1eac64dd41c7de33fcddf8a939e4ab2hding        psb_cmdbuf_reg_end_block(cmdbuf);
2017751400dde1eac64dd41c7de33fcddf8a939e4ab2hding   }
2018437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
2019437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
202006c7c30796be2e6b18a6263956a0ca308616ecdeLi Zengstatic void psb__MPEG4_begin_slice(context_DEC_p dec_ctx, VASliceParameterBufferBase *vld_slice_param)
20214b5b72d7dd3fe944d75029ff0ca6db1e74600e59Liu, Shuo{
202206c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    VASliceParameterBufferMPEG4 *slice_param = (VASliceParameterBufferMPEG4 *) vld_slice_param;
20234b5b72d7dd3fe944d75029ff0ca6db1e74600e59Liu, Shuo
202406c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    dec_ctx->bits_offset = slice_param->macroblock_offset;
202506c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    /* dec_ctx->SR_flags = 0; */
2026437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
2027680952832ef474a95bb0c4fee50c06e5126ad66dKun Wang
202806c7c30796be2e6b18a6263956a0ca308616ecdeLi Zengstatic void psb__MPEG4_process_slice_data(context_DEC_p dec_ctx, VASliceParameterBufferBase *vld_slice_param)
2029437b3eda28a4bf098efa80598cab67f190275266Fei Jiang{
203006c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    VASliceParameterBufferMPEG4 *slice_param = (VASliceParameterBufferMPEG4 *) vld_slice_param;
203106c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    context_MPEG4_p ctx = (context_MPEG4_p)dec_ctx;
2032437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
203306c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    psb__MPEG4_write_VLC_tables(ctx);
203406c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    psb__MPEG4_set_picture_params(ctx, slice_param);
203506c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    psb__MPEG4_set_frontend_registers(ctx, slice_param);
203606c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    psb__MPEG4_set_backend_registers(ctx, slice_param);
2037437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
2038437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
203906c7c30796be2e6b18a6263956a0ca308616ecdeLi Zengstatic void psb__MPEG4_end_slice(context_DEC_p dec_ctx)
2040437b3eda28a4bf098efa80598cab67f190275266Fei Jiang{
204106c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    context_MPEG4_p ctx = (context_MPEG4_p)dec_ctx;
2042437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
204339eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng#ifdef PSBVIDEO_MSVDX_EC
204439eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    if (ctx->obj_context->driver_data->ec_enabled)
204539eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng        ctx->obj_context->flags |= (FW_ERROR_DETECTION_AND_RECOVERY); /* FW_ERROR_DETECTION_AND_RECOVERY */
204639eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng#endif
204739eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng
204806c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    ctx->obj_context->first_mb = 0;
204906c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    ctx->obj_context->last_mb = ((ctx->picture_height_mb - 1) << 8) | (ctx->picture_width_mb - 1);
205006c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    *(ctx->dec_ctx.slice_first_pic_last) = (ctx->obj_context->first_mb << 16) | (ctx->obj_context->last_mb);
2051437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
2052437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
205339eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng#ifdef PSBVIDEO_MSVDX_EC
205439eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zengstatic void psb__MPEG4_choose_ec_frames(context_MPEG4_p ctx)
205539eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng{
2056e6f5c18e378c3843e5ac976c7493fd48d5589954Sun, Jian    if (ctx->pic_params == NULL)
2057e6f5c18e378c3843e5ac976c7493fd48d5589954Sun, Jian        return;
205839eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    int is_inter = (ctx->pic_params->vop_fields.bits.vop_coding_type == PICTURE_CODING_P ||
205939eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng		    ctx->pic_params->vop_fields.bits.vop_coding_type == PICTURE_CODING_B);
206039eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng
206139eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    ctx->obj_context->ec_target = NULL;
206239eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng
206339eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    /* choose forward ref frame as possible */
206439eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    if (is_inter && ctx->forward_ref_surface)
206539eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng        ctx->obj_context->ec_target = ctx->forward_ref_surface;
206639eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng
206739eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    /* Otherwise we conceal from the previous I or P frame*/
206839eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    if (!ctx->obj_context->ec_target)
206939eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    {
207039eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng        ctx->obj_context->ec_target = ctx->obj_context->ec_candidate;
207139eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    }
207239eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng
207339eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    if (ctx->pic_params->vop_fields.bits.vop_coding_type != PICTURE_CODING_B)
207439eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    {
207539eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng        ctx->obj_context->ec_candidate = ctx->obj_context->current_render_target; /* in case the next frame is an I frame we will need this */
207639eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    }
207739eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    if (!ctx->obj_context->ec_target) {
207839eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng        ctx->obj_context->ec_target = ctx->obj_context->current_render_target;
207939eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    }
208039eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng}
208139eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng#endif
208239eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng
2083437b3eda28a4bf098efa80598cab67f190275266Fei Jiangstatic VAStatus pnw_MPEG4_BeginPicture(
2084dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    object_context_p obj_context)
2085437b3eda28a4bf098efa80598cab67f190275266Fei Jiang{
2086437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    INIT_CONTEXT_MPEG4
2087dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
2088dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (ctx->pic_params) {
2089437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        free(ctx->pic_params);
2090437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        ctx->pic_params = NULL;
2091437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
2092437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->load_non_intra_quant_mat = FALSE;
2093437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    ctx->load_intra_quant_mat = FALSE;
2094dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
2095437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    return VA_STATUS_SUCCESS;
2096437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
2097437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
209806c7c30796be2e6b18a6263956a0ca308616ecdeLi Zengstatic VAStatus pnw_MPEG4_process_buffer(
209906c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    context_DEC_p dec_ctx,
210006c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    object_buffer_p buffer)
2101437b3eda28a4bf098efa80598cab67f190275266Fei Jiang{
2102437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    VAStatus vaStatus = VA_STATUS_SUCCESS;
210306c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    context_MPEG4_p ctx = (context_MPEG4_p)dec_ctx;
210406c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    object_buffer_p obj_buffer = buffer;
2105751400dde1eac64dd41c7de33fcddf8a939e4ab2hding
210606c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    switch (obj_buffer->type) {
210706c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    case VAPictureParameterBufferType:
210806c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng        drv_debug_msg(VIDEO_DEBUG_GENERAL, "pnw_MPEG4_RenderPicture got VAPictureParameterBuffer\n");
210906c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng        vaStatus = psb__MPEG4_process_picture_param(ctx, obj_buffer);
211006c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng        DEBUG_FAILURE;
211106c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng        break;
2112dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
211306c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    case VAIQMatrixBufferType:
211406c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng        drv_debug_msg(VIDEO_DEBUG_GENERAL, "pnw_MPEG4_RenderPicture got VAIQMatrixBufferType\n");
211506c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng        vaStatus = psb__MPEG4_process_iq_matrix(ctx, obj_buffer);
211606c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng        DEBUG_FAILURE;
211706c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng        break;
2118dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun
211906c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    default:
212006c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng        vaStatus = VA_STATUS_ERROR_UNKNOWN;
212106c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng        DEBUG_FAILURE;
2122437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
2123437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
2124437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    return vaStatus;
2125437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
2126437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
2127437b3eda28a4bf098efa80598cab67f190275266Fei Jiangstatic VAStatus pnw_MPEG4_EndPicture(
2128dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    object_context_p obj_context)
2129437b3eda28a4bf098efa80598cab67f190275266Fei Jiang{
2130437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    INIT_CONTEXT_MPEG4
213139eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    psb_surface_p target_surface = ctx->obj_context->current_render_target->psb_surface;
213239eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    psb_driver_data_p driver_data = obj_context->driver_data;
21339aa931cb8cdc82ca97500a3a642ba367ab456211Li Zeng    VAStatus vaStatus = VA_STATUS_SUCCESS;
213439eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng
213539eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng#ifdef PSBVIDEO_MSVDX_EC
213639eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    /* Sent the HOST_BE_OPP command to detect slice error */
213739eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    if (ctx->pic_params && ctx->pic_params->vol_fields.bits.interlaced)
213839eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng        driver_data->ec_enabled = 0;
213939eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng
214039eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    if (driver_data->ec_enabled) {
214139eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng        uint32_t rotation_flags = 0;
214239eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng        uint32_t ext_stride_a = 0;
214339eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng        object_surface_p ec_target;
214439eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng
214539eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng        psb__MPEG4_choose_ec_frames(ctx);
214639eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng        ec_target = ctx->obj_context->ec_target;
214739eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng        REGIO_WRITE_FIELD_LITE(ext_stride_a, MSVDX_CMDS, EXTENDED_ROW_STRIDE, EXT_ROW_STRIDE, target_surface->stride / 64);
214839eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng
214939eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    /* FIXME ec ignor rotate condition */
21509aa931cb8cdc82ca97500a3a642ba367ab456211Li Zeng        if(ec_target) {
21519aa931cb8cdc82ca97500a3a642ba367ab456211Li Zeng	    if (psb_context_get_next_cmdbuf(ctx->obj_context)) {
21529aa931cb8cdc82ca97500a3a642ba367ab456211Li Zeng                vaStatus = VA_STATUS_ERROR_UNKNOWN;
21539aa931cb8cdc82ca97500a3a642ba367ab456211Li Zeng                DEBUG_FAILURE;
21549aa931cb8cdc82ca97500a3a642ba367ab456211Li Zeng                return vaStatus;
21559aa931cb8cdc82ca97500a3a642ba367ab456211Li Zeng            }
21569aa931cb8cdc82ca97500a3a642ba367ab456211Li Zeng
215739eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng            if (psb_context_submit_host_be_opp(ctx->obj_context,
215839eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng                                          &target_surface->buf,
215939eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng                                          &ec_target->psb_surface->buf,
216039eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng                                          NULL,
216139eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng                                          ctx->picture_width_mb,
216239eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng                                          ctx->picture_height_mb,
216339eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng                                          rotation_flags,
216439eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng                                          ctx->field_type,
216539eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng                                          ext_stride_a,
216639eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng                                          target_surface->chroma_offset + target_surface->buf.buffer_ofs,
216739eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng                                          ec_target->psb_surface->chroma_offset + ec_target->psb_surface->buf.buffer_ofs)) {
21689aa931cb8cdc82ca97500a3a642ba367ab456211Li Zeng                  return VA_STATUS_ERROR_UNKNOWN;
21699aa931cb8cdc82ca97500a3a642ba367ab456211Li Zeng            }
217039eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng        }
217139eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng    }
217239eff7a021afd8ec1a6f375dbc6476cbaa485d5dLi Zeng#endif
2173437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
2174dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (psb_context_flush_cmdbuf(ctx->obj_context)) {
2175437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        return VA_STATUS_ERROR_UNKNOWN;
2176437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
2177437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
2178dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    if (ctx->pic_params) {
2179437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        free(ctx->pic_params);
2180437b3eda28a4bf098efa80598cab67f190275266Fei Jiang        ctx->pic_params = NULL;
2181437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    }
2182437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
2183437b3eda28a4bf098efa80598cab67f190275266Fei Jiang    return VA_STATUS_SUCCESS;
2184437b3eda28a4bf098efa80598cab67f190275266Fei Jiang}
2185437b3eda28a4bf098efa80598cab67f190275266Fei Jiang
2186437b3eda28a4bf098efa80598cab67f190275266Fei Jiangstruct format_vtable_s pnw_MPEG4_vtable = {
2187dc1209519284865899ca8d990b3a2c7dbca8ae08wangkunqueryConfigAttributes:
2188dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    pnw_MPEG4_QueryConfigAttributes,
2189dc1209519284865899ca8d990b3a2c7dbca8ae08wangkunvalidateConfig:
2190dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    pnw_MPEG4_ValidateConfig,
2191dc1209519284865899ca8d990b3a2c7dbca8ae08wangkuncreateContext:
2192dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    pnw_MPEG4_CreateContext,
2193dc1209519284865899ca8d990b3a2c7dbca8ae08wangkundestroyContext:
2194dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    pnw_MPEG4_DestroyContext,
2195dc1209519284865899ca8d990b3a2c7dbca8ae08wangkunbeginPicture:
2196dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    pnw_MPEG4_BeginPicture,
2197dc1209519284865899ca8d990b3a2c7dbca8ae08wangkunrenderPicture:
219806c7c30796be2e6b18a6263956a0ca308616ecdeLi Zeng    vld_dec_RenderPicture,
2199dc1209519284865899ca8d990b3a2c7dbca8ae08wangkunendPicture:
2200dc1209519284865899ca8d990b3a2c7dbca8ae08wangkun    pnw_MPEG4_EndPicture
2201437b3eda28a4bf098efa80598cab67f190275266Fei Jiang};
2202