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_NAL_UNIT_H
29 #define H264SWDEC_NAL_UNIT_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 /* macro to determine if NAL unit pointed by pNalUnit contains an IDR slice */
43 #define IS_IDR_NAL_UNIT(pNalUnit) \
44     ((pNalUnit)->nalUnitType == NAL_CODED_SLICE_IDR)
45 
46 /*------------------------------------------------------------------------------
47     3. Data types
48 ------------------------------------------------------------------------------*/
49 
50 typedef enum {
51     NAL_CODED_SLICE = 1,
52     NAL_CODED_SLICE_IDR = 5,
53     NAL_SEI = 6,
54     NAL_SEQ_PARAM_SET = 7,
55     NAL_PIC_PARAM_SET = 8,
56     NAL_ACCESS_UNIT_DELIMITER = 9,
57     NAL_END_OF_SEQUENCE = 10,
58     NAL_END_OF_STREAM = 11,
59     NAL_FILLER_DATA = 12,
60     NAL_MAX_TYPE_VALUE = 31
61 } nalUnitType_e;
62 
63 typedef struct
64 {
65     nalUnitType_e nalUnitType;
66     u32 nalRefIdc;
67 } nalUnit_t;
68 
69 /*------------------------------------------------------------------------------
70     4. Function prototypes
71 ------------------------------------------------------------------------------*/
72 
73 u32 h264bsdDecodeNalUnit(strmData_t *pStrmData, nalUnit_t *pNalUnit);
74 
75 #endif /* #ifdef H264SWDEC_NAL_UNIT_H */
76 
77