10c1bc742181ded4930842b46e9507372f0b1b963James Dong/*
20c1bc742181ded4930842b46e9507372f0b1b963James Dong * Copyright (C) 2009 The Android Open Source Project
30c1bc742181ded4930842b46e9507372f0b1b963James Dong *
40c1bc742181ded4930842b46e9507372f0b1b963James Dong * Licensed under the Apache License, Version 2.0 (the "License");
50c1bc742181ded4930842b46e9507372f0b1b963James Dong * you may not use this file except in compliance with the License.
60c1bc742181ded4930842b46e9507372f0b1b963James Dong * You may obtain a copy of the License at
70c1bc742181ded4930842b46e9507372f0b1b963James Dong *
80c1bc742181ded4930842b46e9507372f0b1b963James Dong *      http://www.apache.org/licenses/LICENSE-2.0
90c1bc742181ded4930842b46e9507372f0b1b963James Dong *
100c1bc742181ded4930842b46e9507372f0b1b963James Dong * Unless required by applicable law or agreed to in writing, software
110c1bc742181ded4930842b46e9507372f0b1b963James Dong * distributed under the License is distributed on an "AS IS" BASIS,
120c1bc742181ded4930842b46e9507372f0b1b963James Dong * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130c1bc742181ded4930842b46e9507372f0b1b963James Dong * See the License for the specific language governing permissions and
140c1bc742181ded4930842b46e9507372f0b1b963James Dong * limitations under the License.
150c1bc742181ded4930842b46e9507372f0b1b963James Dong */
160c1bc742181ded4930842b46e9507372f0b1b963James Dong
170c1bc742181ded4930842b46e9507372f0b1b963James Dong/*------------------------------------------------------------------------------
180c1bc742181ded4930842b46e9507372f0b1b963James Dong
190c1bc742181ded4930842b46e9507372f0b1b963James Dong    Table of contents
200c1bc742181ded4930842b46e9507372f0b1b963James Dong
210c1bc742181ded4930842b46e9507372f0b1b963James Dong    1. Include headers
220c1bc742181ded4930842b46e9507372f0b1b963James Dong    2. Module defines
230c1bc742181ded4930842b46e9507372f0b1b963James Dong    3. Data types
240c1bc742181ded4930842b46e9507372f0b1b963James Dong    4. Function prototypes
250c1bc742181ded4930842b46e9507372f0b1b963James Dong
260c1bc742181ded4930842b46e9507372f0b1b963James Dong------------------------------------------------------------------------------*/
270c1bc742181ded4930842b46e9507372f0b1b963James Dong
280c1bc742181ded4930842b46e9507372f0b1b963James Dong#ifndef H264SWDEC_VUI_H
290c1bc742181ded4930842b46e9507372f0b1b963James Dong#define H264SWDEC_VUI_H
300c1bc742181ded4930842b46e9507372f0b1b963James Dong
310c1bc742181ded4930842b46e9507372f0b1b963James Dong/*------------------------------------------------------------------------------
320c1bc742181ded4930842b46e9507372f0b1b963James Dong    1. Include headers
330c1bc742181ded4930842b46e9507372f0b1b963James Dong------------------------------------------------------------------------------*/
340c1bc742181ded4930842b46e9507372f0b1b963James Dong
350c1bc742181ded4930842b46e9507372f0b1b963James Dong#include "basetype.h"
360c1bc742181ded4930842b46e9507372f0b1b963James Dong#include "h264bsd_stream.h"
370c1bc742181ded4930842b46e9507372f0b1b963James Dong
380c1bc742181ded4930842b46e9507372f0b1b963James Dong/*------------------------------------------------------------------------------
390c1bc742181ded4930842b46e9507372f0b1b963James Dong    2. Module defines
400c1bc742181ded4930842b46e9507372f0b1b963James Dong------------------------------------------------------------------------------*/
410c1bc742181ded4930842b46e9507372f0b1b963James Dong
420c1bc742181ded4930842b46e9507372f0b1b963James Dong#define MAX_CPB_CNT 32
430c1bc742181ded4930842b46e9507372f0b1b963James Dong
440c1bc742181ded4930842b46e9507372f0b1b963James Dong/*------------------------------------------------------------------------------
450c1bc742181ded4930842b46e9507372f0b1b963James Dong    3. Data types
460c1bc742181ded4930842b46e9507372f0b1b963James Dong------------------------------------------------------------------------------*/
470c1bc742181ded4930842b46e9507372f0b1b963James Dong
480c1bc742181ded4930842b46e9507372f0b1b963James Dong/* enumerated sample aspect ratios, ASPECT_RATIO_M_N means M:N */
490c1bc742181ded4930842b46e9507372f0b1b963James Dongenum
500c1bc742181ded4930842b46e9507372f0b1b963James Dong{
510c1bc742181ded4930842b46e9507372f0b1b963James Dong    ASPECT_RATIO_UNSPECIFIED = 0,
520c1bc742181ded4930842b46e9507372f0b1b963James Dong    ASPECT_RATIO_1_1,
530c1bc742181ded4930842b46e9507372f0b1b963James Dong    ASPECT_RATIO_12_11,
540c1bc742181ded4930842b46e9507372f0b1b963James Dong    ASPECT_RATIO_10_11,
550c1bc742181ded4930842b46e9507372f0b1b963James Dong    ASPECT_RATIO_16_11,
560c1bc742181ded4930842b46e9507372f0b1b963James Dong    ASPECT_RATIO_40_33,
570c1bc742181ded4930842b46e9507372f0b1b963James Dong    ASPECT_RATIO_24_11,
580c1bc742181ded4930842b46e9507372f0b1b963James Dong    ASPECT_RATIO_20_11,
590c1bc742181ded4930842b46e9507372f0b1b963James Dong    ASPECT_RATIO_32_11,
600c1bc742181ded4930842b46e9507372f0b1b963James Dong    ASPECT_RATIO_80_33,
610c1bc742181ded4930842b46e9507372f0b1b963James Dong    ASPECT_RATIO_18_11,
620c1bc742181ded4930842b46e9507372f0b1b963James Dong    ASPECT_RATIO_15_11,
630c1bc742181ded4930842b46e9507372f0b1b963James Dong    ASPECT_RATIO_64_33,
640c1bc742181ded4930842b46e9507372f0b1b963James Dong    ASPECT_RATIO_160_99,
650c1bc742181ded4930842b46e9507372f0b1b963James Dong    ASPECT_RATIO_EXTENDED_SAR = 255
660c1bc742181ded4930842b46e9507372f0b1b963James Dong};
670c1bc742181ded4930842b46e9507372f0b1b963James Dong
680c1bc742181ded4930842b46e9507372f0b1b963James Dong/* structure to store Hypothetical Reference Decoder (HRD) parameters */
690c1bc742181ded4930842b46e9507372f0b1b963James Dongtypedef struct
700c1bc742181ded4930842b46e9507372f0b1b963James Dong{
710c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 cpbCnt;
720c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 bitRateScale;
730c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 cpbSizeScale;
740c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 bitRateValue[MAX_CPB_CNT];
750c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 cpbSizeValue[MAX_CPB_CNT];
760c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 cbrFlag[MAX_CPB_CNT];
770c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 initialCpbRemovalDelayLength;
780c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 cpbRemovalDelayLength;
790c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 dpbOutputDelayLength;
800c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 timeOffsetLength;
810c1bc742181ded4930842b46e9507372f0b1b963James Dong} hrdParameters_t;
820c1bc742181ded4930842b46e9507372f0b1b963James Dong
830c1bc742181ded4930842b46e9507372f0b1b963James Dong/* storage for VUI parameters */
840c1bc742181ded4930842b46e9507372f0b1b963James Dongtypedef struct
850c1bc742181ded4930842b46e9507372f0b1b963James Dong{
860c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 aspectRatioPresentFlag;
870c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 aspectRatioIdc;
880c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 sarWidth;
890c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 sarHeight;
900c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 overscanInfoPresentFlag;
910c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 overscanAppropriateFlag;
920c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 videoSignalTypePresentFlag;
930c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 videoFormat;
940c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 videoFullRangeFlag;
950c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 colourDescriptionPresentFlag;
960c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 colourPrimaries;
970c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 transferCharacteristics;
980c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 matrixCoefficients;
990c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 chromaLocInfoPresentFlag;
1000c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 chromaSampleLocTypeTopField;
1010c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 chromaSampleLocTypeBottomField;
1020c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 timingInfoPresentFlag;
1030c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 numUnitsInTick;
1040c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 timeScale;
1050c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 fixedFrameRateFlag;
1060c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 nalHrdParametersPresentFlag;
1070c1bc742181ded4930842b46e9507372f0b1b963James Dong    hrdParameters_t nalHrdParameters;
1080c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 vclHrdParametersPresentFlag;
1090c1bc742181ded4930842b46e9507372f0b1b963James Dong    hrdParameters_t vclHrdParameters;
1100c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 lowDelayHrdFlag;
1110c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 picStructPresentFlag;
1120c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 bitstreamRestrictionFlag;
1130c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 motionVectorsOverPicBoundariesFlag;
1140c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 maxBytesPerPicDenom;
1150c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 maxBitsPerMbDenom;
1160c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 log2MaxMvLengthHorizontal;
1170c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 log2MaxMvLengthVertical;
1180c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 numReorderFrames;
1190c1bc742181ded4930842b46e9507372f0b1b963James Dong    u32 maxDecFrameBuffering;
1200c1bc742181ded4930842b46e9507372f0b1b963James Dong} vuiParameters_t;
1210c1bc742181ded4930842b46e9507372f0b1b963James Dong
1220c1bc742181ded4930842b46e9507372f0b1b963James Dong/*------------------------------------------------------------------------------
1230c1bc742181ded4930842b46e9507372f0b1b963James Dong    4. Function prototypes
1240c1bc742181ded4930842b46e9507372f0b1b963James Dong------------------------------------------------------------------------------*/
1250c1bc742181ded4930842b46e9507372f0b1b963James Dong
1260c1bc742181ded4930842b46e9507372f0b1b963James Dongu32 h264bsdDecodeVuiParameters(strmData_t *pStrmData,
1270c1bc742181ded4930842b46e9507372f0b1b963James Dong    vuiParameters_t *pVuiParameters);
1280c1bc742181ded4930842b46e9507372f0b1b963James Dong
1290c1bc742181ded4930842b46e9507372f0b1b963James Dong#endif /* #ifdef H264SWDEC_VUI_H */
1300c1bc742181ded4930842b46e9507372f0b1b963James Dong
131