diff options
Diffstat (limited to 'media/libstagefright/codecs/on2/h264dec/source/h264bsd_sei.h')
-rwxr-xr-x | media/libstagefright/codecs/on2/h264dec/source/h264bsd_sei.h | 252 |
1 files changed, 252 insertions, 0 deletions
diff --git a/media/libstagefright/codecs/on2/h264dec/source/h264bsd_sei.h b/media/libstagefright/codecs/on2/h264dec/source/h264bsd_sei.h new file mode 100755 index 0000000..efe543a --- /dev/null +++ b/media/libstagefright/codecs/on2/h264dec/source/h264bsd_sei.h @@ -0,0 +1,252 @@ +/* + * 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 */ + |