/H264Dec/source/h264bsd_sei.h
C Header | 252 lines | 185 code | 30 blank | 37 comment | 0 complexity | fd6918a22e928a01af46e6d57d7d19e1 MD5 | raw file
Possible License(s): BSD-3-Clause
- /*
- * Copyright (C) 2009 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- /*------------------------------------------------------------------------------
- Table of contents
- 1. Include headers
- 2. Module defines
- 3. Data types
- 4. Function prototypes
- ------------------------------------------------------------------------------*/
- #ifndef H264SWDEC_SEI_H
- #define H264SWDEC_SEI_H
- /*------------------------------------------------------------------------------
- 1. Include headers
- ------------------------------------------------------------------------------*/
- #include "basetype.h"
- #include "h264bsd_stream.h"
- #include "h264bsd_slice_header.h"
- #include "h264bsd_seq_param_set.h"
- #include "h264bsd_vui.h"
- /*------------------------------------------------------------------------------
- 2. Module defines
- ------------------------------------------------------------------------------*/
- #define MAX_PAN_SCAN_CNT 32
- #define MAX_NUM_SPARE_PICS 16
- #define MAX_NUM_CLOCK_TS 3
- #define MAX_NUM_SUB_SEQ_LAYERS 256
- /*------------------------------------------------------------------------------
- 3. Data types
- ------------------------------------------------------------------------------*/
- typedef struct
- {
- u32 seqParameterSetId;
- u32 initialCpbRemovalDelay[MAX_CPB_CNT];
- u32 initialCpbRemovalDelayOffset[MAX_CPB_CNT];
- } seiBufferingPeriod_t;
- typedef struct
- {
- u32 cpbRemovalDelay;
- u32 dpbOutputDelay;
- u32 picStruct;
- u32 clockTimeStampFlag[MAX_NUM_CLOCK_TS];
- u32 clockTimeStamp[MAX_NUM_CLOCK_TS];
- u32 ctType[MAX_NUM_CLOCK_TS];
- u32 nuitFieldBasedFlag[MAX_NUM_CLOCK_TS];
- u32 countingType[MAX_NUM_CLOCK_TS];
- u32 fullTimeStampFlag[MAX_NUM_CLOCK_TS];
- u32 discontinuityFlag[MAX_NUM_CLOCK_TS];
- u32 cntDroppedFlag[MAX_NUM_CLOCK_TS];
- u32 nFrames[MAX_NUM_CLOCK_TS];
- u32 secondsFlag[MAX_NUM_CLOCK_TS];
- u32 secondsValue[MAX_NUM_CLOCK_TS];
- u32 minutesFlag[MAX_NUM_CLOCK_TS];
- u32 minutesValue[MAX_NUM_CLOCK_TS];
- u32 hoursFlag[MAX_NUM_CLOCK_TS];
- u32 hoursValue[MAX_NUM_CLOCK_TS];
- i32 timeOffset[MAX_NUM_CLOCK_TS];
- } seiPicTiming_t;
- typedef struct
- {
- u32 panScanRectId;
- u32 panScanRectCancelFlag;
- u32 panScanCnt;
- i32 panScanRectLeftOffset[MAX_PAN_SCAN_CNT];
- i32 panScanRectRightOffset[MAX_PAN_SCAN_CNT];
- i32 panScanRectTopOffset[MAX_PAN_SCAN_CNT];
- i32 panScanRectBottomOffset[MAX_PAN_SCAN_CNT];
- u32 panScanRectRepetitionPeriod;
- } seiPanScanRect_t;
- typedef struct
- {
- u32 ituTT35CountryCode;
- u32 ituTT35CountryCodeExtensionByte;
- u8 *ituTT35PayloadByte;
- u32 numPayloadBytes;
- } seiUserDataRegisteredItuTT35_t;
- typedef struct
- {
- u32 uuidIsoIec11578[4];
- u8 *userDataPayloadByte;
- u32 numPayloadBytes;
- } seiUserDataUnregistered_t;
- typedef struct
- {
- u32 recoveryFrameCnt;
- u32 exactMatchFlag;
- u32 brokenLinkFlag;
- u32 changingSliceGroupIdc;
- } seiRecoveryPoint_t;
- typedef struct
- {
- u32 originalIdrFlag;
- u32 originalFrameNum;
- decRefPicMarking_t decRefPicMarking;
- } seiDecRefPicMarkingRepetition_t;
- typedef struct
- {
- u32 targetFrameNum;
- u32 spareFieldFlag;
- u32 targetBottomFieldFlag;
- u32 numSparePics;
- u32 deltaSpareFrameNum[MAX_NUM_SPARE_PICS];
- u32 spareBottomFieldFlag[MAX_NUM_SPARE_PICS];
- u32 spareAreaIdc[MAX_NUM_SPARE_PICS];
- u32 *spareUnitFlag[MAX_NUM_SPARE_PICS];
- u32 *zeroRunLength[MAX_NUM_SPARE_PICS];
- } seiSparePic_t;
- typedef struct
- {
- u32 sceneInfoPresentFlag;
- u32 sceneId;
- u32 sceneTransitionType;
- u32 secondSceneId;
- } seiSceneInfo_t;
- typedef struct
- {
- u32 subSeqLayerNum;
- u32 subSeqId;
- u32 firstRefPicFlag;
- u32 leadingNonRefPicFlag;
- u32 lastPicFlag;
- u32 subSeqFrameNumFlag;
- u32 subSeqFrameNum;
- } seiSubSeqInfo_t;
- typedef struct
- {
- u32 numSubSeqLayers;
- u32 accurateStatisticsFlag[MAX_NUM_SUB_SEQ_LAYERS];
- u32 averageBitRate[MAX_NUM_SUB_SEQ_LAYERS];
- u32 averageFrameRate[MAX_NUM_SUB_SEQ_LAYERS];
- } seiSubSeqLayerCharacteristics_t;
- typedef struct
- {
- u32 subSeqLayerNum;
- u32 subSeqId;
- u32 durationFlag;
- u32 subSeqDuration;
- u32 averageRateFlag;
- u32 accurateStatisticsFlag;
- u32 averageBitRate;
- u32 averageFrameRate;
- u32 numReferencedSubseqs;
- u32 refSubSeqLayerNum[MAX_NUM_SUB_SEQ_LAYERS];
- u32 refSubSeqId[MAX_NUM_SUB_SEQ_LAYERS];
- u32 refSubSeqDirection[MAX_NUM_SUB_SEQ_LAYERS];
- } seiSubSeqCharacteristics_t;
- typedef struct
- {
- u32 fullFrameFreezeRepetitionPeriod;
- } seiFullFrameFreeze_t;
- typedef struct
- {
- u32 snapShotId;
- } seiFullFrameSnapshot_t;
- typedef struct
- {
- u32 progressiveRefinementId;
- u32 numRefinementSteps;
- } seiProgressiveRefinementSegmentStart_t;
- typedef struct
- {
- u32 progressiveRefinementId;
- } seiProgressiveRefinementSegmentEnd_t;
- typedef struct
- {
- u32 numSliceGroupsInSet;
- u32 sliceGroupId[MAX_NUM_SLICE_GROUPS];
- u32 exactSampleValueMatchFlag;
- u32 panScanRectFlag;
- u32 panScanRectId;
- } seiMotionConstrainedSliceGroupSet_t;
- typedef struct
- {
- u8 *reservedSeiMessagePayloadByte;
- u32 numPayloadBytes;
- } seiReservedSeiMessage_t;
- typedef struct
- {
- u32 payloadType;
- seiBufferingPeriod_t bufferingPeriod;
- seiPicTiming_t picTiming;
- seiPanScanRect_t panScanRect;
- seiUserDataRegisteredItuTT35_t userDataRegisteredItuTT35;
- seiUserDataUnregistered_t userDataUnregistered;
- seiRecoveryPoint_t recoveryPoint;
- seiDecRefPicMarkingRepetition_t decRefPicMarkingRepetition;
- seiSparePic_t sparePic;
- seiSceneInfo_t sceneInfo;
- seiSubSeqInfo_t subSeqInfo;
- seiSubSeqLayerCharacteristics_t subSeqLayerCharacteristics;
- seiSubSeqCharacteristics_t subSeqCharacteristics;
- seiFullFrameFreeze_t fullFrameFreeze;
- seiFullFrameSnapshot_t fullFrameSnapshot;
- seiProgressiveRefinementSegmentStart_t progressiveRefinementSegmentStart;
- seiProgressiveRefinementSegmentEnd_t progressiveRefinementSegmentEnd;
- seiMotionConstrainedSliceGroupSet_t motionConstrainedSliceGroupSet;
- seiReservedSeiMessage_t reservedSeiMessage;
- } seiMessage_t;
- /*------------------------------------------------------------------------------
- 4. Function prototypes
- ------------------------------------------------------------------------------*/
- u32 h264bsdDecodeSeiMessage(
- strmData_t *pStrmData,
- seqParamSet_t *pSeqParamSet,
- seiMessage_t *pSeiMessage,
- u32 numSliceGroups);
- #endif /* #ifdef H264SWDEC_SEI_H */