1cabdff1aSopenharmony_ci/* 2cabdff1aSopenharmony_ci * Copyright (C) 2006 Aurelien Jacobs <aurel@gnuage.org> 3cabdff1aSopenharmony_ci * 4cabdff1aSopenharmony_ci * This file is part of FFmpeg. 5cabdff1aSopenharmony_ci * 6cabdff1aSopenharmony_ci * FFmpeg is free software; you can redistribute it and/or 7cabdff1aSopenharmony_ci * modify it under the terms of the GNU Lesser General Public 8cabdff1aSopenharmony_ci * License as published by the Free Software Foundation; either 9cabdff1aSopenharmony_ci * version 2.1 of the License, or (at your option) any later version. 10cabdff1aSopenharmony_ci * 11cabdff1aSopenharmony_ci * FFmpeg is distributed in the hope that it will be useful, 12cabdff1aSopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of 13cabdff1aSopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14cabdff1aSopenharmony_ci * Lesser General Public License for more details. 15cabdff1aSopenharmony_ci * 16cabdff1aSopenharmony_ci * You should have received a copy of the GNU Lesser General Public 17cabdff1aSopenharmony_ci * License along with FFmpeg; if not, write to the Free Software 18cabdff1aSopenharmony_ci * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 19cabdff1aSopenharmony_ci */ 20cabdff1aSopenharmony_ci 21cabdff1aSopenharmony_ci/** 22cabdff1aSopenharmony_ci * @file 23cabdff1aSopenharmony_ci * VP5 compatible video decoder 24cabdff1aSopenharmony_ci */ 25cabdff1aSopenharmony_ci 26cabdff1aSopenharmony_ci#ifndef AVCODEC_VP5DATA_H 27cabdff1aSopenharmony_ci#define AVCODEC_VP5DATA_H 28cabdff1aSopenharmony_ci 29cabdff1aSopenharmony_ci#include <stdint.h> 30cabdff1aSopenharmony_ci 31cabdff1aSopenharmony_cistatic const uint8_t vp5_coeff_groups[] = { 32cabdff1aSopenharmony_ci -1, 0, 1, 1, 2, 1, 1, 2, 33cabdff1aSopenharmony_ci 2, 1, 1, 2, 2, 2, 1, 2, 34cabdff1aSopenharmony_ci 2, 2, 2, 2, 1, 1, 2, 2, 35cabdff1aSopenharmony_ci 3, 3, 4, 3, 4, 4, 4, 3, 36cabdff1aSopenharmony_ci 3, 3, 3, 3, 4, 3, 3, 3, 37cabdff1aSopenharmony_ci 4, 4, 4, 4, 4, 3, 3, 4, 38cabdff1aSopenharmony_ci 4, 4, 3, 4, 4, 4, 4, 4, 39cabdff1aSopenharmony_ci 4, 4, 5, 5, 5, 5, 5, 5, 40cabdff1aSopenharmony_ci}; 41cabdff1aSopenharmony_ci 42cabdff1aSopenharmony_cistatic const uint8_t vp5_vmc_pct[2][11] = { 43cabdff1aSopenharmony_ci { 243, 220, 251, 253, 237, 232, 241, 245, 247, 251, 253 }, 44cabdff1aSopenharmony_ci { 235, 211, 246, 249, 234, 231, 248, 249, 252, 252, 254 }, 45cabdff1aSopenharmony_ci}; 46cabdff1aSopenharmony_ci 47cabdff1aSopenharmony_cistatic const uint8_t vp5_dccv_pct[2][11] = { 48cabdff1aSopenharmony_ci { 146, 197, 181, 207, 232, 243, 238, 251, 244, 250, 249 }, 49cabdff1aSopenharmony_ci { 179, 219, 214, 240, 250, 254, 244, 254, 254, 254, 254 }, 50cabdff1aSopenharmony_ci}; 51cabdff1aSopenharmony_ci 52cabdff1aSopenharmony_cistatic const uint8_t vp5_ract_pct[3][2][6][11] = { 53cabdff1aSopenharmony_ci { { { 227, 246, 230, 247, 244, 254, 254, 254, 254, 254, 254 }, 54cabdff1aSopenharmony_ci { 202, 254, 209, 231, 231, 249, 249, 253, 254, 254, 254 }, 55cabdff1aSopenharmony_ci { 206, 254, 225, 242, 241, 251, 253, 254, 254, 254, 254 }, 56cabdff1aSopenharmony_ci { 235, 254, 241, 253, 252, 254, 254, 254, 254, 254, 254 }, 57cabdff1aSopenharmony_ci { 234, 254, 248, 254, 254, 254, 254, 254, 254, 254, 254 }, 58cabdff1aSopenharmony_ci { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 } }, 59cabdff1aSopenharmony_ci { { 240, 254, 248, 254, 254, 254, 254, 254, 254, 254, 254 }, 60cabdff1aSopenharmony_ci { 238, 254, 240, 253, 254, 254, 254, 254, 254, 254, 254 }, 61cabdff1aSopenharmony_ci { 244, 254, 251, 254, 254, 254, 254, 254, 254, 254, 254 }, 62cabdff1aSopenharmony_ci { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 }, 63cabdff1aSopenharmony_ci { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 }, 64cabdff1aSopenharmony_ci { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 } } }, 65cabdff1aSopenharmony_ci { { { 206, 203, 227, 239, 247, 254, 253, 254, 254, 254, 254 }, 66cabdff1aSopenharmony_ci { 207, 199, 220, 236, 243, 252, 252, 254, 254, 254, 254 }, 67cabdff1aSopenharmony_ci { 212, 219, 230, 243, 244, 253, 252, 254, 254, 254, 254 }, 68cabdff1aSopenharmony_ci { 236, 237, 247, 252, 253, 254, 254, 254, 254, 254, 254 }, 69cabdff1aSopenharmony_ci { 240, 240, 248, 254, 254, 254, 254, 254, 254, 254, 254 }, 70cabdff1aSopenharmony_ci { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 } }, 71cabdff1aSopenharmony_ci { { 230, 233, 249, 254, 254, 254, 254, 254, 254, 254, 254 }, 72cabdff1aSopenharmony_ci { 238, 238, 250, 254, 254, 254, 254, 254, 254, 254, 254 }, 73cabdff1aSopenharmony_ci { 248, 251, 254, 254, 254, 254, 254, 254, 254, 254, 254 }, 74cabdff1aSopenharmony_ci { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 }, 75cabdff1aSopenharmony_ci { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 }, 76cabdff1aSopenharmony_ci { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 } } }, 77cabdff1aSopenharmony_ci { { { 225, 239, 227, 231, 244, 253, 243, 254, 254, 253, 254 }, 78cabdff1aSopenharmony_ci { 232, 234, 224, 228, 242, 249, 242, 252, 251, 251, 254 }, 79cabdff1aSopenharmony_ci { 235, 249, 238, 240, 251, 254, 249, 254, 253, 253, 254 }, 80cabdff1aSopenharmony_ci { 249, 253, 251, 250, 254, 254, 254, 254, 254, 254, 254 }, 81cabdff1aSopenharmony_ci { 251, 250, 249, 254, 254, 254, 254, 254, 254, 254, 254 }, 82cabdff1aSopenharmony_ci { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 } }, 83cabdff1aSopenharmony_ci { { 243, 244, 250, 250, 254, 254, 254, 254, 254, 254, 254 }, 84cabdff1aSopenharmony_ci { 249, 248, 250, 253, 254, 254, 254, 254, 254, 254, 254 }, 85cabdff1aSopenharmony_ci { 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 }, 86cabdff1aSopenharmony_ci { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 }, 87cabdff1aSopenharmony_ci { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 }, 88cabdff1aSopenharmony_ci { 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254 } } }, 89cabdff1aSopenharmony_ci}; 90cabdff1aSopenharmony_ci 91cabdff1aSopenharmony_cistatic const int16_t vp5_dccv_lc[5][36][2] = { 92cabdff1aSopenharmony_ci { {154, 61}, {141, 54}, { 90, 45}, { 54, 34}, { 54, 13}, {128, 109}, 93cabdff1aSopenharmony_ci {136, 54}, {148, 45}, { 92, 41}, { 54, 33}, { 51, 15}, { 87, 113}, 94cabdff1aSopenharmony_ci { 87, 44}, { 97, 40}, { 67, 36}, { 46, 29}, { 41, 15}, { 64, 80}, 95cabdff1aSopenharmony_ci { 59, 33}, { 61, 31}, { 51, 28}, { 44, 22}, { 33, 12}, { 49, 63}, 96cabdff1aSopenharmony_ci { 69, 12}, { 59, 16}, { 46, 14}, { 31, 13}, { 26, 6}, { 92, 26}, 97cabdff1aSopenharmony_ci {128, 108}, { 77, 119}, { 54, 84}, { 26, 71}, { 87, 19}, { 95, 155} }, 98cabdff1aSopenharmony_ci { {154, 4}, {182, 0}, {159, -8}, {128, -5}, {143, -5}, {187, 55}, 99cabdff1aSopenharmony_ci {182, 0}, {228, -3}, {187, -7}, {174, -9}, {189, -11}, {169, 79}, 100cabdff1aSopenharmony_ci {161, -9}, {192, -8}, {187, -9}, {169, -10}, {136, -9}, {184, 40}, 101cabdff1aSopenharmony_ci {164, -11}, {179, -10}, {174, -10}, {161, -10}, {115, -7}, {197, 20}, 102cabdff1aSopenharmony_ci {195, -11}, {195, -11}, {146, -10}, {110, -6}, { 95, -4}, {195, 39}, 103cabdff1aSopenharmony_ci {182, 55}, {172, 77}, {177, 37}, {169, 29}, {172, 52}, { 92, 162} }, 104cabdff1aSopenharmony_ci { {174, 80}, {164, 80}, { 95, 80}, { 46, 66}, { 56, 24}, { 36, 193}, 105cabdff1aSopenharmony_ci {164, 80}, {166, 77}, {105, 76}, { 49, 68}, { 46, 31}, { 49, 186}, 106cabdff1aSopenharmony_ci { 97, 78}, {110, 74}, { 72, 72}, { 44, 60}, { 33, 30}, { 69, 131}, 107cabdff1aSopenharmony_ci { 61, 61}, { 69, 63}, { 51, 57}, { 31, 48}, { 26, 27}, { 64, 89}, 108cabdff1aSopenharmony_ci { 67, 23}, { 51, 32}, { 36, 33}, { 26, 28}, { 20, 12}, { 44, 68}, 109cabdff1aSopenharmony_ci { 26, 197}, { 41, 189}, { 61, 129}, { 28, 103}, { 49, 52}, {-12, 245} }, 110cabdff1aSopenharmony_ci { {102, 141}, { 79, 166}, { 72, 162}, { 97, 125}, {179, 4}, {307, 0}, 111cabdff1aSopenharmony_ci { 72, 168}, { 69, 175}, { 84, 160}, {105, 127}, {148, 34}, {310, 0}, 112cabdff1aSopenharmony_ci { 84, 151}, { 82, 161}, { 87, 153}, { 87, 135}, {115, 51}, {317, 0}, 113cabdff1aSopenharmony_ci { 97, 125}, {102, 131}, {105, 125}, { 87, 122}, { 84, 64}, { 54, 184}, 114cabdff1aSopenharmony_ci {166, 18}, {146, 43}, {125, 51}, { 90, 64}, { 95, 7}, { 38, 154}, 115cabdff1aSopenharmony_ci {294, 0}, { 13, 225}, { 10, 225}, { 67, 168}, { 0, 167}, {161, 94} }, 116cabdff1aSopenharmony_ci { {172, 76}, {172, 75}, {136, 80}, { 64, 98}, { 74, 67}, {315, 0}, 117cabdff1aSopenharmony_ci {169, 76}, {207, 56}, {164, 66}, { 97, 80}, { 67, 72}, {328, 0}, 118cabdff1aSopenharmony_ci {136, 80}, {187, 53}, {154, 62}, { 72, 85}, { -2, 105}, {305, 0}, 119cabdff1aSopenharmony_ci { 74, 91}, {128, 64}, {113, 64}, { 61, 77}, { 41, 75}, {259, 0}, 120cabdff1aSopenharmony_ci { 46, 84}, { 51, 81}, { 28, 89}, { 31, 78}, { 23, 77}, {202, 0}, 121cabdff1aSopenharmony_ci {323, 0}, {323, 0}, {300, 0}, {236, 0}, {195, 0}, {328, 0} }, 122cabdff1aSopenharmony_ci}; 123cabdff1aSopenharmony_ci 124cabdff1aSopenharmony_cistatic const int16_t vp5_ract_lc[3][3][5][6][2] = { 125cabdff1aSopenharmony_ci { { { {276, 0}, {238, 0}, {195, 0}, {156, 0}, {113, 0}, {274, 0} }, 126cabdff1aSopenharmony_ci { { 0, 1}, { 0, 1}, { 0, 1}, { 0, 1}, { 0, 1}, { 0, 1} }, 127cabdff1aSopenharmony_ci { {192, 59}, {182, 50}, {141, 48}, {110, 40}, { 92, 19}, {125,128} }, 128cabdff1aSopenharmony_ci { {169, 87}, {169, 83}, {184, 62}, {220, 16}, {184, 0}, {264, 0} }, 129cabdff1aSopenharmony_ci { {212, 40}, {212, 36}, {169, 49}, {174, 27}, { 8,120}, {182, 71} } }, 130cabdff1aSopenharmony_ci { { {259, 10}, {197, 19}, {143, 22}, {123, 16}, {110, 8}, {133, 88} }, 131cabdff1aSopenharmony_ci { { 0, 1}, {256, 0}, { 0, 1}, { 0, 1}, { 0, 1}, { 0, 1} }, 132cabdff1aSopenharmony_ci { {207, 46}, {187, 50}, { 97, 83}, { 23,100}, { 41, 56}, { 56,188} }, 133cabdff1aSopenharmony_ci { {166, 90}, {146,108}, {161, 88}, {136, 95}, {174, 0}, {266, 0} }, 134cabdff1aSopenharmony_ci { {264, 7}, {243, 18}, {184, 43}, {-14,154}, { 20,112}, { 20,199} } }, 135cabdff1aSopenharmony_ci { { {230, 26}, {197, 22}, {159, 20}, {146, 12}, {136, 4}, { 54,162} }, 136cabdff1aSopenharmony_ci { { 0, 1}, { 0, 1}, { 0, 1}, { 0, 1}, { 0, 1}, { 0, 1} }, 137cabdff1aSopenharmony_ci { {192, 59}, {156, 72}, { 84,101}, { 49,101}, { 79, 47}, { 79,167} }, 138cabdff1aSopenharmony_ci { {138,115}, {136,116}, {166, 80}, {238, 0}, {195, 0}, {261, 0} }, 139cabdff1aSopenharmony_ci { {225, 33}, {205, 42}, {159, 61}, { 79, 96}, { 92, 66}, { 28,195} } }, 140cabdff1aSopenharmony_ci }, { 141cabdff1aSopenharmony_ci { { {200, 37}, {197, 18}, {159, 13}, {143, 7}, {102, 5}, {123,126} }, 142cabdff1aSopenharmony_ci { {197, 3}, {220, -9}, {210,-12}, {187, -6}, {151, -2}, {174, 80} }, 143cabdff1aSopenharmony_ci { {200, 53}, {187, 47}, {159, 40}, {118, 38}, {100, 18}, {141,111} }, 144cabdff1aSopenharmony_ci { {179, 78}, {166, 86}, {197, 50}, {207, 27}, {187, 0}, {115,139} }, 145cabdff1aSopenharmony_ci { {218, 34}, {220, 29}, {174, 46}, {128, 61}, { 54, 89}, {187, 65} } }, 146cabdff1aSopenharmony_ci { { {238, 14}, {197, 18}, {125, 26}, { 90, 25}, { 82, 13}, {161, 86} }, 147cabdff1aSopenharmony_ci { {189, 1}, {205, -2}, {156, -4}, {143, -4}, {146, -4}, {172, 72} }, 148cabdff1aSopenharmony_ci { {230, 31}, {192, 45}, {102, 76}, { 38, 85}, { 56, 41}, { 64,173} }, 149cabdff1aSopenharmony_ci { {166, 91}, {141,111}, {128,116}, {118,109}, {177, 0}, { 23,222} }, 150cabdff1aSopenharmony_ci { {253, 14}, {236, 21}, {174, 49}, { 33,118}, { 44, 93}, { 23,187} } }, 151cabdff1aSopenharmony_ci { { {218, 28}, {179, 28}, {118, 35}, { 95, 30}, { 72, 24}, {128,108} }, 152cabdff1aSopenharmony_ci { {187, 1}, {174, -1}, {125, -1}, {110, -1}, {108, -1}, {202, 52} }, 153cabdff1aSopenharmony_ci { {197, 53}, {146, 75}, { 46,118}, { 33,103}, { 64, 50}, {118,126} }, 154cabdff1aSopenharmony_ci { {138,114}, {128,122}, {161, 86}, {243, -6}, {195, 0}, { 38,210} }, 155cabdff1aSopenharmony_ci { {215, 39}, {179, 58}, { 97,101}, { 95, 85}, { 87, 70}, { 69,152} } }, 156cabdff1aSopenharmony_ci }, { 157cabdff1aSopenharmony_ci { { {236, 24}, {205, 18}, {172, 12}, {154, 6}, {125, 1}, {169, 75} }, 158cabdff1aSopenharmony_ci { {187, 4}, {230, -2}, {228, -4}, {236, -4}, {241, -2}, {192, 66} }, 159cabdff1aSopenharmony_ci { {200, 46}, {187, 42}, {159, 34}, {136, 25}, {105, 10}, {179, 62} }, 160cabdff1aSopenharmony_ci { {207, 55}, {192, 63}, {192, 54}, {195, 36}, {177, 1}, {143, 98} }, 161cabdff1aSopenharmony_ci { {225, 27}, {207, 34}, {200, 30}, {131, 57}, { 97, 60}, {197, 45} } }, 162cabdff1aSopenharmony_ci { { {271, 8}, {218, 13}, {133, 19}, { 90, 19}, { 72, 7}, {182, 51} }, 163cabdff1aSopenharmony_ci { {179, 1}, {225, -1}, {154, -2}, {110, -1}, { 92, 0}, {195, 41} }, 164cabdff1aSopenharmony_ci { {241, 26}, {189, 40}, { 82, 64}, { 33, 60}, { 67, 17}, {120, 94} }, 165cabdff1aSopenharmony_ci { {192, 68}, {151, 94}, {146, 90}, {143, 72}, {161, 0}, {113,128} }, 166cabdff1aSopenharmony_ci { {256, 12}, {218, 29}, {166, 48}, { 44, 99}, { 31, 87}, {148, 78} } }, 167cabdff1aSopenharmony_ci { { {238, 20}, {184, 22}, {113, 27}, { 90, 22}, { 74, 9}, {192, 37} }, 168cabdff1aSopenharmony_ci { {184, 0}, {215, -1}, {141, -1}, { 97, 0}, { 49, 0}, {264, 13} }, 169cabdff1aSopenharmony_ci { {182, 51}, {138, 61}, { 95, 63}, { 54, 59}, { 64, 25}, {200, 45} }, 170cabdff1aSopenharmony_ci { {179, 75}, {156, 87}, {174, 65}, {177, 44}, {174, 0}, {164, 85} }, 171cabdff1aSopenharmony_ci { {195, 45}, {148, 65}, {105, 79}, { 95, 72}, { 87, 60}, {169, 63} } }, 172cabdff1aSopenharmony_ci } 173cabdff1aSopenharmony_ci}; 174cabdff1aSopenharmony_ci 175cabdff1aSopenharmony_cistatic const uint8_t vp5_coord_div[] = { 2, 2, 2, 2, 4, 4 }; 176cabdff1aSopenharmony_ci 177cabdff1aSopenharmony_ci#endif /* AVCODEC_VP5DATA_H */ 178