1aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/******************************************************************************
2aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani *
3aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Copyright (C) 2015 The Android Open Source Project
4aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani *
5aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Licensed under the Apache License, Version 2.0 (the "License");
6aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * you may not use this file except in compliance with the License.
7aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * You may obtain a copy of the License at:
8aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani *
9aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * http://www.apache.org/licenses/LICENSE-2.0
10aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani *
11aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Unless required by applicable law or agreed to in writing, software
12aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * distributed under the License is distributed on an "AS IS" BASIS,
13aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * See the License for the specific language governing permissions and
15aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * limitations under the License.
16aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani *
17aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani *****************************************************************************
18aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore
19aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani*/
20aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include <stdio.h>
21aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include "iv_datatypedef.h"
22aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include "iv.h"
23aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include "impeg2_buf_mgr.h"
24aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include "impeg2_disp_mgr.h"
25aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include "impeg2_defs.h"
26aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include "impeg2_platform_macros.h"
27aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani#include "impeg2_globals.h"
28aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
29aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Table for converting the quantizer_scale_code to quantizer_scale */
30aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst UWORD8 gau1_impeg2_non_linear_quant_scale[] =
31aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
32aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    0, 1, 2, 3, 4, 5, 6, 7,
33aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    8,10,12,14,16,18,20,22,
34aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    24,28,32,36,40,44,48,52,
35aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    56,64,72,80,88,96,104,112
36aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
37aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
38aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
39aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Default quantizer matrix to be used for intra blocks */
40aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst UWORD8 gau1_impeg2_intra_quant_matrix_default[] =
41aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
42aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    8, 16, 19, 22, 26, 27, 29, 34,
43aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    16, 16, 22, 24, 27, 29, 34, 37,
44aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    19, 22, 26, 27, 29, 34, 34, 38,
45aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    22, 22, 26, 27, 29, 34, 37, 40,
46aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    22, 26, 27, 29, 32, 35, 40, 48,
47aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    26, 27, 29, 32, 35, 40, 48, 58,
48aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    26, 27, 29, 34, 38, 46, 56, 69,
49aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    27, 29, 35, 38, 46, 56, 69, 83
50aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
51aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
52aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Default quantizer matrix to be used for inter blocks */
53aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst UWORD8 gau1_impeg2_inter_quant_matrix_default[] =
54aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
55aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    16,16,16,16,16,16,16,16,
56aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    16,16,16,16,16,16,16,16,
57aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    16,16,16,16,16,16,16,16,
58aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    16,16,16,16,16,16,16,16,
59aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    16,16,16,16,16,16,16,16,
60aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    16,16,16,16,16,16,16,16,
61aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    16,16,16,16,16,16,16,16,
62aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    16,16,16,16,16,16,16,16
63aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
64aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
65aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Table to perform inverse scan when the scan direction is zigzag */
66aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst UWORD8 gau1_impeg2_inv_scan_zig_zag[] =
67aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
68aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani     0,  1,  8, 16,  9,  2,  3, 10,
69aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    17, 24, 32, 25, 18, 11,  4,  5,
70aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    12, 19, 26, 33, 40, 48, 41, 34,
71aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    27, 20, 13,  6,  7, 14, 21, 28,
72aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    35, 42, 49, 56, 57, 50, 43, 36,
73aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    29, 22, 15, 23, 30, 37, 44, 51,
74aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    58, 59, 52, 45, 38, 31, 39, 46,
75aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    53, 60, 61, 54, 47, 55, 62, 63
76aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
77aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
78aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*  Table to perform inverse scan when the direction of scanning is vertical */
79aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst UWORD8 gau1_impeg2_inv_scan_vertical[] =
80aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
81aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    0, 8, 16, 24, 1, 9, 2, 10,
82aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    17, 25, 32, 40, 48, 56, 57, 49,
83aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    41, 33, 26, 18, 3, 11, 4, 12,
84aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    19, 27, 34, 42, 50, 58, 35, 43,
85aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    51, 59, 20, 28, 5, 13, 6, 14,
86aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    21, 29, 36, 44, 52, 60, 37, 45,
87aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    53, 61, 22, 30, 7, 15, 23, 31,
88aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    38, 46, 54, 62, 39, 47, 55, 63
89aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
90aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
91aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/
92aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Table that indicate which interpolation  type is to used                  */
93aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/
94aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Chroma when motion vector is positive */
95aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst UWORD16 gau2_impeg2_chroma_interp_mv[][16] =
96aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
97aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    /* Pos X Pos Y */
98aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {
99aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  0,  1,  1,
100aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  0,  1,  1,
101aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        2,  2,  3,  3,
102aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        2,  2,  3,  3
103aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    },
104aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    /* Neg X Pos Y */
105aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {
106aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  1,  1,  0,
107aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  1,  1,  0,
108aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        2,  3,  3,  2,
109aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        2,  3,  3,  2
110aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    },
111aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    /* Pos X Neg Y */
112aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {
113aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  0,  1,  1,
114aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        2,  2,  3,  3,
115aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        2,  2,  3,  3,
116aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  0,  1,  1
117aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    },
118aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    /* Neg X Neg Y */
119aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {
120aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  1,  1, 0,
121aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        2,  3,  3, 2,
122aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        2,  3,  3, 2,
123aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  1,  1, 0
124aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    }
125aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
126aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/
127aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Input #1 Offset in bytes                                                  */
128aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/
129aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Chroma */
130aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst UWORD16 gau2_impeg2_chroma_interp_inp1[][16] =
131aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
132aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    /* Pos X Pos Y */
133aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {
134aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  0,  0,  0,
135aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  0,  0,  0,
136aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  0,  0,  0,
137aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  0,  0,  0
138aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    },
139aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    /* Neg X Pos Y */
140aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {
141aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  0,  0,  4,
142aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  0,  0,  4,
143aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  0,  0,  4,
144aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  0,  0,  4
145aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    },
146aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    /* Pos X Neg Y */
147aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {
148aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  0,  0,  0,
149aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  0,  0,  0,
150aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  0,  0,  0,
151aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        72, 72, 72, 72
152aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    },
153aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    /* Neg X Neg Y */
154aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {
155aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  0,  0,  4,
156aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  0,  0,  4,
157aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        0,  0,  0,  4,
158aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani        72, 72, 72, 76
159aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    }
160aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
161aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Luma */
162aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst UWORD16 gau2_impeg2_luma_interp_inp1[] =
163aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
164aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    1,  1,  3,  3,
165aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    1,  1,  3,  3,
166aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    37, 37, 39, 39,
167aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    37, 37, 39, 39
168aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
169aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/
170aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Input #2 Offset from Input #1 in bytes                                    */
171aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/
172aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*
173aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    FXFY  0,
174aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    HXFY  2,
175aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    FXHY 36,
176aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    HXHY 36
177aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani*/
178aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst UWORD16 gau2_impeg2_luma_interp_inp2[] =
179aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
180aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani      0,  2,  0,  2,
181aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani     36, 36, 36, 36,
182aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani      0,  2,  0,  2,
183aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani     36, 36, 36, 36
184aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
185aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst UWORD16 gau2_impeg2_chroma_interp_inp2[] =
186aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
187aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    /* FXFY */
188aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    0,
189aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    /* HXFY */
190aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    4,
191aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    /* FXHY */
192aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    72,
193aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    /* HXHY */
194aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    72
195aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
196aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
197aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/
198aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Corresponds to Table 6-4 frame_rate_value  of the standard                */
199aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/
200aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*
201aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    frame_rate_code frame_rate_value
202aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
203aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    0000            Forbidden
204aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    0001            24 000 � 1001
205aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    0010            24
206aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    0011            25
207aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    0100            30 000 � 1001
208aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    0101            30
209aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    0110            50
210aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    0111            60 000 � 1001
211aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    1000            60
212aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    1001            Reserved
213aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    ....
214aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    1111            Reserved
215aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani*/
216aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst UWORD16 gau2_impeg2_frm_rate_code[][2] =
217aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
218aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {1    ,    1}, /* Forbidden */
219aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {24000, 1001},
220aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {24000, 1000},
221aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {25000, 1000},
222aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {30000, 1001},
223aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {30000, 1000},
224aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {50000, 1000},
225aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {60000, 1001},
226aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {60000, 1000}
227aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    /* Rest reserved */
228aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
229aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
230aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst WORD16 gai2_impeg2_idct_q15[] =
231aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
232aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    23170,    23170,    23170,    23170,    23170,    23170,    23170,    23170,
233aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    32138,    27246,    18205,     6393,    -6393,   -18205,   -27246,   -32138,
234aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    30274,    12540,   -12540,   -30274,   -30274,   -12540,    12540,    30274,
235aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    27246,    -6393,   -32138,   -18205,    18205,    32138,     6393,   -27246,
236aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    23170,   -23170,   -23170,    23170,    23170,   -23170,   -23170,    23170,
237aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    18205,   -32138,     6393,    27246,   -27246,    -6393,    32138,   -18205,
238aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    12540,   -30274,    30274,   -12540,   -12540,    30274,   -30274,    12540,
239aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani     6393,   -18205,    27246,   -32138,    32138,   -27246,    18205,    -6393,
240aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
241aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
242aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst WORD16 gai2_impeg2_idct_q11[] =
243aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
244aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    1448,     1448,     1448,     1448,     1448,     1448,     1448,     1448,
245aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    2009,     1703,     1138,      400,     -400,    -1138,    -1703,    -2009,
246aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    1892,      784,     -784,    -1892,    -1892,     -784,      784,     1892,
247aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    1703,     -400,    -2009,    -1138,     1138,     2009,      400,    -1703,
248aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    1448,    -1448,    -1448,     1448,     1448,    -1448,    -1448,     1448,
249aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    1138,    -2009,      400,     1703,    -1703,     -400,     2009,    -1138,
250aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani     784,    -1892,     1892,     -784,     -784,     1892,    -1892,      784,
251aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani     400,    -1138,     1703,    -2009,     2009,    -1703,     1138,     -400,
252aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
253aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
254aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst WORD16 gai2_impeg2_idct_even_8_q15[][8] =
255aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
256aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {  23170,  23170,  23170,  23170,  23170,  23170,  23170,  23170  },
257aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {  12540, -30274,  12540, -30274,  12540, -30274,  12540, -30274  },
258aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {  30274,  12540,  30274,  12540,  30274,  12540,  30274,  12540  },
259aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {  23170, -23170,  23170, -23170,  23170, -23170,  23170, -23170  }
260aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
261aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst WORD16 gai2_impeg2_idct_odd_8_q15[][8] =
262aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
263aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {  32138,  27246,  32138,  27246,  32138,  27246,  32138,  27246 },
264aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {  18205,   6393,  18205,   6393,  18205,   6393,  18205,   6393 },
265aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {  27246,  -6393,  27246,  -6393,  27246,  -6393,  27246,  -6393 },
266aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {  32138,  18205,  32138,  18205,  32138,  18205,  32138,  18205 },
267aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {  18205, -32138,  18205, -32138,  18205, -32138,  18205, -32138 },
268aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {  6393,   27246,   6393,  27246,   6393,  27246,   6393,  27246 },
269aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {  6393,  -18205,   6393, -18205,   6393, -18205,   6393, -18205 },
270aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {  27246, -32138,  27246, -32138,  27246, -32138,  27246, -32138 },
271aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
272aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
273aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst WORD16 gai2_impeg2_idct_even_8_q11[][8] =
274aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
275aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {   1448,   1448,   1448,   1448,   1448,   1448,   1448,   1448 },
276aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {    784,  -1892,    784,  -1892,    784,  -1892,    784,  -1892 },
277aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {   1892,    784,   1892,    784,   1892,    784,   1892,    784 },
278aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {   1448,  -1448,   1448,  -1448,   1448,  -1448,   1448,  -1448 }
279aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
280aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst WORD16 gai2_impeg2_idct_odd_8_q11[][8] =
281aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
282aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {   2009,   1703,   2009,   1703,   2009,   1703,   2009,   1703 },
283aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {   1138,    400,   1138,    400,   1138,    400,   1138,    400 },
284aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {   1703,   -400,   1703,   -400,   1703,   -400,   1703,   -400 },
285aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {   2009,   1138,   2009,   1138,   2009,   1138,   2009,   1138 },
286aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {   1138,  -2009,   1138,  -2009,   1138,  -2009,   1138,  -2009 },
287aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {    400,   1703,    400,   1703,    400,   1703,    400,   1703 },
288aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {    400,  -1138,    400,  -1138,    400,  -1138,    400,  -1138 },
289aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    {   1703,  -2009,   1703,  -2009,   1703,  -2009,   1703,  -2009 },
290aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
291aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
292aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
293aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
294aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/
295aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Last row IDCT Coefficients in Q11 format                                           */
296aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/
297aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst WORD16 gai2_impeg2_idct_last_row_q11[] =
298aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
299aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani     400,    -1138,     1703,    -2009,     2009,    -1703,     1138,     -400,
300aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
301aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
302aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst WORD16 gai2_impeg2_idct_first_col_q15[] =
303aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
304aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani   23170,    32138,    30274,    27246,    23170,    18205,    12540,     6393,
305aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
306aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
307aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst WORD16 gai2_impeg2_idct_first_col_q11[] =
308aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
309aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani     1448,    2009,     1892,     1703,     1448,     1138,      784,      400,
310aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
311aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
312aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/
313aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Output of first stage dct (using gai2_impeg2_idct_q15 as coeffs)          */
314aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* for a 1D data (0, 0, 0, 0, 0, 0, 0, 1)                                    */
315aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/
316aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
317aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst WORD16 gai2_impeg2_mismatch_stg1_outp[] =
318aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
319aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    2, -4, 7, -8, 8, -7, 4, -2
320aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
321aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
322aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst WORD16 gai2_impeg2_mismatch_stg2_additive[] =
323aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
324aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani     800,   -2276,  3406,   -4018,  4018,   -3406,  2276,   -800,
325aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani     -1600, 4552,   -6812,  8036,   -8036,  6812,   -4552,  1600,
326aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani     2800,  -7966,  11921,  -14063, 14063,  -11921, 7966,   -2800,
327aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani     -3200, 9104,   -13624, 16072,  -16072, 13624,  -9104,  3200,
328aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani     3200,  -9104,  13624,  -16072, 16072,  -13624, 9104,   -3200,
329aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani     -2800, 7966,   -11921, 14063,  -14063, 11921,  -7966,  2800,
330aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani     1600,  -4552,  6812,   -8036,  8036,   -6812,  4552,   -1600,
331aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani     -800,  2276,   -3406,  4018,   -4018,  3406,   -2276,  800,
332aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
333aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
334aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani
335aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst UWORD8 gau1_impeg2_zerobuf[] =
336aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani{
337aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    0, 0, 0, 0, 0, 0, 0, 0,
338aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    0, 0, 0, 0, 0, 0, 0, 0,
339aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    0, 0, 0, 0, 0, 0, 0, 0,
340aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    0, 0, 0, 0, 0, 0, 0, 0,
341aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    0, 0, 0, 0, 0, 0, 0, 0,
342aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    0, 0, 0, 0, 0, 0, 0, 0,
343aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    0, 0, 0, 0, 0, 0, 0, 0,
344aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani    0, 0, 0, 0, 0, 0, 0, 0,
345aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani};
346aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/
347aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/* Tables of offset needed to address block in an MB                         */
348aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhani/*****************************************************************************/
349aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst WORD16  gai2_impeg2_blk_y_off_fld[]  = {0,0,1,1};
350aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst WORD16  gai2_impeg2_blk_y_off_frm[]  = {0,0,8,8};
351aed24eee7ddfc93f1436b0c1679431bd286879b4Venkatarama Avadhaniconst WORD16  gai2_impeg2_blk_x_off[]      = {0,8,0,8};
352