/* * Copyright 2019 The libgav1 Authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef LIBGAV1_SRC_DSP_CONSTANTS_H_ #define LIBGAV1_SRC_DSP_CONSTANTS_H_ // This file contains DSP related constants that have a direct relationship with // a DSP component. #include #include "src/utils/constants.h" namespace libgav1 { enum { // Documentation variables. kBitdepth8 = 8, kBitdepth10 = 10, kBitdepth12 = 12, // Weights are quadratic from '1' to '1 / block_size', scaled by // 2^kSmoothWeightScale. kSmoothWeightScale = 8, kCflLumaBufferStride = 32, // InterRound0, Section 7.11.3.2. kInterRoundBitsHorizontal = 3, // 8 & 10-bit. kInterRoundBitsHorizontal12bpp = 5, kInterRoundBitsCompoundVertical = 7, // 8, 10 & 12-bit compound prediction. kInterRoundBitsVertical = 11, // 8 & 10-bit, single prediction. kInterRoundBitsVertical12bpp = 9, // Offset applied to 10bpp and 12bpp predictors to allow storing them in // uint16_t. Removed before blending. kCompoundOffset = (1 << 14) + (1 << 13), kCdefSecondaryTap0 = 2, kCdefSecondaryTap1 = 1, }; // anonymous enum extern const int8_t kFilterIntraTaps[kNumFilterIntraPredictors][8][8]; // Values in this enum can be derived as the sum of subsampling_x and // subsampling_y (since subsampling_x == 0 && subsampling_y == 1 case is never // allowed by the bitstream). enum SubsamplingType : uint8_t { kSubsamplingType444, // subsampling_x = 0, subsampling_y = 0. kSubsamplingType422, // subsampling_x = 1, subsampling_y = 0. kSubsamplingType420, // subsampling_x = 1, subsampling_y = 1. kNumSubsamplingTypes }; extern const uint16_t kSgrScaleParameter[16][2]; extern const uint8_t kCdefPrimaryTaps[2][2]; extern const int8_t kCdefDirectionsPadded[12][2][2]; } // namespace libgav1 #endif // LIBGAV1_SRC_DSP_CONSTANTS_H_