11faa92a1e93f311e86dca483ed7702091137de66Andreas Huber/* 21faa92a1e93f311e86dca483ed7702091137de66Andreas Huber * Copyright (C) 2010 The Android Open Source Project 31faa92a1e93f311e86dca483ed7702091137de66Andreas Huber * 41faa92a1e93f311e86dca483ed7702091137de66Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 51faa92a1e93f311e86dca483ed7702091137de66Andreas Huber * you may not use this file except in compliance with the License. 61faa92a1e93f311e86dca483ed7702091137de66Andreas Huber * You may obtain a copy of the License at 71faa92a1e93f311e86dca483ed7702091137de66Andreas Huber * 81faa92a1e93f311e86dca483ed7702091137de66Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 91faa92a1e93f311e86dca483ed7702091137de66Andreas Huber * 101faa92a1e93f311e86dca483ed7702091137de66Andreas Huber * Unless required by applicable law or agreed to in writing, software 111faa92a1e93f311e86dca483ed7702091137de66Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 121faa92a1e93f311e86dca483ed7702091137de66Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131faa92a1e93f311e86dca483ed7702091137de66Andreas Huber * See the License for the specific language governing permissions and 141faa92a1e93f311e86dca483ed7702091137de66Andreas Huber * limitations under the License. 151faa92a1e93f311e86dca483ed7702091137de66Andreas Huber */ 161faa92a1e93f311e86dca483ed7702091137de66Andreas Huber 171faa92a1e93f311e86dca483ed7702091137de66Andreas Huber#include <utils/Vector.h> 181faa92a1e93f311e86dca483ed7702091137de66Andreas Huber 191faa92a1e93f311e86dca483ed7702091137de66Andreas Hubernamespace android { 201faa92a1e93f311e86dca483ed7702091137de66Andreas Huber 211faa92a1e93f311e86dca483ed7702091137de66Andreas Huberstruct SampleTable; 221faa92a1e93f311e86dca483ed7702091137de66Andreas Huber 231faa92a1e93f311e86dca483ed7702091137de66Andreas Huberstruct SampleIterator { 241faa92a1e93f311e86dca483ed7702091137de66Andreas Huber SampleIterator(SampleTable *table); 251faa92a1e93f311e86dca483ed7702091137de66Andreas Huber 261faa92a1e93f311e86dca483ed7702091137de66Andreas Huber status_t seekTo(uint32_t sampleIndex); 271faa92a1e93f311e86dca483ed7702091137de66Andreas Huber 281faa92a1e93f311e86dca483ed7702091137de66Andreas Huber uint32_t getChunkIndex() const { return mCurrentChunkIndex; } 291faa92a1e93f311e86dca483ed7702091137de66Andreas Huber uint32_t getDescIndex() const { return mChunkDesc; } 301faa92a1e93f311e86dca483ed7702091137de66Andreas Huber off_t getSampleOffset() const { return mCurrentSampleOffset; } 311faa92a1e93f311e86dca483ed7702091137de66Andreas Huber size_t getSampleSize() const { return mCurrentSampleSize; } 321faa92a1e93f311e86dca483ed7702091137de66Andreas Huber uint32_t getSampleTime() const { return mCurrentSampleTime; } 331faa92a1e93f311e86dca483ed7702091137de66Andreas Huber 341faa92a1e93f311e86dca483ed7702091137de66Andreas Huber status_t getSampleSizeDirect( 351faa92a1e93f311e86dca483ed7702091137de66Andreas Huber uint32_t sampleIndex, size_t *size); 361faa92a1e93f311e86dca483ed7702091137de66Andreas Huber 371faa92a1e93f311e86dca483ed7702091137de66Andreas Huberprivate: 381faa92a1e93f311e86dca483ed7702091137de66Andreas Huber SampleTable *mTable; 391faa92a1e93f311e86dca483ed7702091137de66Andreas Huber 401faa92a1e93f311e86dca483ed7702091137de66Andreas Huber bool mInitialized; 411faa92a1e93f311e86dca483ed7702091137de66Andreas Huber 421faa92a1e93f311e86dca483ed7702091137de66Andreas Huber uint32_t mSampleToChunkIndex; 431faa92a1e93f311e86dca483ed7702091137de66Andreas Huber uint32_t mFirstChunk; 441faa92a1e93f311e86dca483ed7702091137de66Andreas Huber uint32_t mFirstChunkSampleIndex; 451faa92a1e93f311e86dca483ed7702091137de66Andreas Huber uint32_t mStopChunk; 461faa92a1e93f311e86dca483ed7702091137de66Andreas Huber uint32_t mStopChunkSampleIndex; 471faa92a1e93f311e86dca483ed7702091137de66Andreas Huber uint32_t mSamplesPerChunk; 481faa92a1e93f311e86dca483ed7702091137de66Andreas Huber uint32_t mChunkDesc; 491faa92a1e93f311e86dca483ed7702091137de66Andreas Huber 501faa92a1e93f311e86dca483ed7702091137de66Andreas Huber uint32_t mCurrentChunkIndex; 511faa92a1e93f311e86dca483ed7702091137de66Andreas Huber off_t mCurrentChunkOffset; 521faa92a1e93f311e86dca483ed7702091137de66Andreas Huber Vector<size_t> mCurrentChunkSampleSizes; 531faa92a1e93f311e86dca483ed7702091137de66Andreas Huber 541faa92a1e93f311e86dca483ed7702091137de66Andreas Huber uint32_t mTimeToSampleIndex; 551faa92a1e93f311e86dca483ed7702091137de66Andreas Huber uint32_t mTTSSampleIndex; 561faa92a1e93f311e86dca483ed7702091137de66Andreas Huber uint32_t mTTSSampleTime; 571faa92a1e93f311e86dca483ed7702091137de66Andreas Huber uint32_t mTTSCount; 581faa92a1e93f311e86dca483ed7702091137de66Andreas Huber uint32_t mTTSDuration; 591faa92a1e93f311e86dca483ed7702091137de66Andreas Huber 601faa92a1e93f311e86dca483ed7702091137de66Andreas Huber uint32_t mCurrentSampleIndex; 611faa92a1e93f311e86dca483ed7702091137de66Andreas Huber off_t mCurrentSampleOffset; 621faa92a1e93f311e86dca483ed7702091137de66Andreas Huber size_t mCurrentSampleSize; 631faa92a1e93f311e86dca483ed7702091137de66Andreas Huber uint32_t mCurrentSampleTime; 641faa92a1e93f311e86dca483ed7702091137de66Andreas Huber 651faa92a1e93f311e86dca483ed7702091137de66Andreas Huber void reset(); 661faa92a1e93f311e86dca483ed7702091137de66Andreas Huber status_t findChunkRange(uint32_t sampleIndex); 671faa92a1e93f311e86dca483ed7702091137de66Andreas Huber status_t getChunkOffset(uint32_t chunk, off_t *offset); 681faa92a1e93f311e86dca483ed7702091137de66Andreas Huber status_t findSampleTime(uint32_t sampleIndex, uint32_t *time); 691faa92a1e93f311e86dca483ed7702091137de66Andreas Huber 701faa92a1e93f311e86dca483ed7702091137de66Andreas Huber SampleIterator(const SampleIterator &); 711faa92a1e93f311e86dca483ed7702091137de66Andreas Huber SampleIterator &operator=(const SampleIterator &); 721faa92a1e93f311e86dca483ed7702091137de66Andreas Huber}; 731faa92a1e93f311e86dca483ed7702091137de66Andreas Huber 741faa92a1e93f311e86dca483ed7702091137de66Andreas Huber} // namespace android 751faa92a1e93f311e86dca483ed7702091137de66Andreas Huber 76