SampleIterator.h revision c7fc37a3dab9bd1f96713649f351b5990e6316ff
1c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber/* 2c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber * Copyright (C) 2010 The Android Open Source Project 3c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber * 4c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 5c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber * you may not use this file except in compliance with the License. 6c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber * You may obtain a copy of the License at 7c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber * 8c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber * http://www.apache.org/licenses/LICENSE-2.0 9c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber * 10c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber * Unless required by applicable law or agreed to in writing, software 11c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 12c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber * See the License for the specific language governing permissions and 14c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber * limitations under the License. 15c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber */ 16c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber 17c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber#include <utils/Vector.h> 18c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber 19c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Hubernamespace android { 20c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber 21c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huberstruct SampleTable; 22c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber 23c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huberstruct SampleIterator { 24c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber SampleIterator(SampleTable *table); 25c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber 26c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber status_t seekTo(uint32_t sampleIndex); 27c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber 28c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber uint32_t getChunkIndex() const { return mCurrentChunkIndex; } 29c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber uint32_t getDescIndex() const { return mChunkDesc; } 30c7fc37a3dab9bd1f96713649f351b5990e6316ffJames Dong off64_t getSampleOffset() const { return mCurrentSampleOffset; } 31c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber size_t getSampleSize() const { return mCurrentSampleSize; } 32c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber uint32_t getSampleTime() const { return mCurrentSampleTime; } 33c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber 34c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber status_t getSampleSizeDirect( 35c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber uint32_t sampleIndex, size_t *size); 36c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber 37c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huberprivate: 38c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber SampleTable *mTable; 39c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber 40c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber bool mInitialized; 41c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber 42c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber uint32_t mSampleToChunkIndex; 43c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber uint32_t mFirstChunk; 44c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber uint32_t mFirstChunkSampleIndex; 45c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber uint32_t mStopChunk; 46c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber uint32_t mStopChunkSampleIndex; 47c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber uint32_t mSamplesPerChunk; 48c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber uint32_t mChunkDesc; 49c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber 50c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber uint32_t mCurrentChunkIndex; 51c7fc37a3dab9bd1f96713649f351b5990e6316ffJames Dong off64_t mCurrentChunkOffset; 52c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber Vector<size_t> mCurrentChunkSampleSizes; 53c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber 54c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber uint32_t mTimeToSampleIndex; 55c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber uint32_t mTTSSampleIndex; 56c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber uint32_t mTTSSampleTime; 57c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber uint32_t mTTSCount; 58c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber uint32_t mTTSDuration; 59c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber 60c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber uint32_t mCurrentSampleIndex; 61c7fc37a3dab9bd1f96713649f351b5990e6316ffJames Dong off64_t mCurrentSampleOffset; 62c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber size_t mCurrentSampleSize; 63c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber uint32_t mCurrentSampleTime; 64c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber 65c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber void reset(); 66c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber status_t findChunkRange(uint32_t sampleIndex); 67c7fc37a3dab9bd1f96713649f351b5990e6316ffJames Dong status_t getChunkOffset(uint32_t chunk, off64_t *offset); 68c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber status_t findSampleTime(uint32_t sampleIndex, uint32_t *time); 69c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber 70c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber SampleIterator(const SampleIterator &); 71c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber SampleIterator &operator=(const SampleIterator &); 72c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber}; 73c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber 74c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber} // namespace android 75c57b67905c2128ddadfeca96785ee1f593b6605aAndreas Huber 76