11bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber/* 21bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber * Copyright (C) 2010 The Android Open Source Project 31bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber * 41bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 51bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber * you may not use this file except in compliance with the License. 61bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber * You may obtain a copy of the License at 71bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber * 81bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 91bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber * 101bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber * Unless required by applicable law or agreed to in writing, software 111bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 121bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber * See the License for the specific language governing permissions and 141bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber * limitations under the License. 151bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber */ 161bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 171bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber#ifndef VBRI_SEEKER_H_ 181bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 191bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber#define VBRI_SEEKER_H_ 201bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 211bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber#include "include/MP3Seeker.h" 221bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 231bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber#include <utils/Vector.h> 241bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 251bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Hubernamespace android { 261bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 271bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huberstruct DataSource; 281bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 291bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huberstruct VBRISeeker : public MP3Seeker { 301bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber static sp<VBRISeeker> CreateFromSource( 31b1262a8b1dd23abad64465f9ffd25c44facdf4d2James Dong const sp<DataSource> &source, off64_t post_id3_pos); 321bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 331bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber virtual bool getDuration(int64_t *durationUs); 34b1262a8b1dd23abad64465f9ffd25c44facdf4d2James Dong virtual bool getOffsetForTime(int64_t *timeUs, off64_t *pos); 351bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 361bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huberprivate: 37b1262a8b1dd23abad64465f9ffd25c44facdf4d2James Dong off64_t mBasePos; 381bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber int64_t mDurationUs; 391bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber Vector<uint32_t> mSegments; 401bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 411bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber VBRISeeker(); 421bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 431bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber DISALLOW_EVIL_CONSTRUCTORS(VBRISeeker); 441bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber}; 451bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 461bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber} // namespace android 471bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 481bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber#endif // VBRI_SEEKER_H_ 491bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 501bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 51