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