1 /*
2  * Copyright (C) 2009 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 /*------------------------------------------------------------------------------
18 
19     Table of contents
20 
21     1. Include headers
22     2. Module defines
23     3. Data types
24     4. Function prototypes
25 
26 ------------------------------------------------------------------------------*/
27 
28 #ifndef H264SWDEC_VUI_H
29 #define H264SWDEC_VUI_H
30 
31 /*------------------------------------------------------------------------------
32     1. Include headers
33 ------------------------------------------------------------------------------*/
34 
35 #include "basetype.h"
36 #include "h264bsd_stream.h"
37 
38 /*------------------------------------------------------------------------------
39     2. Module defines
40 ------------------------------------------------------------------------------*/
41 
42 #define MAX_CPB_CNT 32
43 
44 /*------------------------------------------------------------------------------
45     3. Data types
46 ------------------------------------------------------------------------------*/
47 
48 /* enumerated sample aspect ratios, ASPECT_RATIO_M_N means M:N */
49 enum
50 {
51     ASPECT_RATIO_UNSPECIFIED = 0,
52     ASPECT_RATIO_1_1,
53     ASPECT_RATIO_12_11,
54     ASPECT_RATIO_10_11,
55     ASPECT_RATIO_16_11,
56     ASPECT_RATIO_40_33,
57     ASPECT_RATIO_24_11,
58     ASPECT_RATIO_20_11,
59     ASPECT_RATIO_32_11,
60     ASPECT_RATIO_80_33,
61     ASPECT_RATIO_18_11,
62     ASPECT_RATIO_15_11,
63     ASPECT_RATIO_64_33,
64     ASPECT_RATIO_160_99,
65     ASPECT_RATIO_EXTENDED_SAR = 255
66 };
67 
68 /* structure to store Hypothetical Reference Decoder (HRD) parameters */
69 typedef struct
70 {
71     u32 cpbCnt;
72     u32 bitRateScale;
73     u32 cpbSizeScale;
74     u32 bitRateValue[MAX_CPB_CNT];
75     u32 cpbSizeValue[MAX_CPB_CNT];
76     u32 cbrFlag[MAX_CPB_CNT];
77     u32 initialCpbRemovalDelayLength;
78     u32 cpbRemovalDelayLength;
79     u32 dpbOutputDelayLength;
80     u32 timeOffsetLength;
81 } hrdParameters_t;
82 
83 /* storage for VUI parameters */
84 typedef struct
85 {
86     u32 aspectRatioPresentFlag;
87     u32 aspectRatioIdc;
88     u32 sarWidth;
89     u32 sarHeight;
90     u32 overscanInfoPresentFlag;
91     u32 overscanAppropriateFlag;
92     u32 videoSignalTypePresentFlag;
93     u32 videoFormat;
94     u32 videoFullRangeFlag;
95     u32 colourDescriptionPresentFlag;
96     u32 colourPrimaries;
97     u32 transferCharacteristics;
98     u32 matrixCoefficients;
99     u32 chromaLocInfoPresentFlag;
100     u32 chromaSampleLocTypeTopField;
101     u32 chromaSampleLocTypeBottomField;
102     u32 timingInfoPresentFlag;
103     u32 numUnitsInTick;
104     u32 timeScale;
105     u32 fixedFrameRateFlag;
106     u32 nalHrdParametersPresentFlag;
107     hrdParameters_t nalHrdParameters;
108     u32 vclHrdParametersPresentFlag;
109     hrdParameters_t vclHrdParameters;
110     u32 lowDelayHrdFlag;
111     u32 picStructPresentFlag;
112     u32 bitstreamRestrictionFlag;
113     u32 motionVectorsOverPicBoundariesFlag;
114     u32 maxBytesPerPicDenom;
115     u32 maxBitsPerMbDenom;
116     u32 log2MaxMvLengthHorizontal;
117     u32 log2MaxMvLengthVertical;
118     u32 numReorderFrames;
119     u32 maxDecFrameBuffering;
120 } vuiParameters_t;
121 
122 /*------------------------------------------------------------------------------
123     4. Function prototypes
124 ------------------------------------------------------------------------------*/
125 
126 u32 h264bsdDecodeVuiParameters(strmData_t *pStrmData,
127     vuiParameters_t *pVuiParameters);
128 
129 #endif /* #ifdef H264SWDEC_VUI_H */
130 
131