110a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org/* 210a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org * Copyright (c) 2010 The WebM project authors. All Rights Reserved. 310a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org * 410a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org * Use of this source code is governed by a BSD-style license 510a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org * that can be found in the LICENSE file in the root of the source 610a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org * tree. An additional intellectual property rights grant can be found 710a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org * in the file PATENTS. All contributing project authors may 810a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org * be found in the AUTHORS file in the root of the source tree. 910a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org */ 1010a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org 1110a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org#ifndef VP9_COMMON_VP9_ENUMS_H_ 1210a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org#define VP9_COMMON_VP9_ENUMS_H_ 1310a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org 1410a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org#include "./vpx_config.h" 1510a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org 16dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#ifdef __cplusplus 17dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.orgextern "C" { 18dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#endif 19dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org 2053a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org#define MI_SIZE_LOG2 3 2153a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org#define MI_BLOCK_SIZE_LOG2 (6 - MI_SIZE_LOG2) // 64 = 2^6 2210a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org 2353a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org#define MI_SIZE (1 << MI_SIZE_LOG2) // pixels per mi-unit 2453a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org#define MI_BLOCK_SIZE (1 << MI_BLOCK_SIZE_LOG2) // mi-units per max block 2547265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org 2647265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org#define MI_MASK (MI_BLOCK_SIZE - 1) 2710a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org 28ac4e313c19203132648a2a271703b6ee76fe4284johannkoenig@chromium.org// Bitstream profiles indicated by 2-3 bits in the uncompressed header. 29ac4e313c19203132648a2a271703b6ee76fe4284johannkoenig@chromium.org// 00: Profile 0. 8-bit 4:2:0 only. 3041294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// 10: Profile 1. 8-bit 4:4:4, 4:2:2, and 4:4:0. 3141294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// 01: Profile 2. 10-bit and 12-bit color only, with 4:2:0 sampling. 3241294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// 110: Profile 3. 10-bit and 12-bit color only, with 4:2:2/4:4:4/4:4:0 3341294d96d7dbf9bc215b09832a8336c5fb158f0bjohannkoenig@chromium.org// sampling. 34ac4e313c19203132648a2a271703b6ee76fe4284johannkoenig@chromium.org// 111: Undefined profile. 35693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.comtypedef enum BITSTREAM_PROFILE { 36693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com PROFILE_0, 37693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com PROFILE_1, 38693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com PROFILE_2, 39ac4e313c19203132648a2a271703b6ee76fe4284johannkoenig@chromium.org PROFILE_3, 40693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com MAX_PROFILES 41693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com} BITSTREAM_PROFILE; 42693441efe611de7ca09c00f4e79776f604b689f4joeyparrish@google.com 4353a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.orgtypedef enum BLOCK_SIZE { 4453a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org BLOCK_4X4, 4553a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org BLOCK_4X8, 4653a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org BLOCK_8X4, 4753a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org BLOCK_8X8, 4853a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org BLOCK_8X16, 4953a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org BLOCK_16X8, 5053a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org BLOCK_16X16, 5153a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org BLOCK_16X32, 5253a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org BLOCK_32X16, 5353a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org BLOCK_32X32, 5453a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org BLOCK_32X64, 5553a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org BLOCK_64X32, 5653a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org BLOCK_64X64, 5753a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org BLOCK_SIZES, 5853a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org BLOCK_INVALID = BLOCK_SIZES 5953a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org} BLOCK_SIZE; 6010a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org 6110a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.orgtypedef enum PARTITION_TYPE { 6210a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org PARTITION_NONE, 6310a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org PARTITION_HORZ, 6410a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org PARTITION_VERT, 6510a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org PARTITION_SPLIT, 6653a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org PARTITION_TYPES, 6753a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org PARTITION_INVALID = PARTITION_TYPES 6810a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org} PARTITION_TYPE; 6910a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org 7010a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org#define PARTITION_PLOFFSET 4 // number of probability models per block size 71ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org#define PARTITION_CONTEXTS (4 * PARTITION_PLOFFSET) 7210a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org 73d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org// block transform size 7447265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.orgtypedef enum { 75d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org TX_4X4 = 0, // 4x4 transform 76d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org TX_8X8 = 1, // 8x8 transform 77d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org TX_16X16 = 2, // 16x16 transform 78d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org TX_32X32 = 3, // 32x32 transform 7953a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org TX_SIZES 8047265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org} TX_SIZE; 8147265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org 82d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org// frame transform mode 8347265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.orgtypedef enum { 84d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org ONLY_4X4 = 0, // only 4x4 transform used 85d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org ALLOW_8X8 = 1, // allow block transform size up to 8x8 86d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org ALLOW_16X16 = 2, // allow block transform size up to 16x16 87d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org ALLOW_32X32 = 3, // allow block transform size up to 32x32 88d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org TX_MODE_SELECT = 4, // transform specified for each block 8953a13f1fa964820f7a8f9d3932a6f3c0433f8bf5fgalligan@chromium.org TX_MODES = 5, 9047265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org} TX_MODE; 9147265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org 9247265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.orgtypedef enum { 9347265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org DCT_DCT = 0, // DCT in both horizontal and vertical 9447265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org ADST_DCT = 1, // ADST in vertical, DCT in horizontal 9547265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org DCT_ADST = 2, // DCT in vertical, ADST in horizontal 96d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org ADST_ADST = 3, // ADST in both directions 97d851b91d14ef0bd71acdce7b90c9a8f1af1181adjohannkoenig@chromium.org TX_TYPES = 4 9847265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org} TX_TYPE; 9947265f8fe3a36a426773454ad90d20c9aa616c24johannkoenig@chromium.org 100ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.orgtypedef enum { 101ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org UNKNOWN = 0, 102ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org BT_601 = 1, // YUV 103ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org BT_709 = 2, // YUV 104ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org SMPTE_170 = 3, // YUV 105ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org SMPTE_240 = 4, // YUV 106ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org RESERVED_1 = 5, 107ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org RESERVED_2 = 6, 108ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org SRGB = 7 // RGB 109ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org} COLOR_SPACE; 110ecee051929d6ced19cf324688774acccc9ad4a0ajohannkoenig@chromium.org 11193a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.orgtypedef enum { 11293a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org VP9_LAST_FLAG = 1 << 0, 11393a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org VP9_GOLD_FLAG = 1 << 1, 11493a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org VP9_ALT_FLAG = 1 << 2, 11593a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org} VP9_REFFRAME; 11693a74791c8e808ea76001ee07693aa2a5fdd3500johannkoenig@chromium.org 117dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#ifdef __cplusplus 118dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org} // extern "C" 119dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org#endif 120dddee1ec7cedf276305b107429f684539b105276johannkoenig@chromium.org 12110a9a0d835561a7f2300c561c514efcf374554d6fgalligan@chromium.org#endif // VP9_COMMON_VP9_ENUMS_H_ 122