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 MP3_SEEKER_H_ 181bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 191bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber#define MP3_SEEKER_H_ 201bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 211bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber#include <media/stagefright/foundation/ABase.h> 221bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber#include <utils/RefBase.h> 231bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 241bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Hubernamespace android { 251bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 261bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huberstruct MP3Seeker : public RefBase { 271bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber MP3Seeker() {} 281bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 291bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber virtual bool getDuration(int64_t *durationUs) = 0; 301bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 311bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber // Given a request seek time in "*timeUs", find the byte offset closest 321bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber // to that position and return it in "*pos". Update "*timeUs" to reflect 331bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber // the actual time that seekpoint represents. 34b1262a8b1dd23abad64465f9ffd25c44facdf4d2James Dong virtual bool getOffsetForTime(int64_t *timeUs, off64_t *pos) = 0; 351bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 361bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huberprotected: 371bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber virtual ~MP3Seeker() {} 381bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 391bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huberprivate: 401bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber DISALLOW_EVIL_CONSTRUCTORS(MP3Seeker); 411bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber}; 421bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 431bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber} // namespace android 441bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 451bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber#endif // MP3_SEEKER_H_ 461bd9949815b93b5a741c0f2533bf50d32542dbe5Andreas Huber 47