/* * Copyright (C) 2009 The Android Open Source Project * * 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. */ /*------------------------------------------------------------------------------ Table of contents 1. Include headers 2. Module defines 3. Data types 4. Function prototypes ------------------------------------------------------------------------------*/ #ifndef H264SWDEC_VUI_H #define H264SWDEC_VUI_H /*------------------------------------------------------------------------------ 1. Include headers ------------------------------------------------------------------------------*/ #include "basetype.h" #include "h264bsd_stream.h" /*------------------------------------------------------------------------------ 2. Module defines ------------------------------------------------------------------------------*/ #define MAX_CPB_CNT 32 /*------------------------------------------------------------------------------ 3. Data types ------------------------------------------------------------------------------*/ /* enumerated sample aspect ratios, ASPECT_RATIO_M_N means M:N */ enum { ASPECT_RATIO_UNSPECIFIED = 0, ASPECT_RATIO_1_1, ASPECT_RATIO_12_11, ASPECT_RATIO_10_11, ASPECT_RATIO_16_11, ASPECT_RATIO_40_33, ASPECT_RATIO_24_11, ASPECT_RATIO_20_11, ASPECT_RATIO_32_11, ASPECT_RATIO_80_33, ASPECT_RATIO_18_11, ASPECT_RATIO_15_11, ASPECT_RATIO_64_33, ASPECT_RATIO_160_99, ASPECT_RATIO_EXTENDED_SAR = 255 }; /* structure to store Hypothetical Reference Decoder (HRD) parameters */ typedef struct { u32 cpbCnt; u32 bitRateScale; u32 cpbSizeScale; u32 bitRateValue[MAX_CPB_CNT]; u32 cpbSizeValue[MAX_CPB_CNT]; u32 cbrFlag[MAX_CPB_CNT]; u32 initialCpbRemovalDelayLength; u32 cpbRemovalDelayLength; u32 dpbOutputDelayLength; u32 timeOffsetLength; } hrdParameters_t; /* storage for VUI parameters */ typedef struct { u32 aspectRatioPresentFlag; u32 aspectRatioIdc; u32 sarWidth; u32 sarHeight; u32 overscanInfoPresentFlag; u32 overscanAppropriateFlag; u32 videoSignalTypePresentFlag; u32 videoFormat; u32 videoFullRangeFlag; u32 colourDescriptionPresentFlag; u32 colourPrimaries; u32 transferCharacteristics; u32 matrixCoefficients; u32 chromaLocInfoPresentFlag; u32 chromaSampleLocTypeTopField; u32 chromaSampleLocTypeBottomField; u32 timingInfoPresentFlag; u32 numUnitsInTick; u32 timeScale; u32 fixedFrameRateFlag; u32 nalHrdParametersPresentFlag; hrdParameters_t nalHrdParameters; u32 vclHrdParametersPresentFlag; hrdParameters_t vclHrdParameters; u32 lowDelayHrdFlag; u32 picStructPresentFlag; u32 bitstreamRestrictionFlag; u32 motionVectorsOverPicBoundariesFlag; u32 maxBytesPerPicDenom; u32 maxBitsPerMbDenom; u32 log2MaxMvLengthHorizontal; u32 log2MaxMvLengthVertical; u32 numReorderFrames; u32 maxDecFrameBuffering; } vuiParameters_t; /*------------------------------------------------------------------------------ 4. Function prototypes ------------------------------------------------------------------------------*/ u32 h264bsdDecodeVuiParameters(strmData_t *pStrmData, vuiParameters_t *pVuiParameters); #endif /* #ifdef H264SWDEC_VUI_H */