Home | History | Annotate | Download | only in source
      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