blob: 05d52a45a996a91a0b9300a028913d073d182163 [file] [log] [blame]
/*
* 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 */