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_SEQ_PARAM_SET_H
29 #define H264SWDEC_SEQ_PARAM_SET_H
30 
31 /*------------------------------------------------------------------------------
32     1. Include headers
33 ------------------------------------------------------------------------------*/
34 
35 #include "basetype.h"
36 #include "h264bsd_stream.h"
37 #include "h264bsd_vui.h"
38 
39 /*------------------------------------------------------------------------------
40     2. Module defines
41 ------------------------------------------------------------------------------*/
42 
43 /*------------------------------------------------------------------------------
44     3. Data types
45 ------------------------------------------------------------------------------*/
46 
47 /* structure to store sequence parameter set information decoded from the
48  * stream */
49 typedef struct
50 {
51     u32 profileIdc;
52     u32 levelIdc;
53     u32 seqParameterSetId;
54     u32 maxFrameNum;
55     u32 picOrderCntType;
56     u32 maxPicOrderCntLsb;
57     u32 deltaPicOrderAlwaysZeroFlag;
58     i32 offsetForNonRefPic;
59     i32 offsetForTopToBottomField;
60     u32 numRefFramesInPicOrderCntCycle;
61     i32 *offsetForRefFrame;
62     u32 numRefFrames;
63     u32 gapsInFrameNumValueAllowedFlag;
64     u32 picWidthInMbs;
65     u32 picHeightInMbs;
66     u32 frameCroppingFlag;
67     u32 frameCropLeftOffset;
68     u32 frameCropRightOffset;
69     u32 frameCropTopOffset;
70     u32 frameCropBottomOffset;
71     u32 vuiParametersPresentFlag;
72     vuiParameters_t *vuiParameters;
73     u32 maxDpbSize;
74 } seqParamSet_t;
75 
76 /*------------------------------------------------------------------------------
77     4. Function prototypes
78 ------------------------------------------------------------------------------*/
79 
80 u32 h264bsdDecodeSeqParamSet(strmData_t *pStrmData,
81     seqParamSet_t *pSeqParamSet);
82 
83 u32 h264bsdCompareSeqParamSets(seqParamSet_t *pSps1, seqParamSet_t *pSps2);
84 
85 #endif /* #ifdef H264SWDEC_SEQ_PARAM_SET_H */
86 
87