14456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber/* 24456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber * Copyright (C) 2010 The Android Open Source Project 34456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber * 44456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 54456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber * you may not use this file except in compliance with the License. 64456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber * You may obtain a copy of the License at 74456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber * 84456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 94456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber * 104456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber * Unless required by applicable law or agreed to in writing, software 114456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 124456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber * See the License for the specific language governing permissions and 144456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber * limitations under the License. 154456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber */ 164456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 174456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber#ifndef MP3_SEEKER_H_ 184456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 194456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber#define MP3_SEEKER_H_ 204456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 214456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber#include <media/stagefright/foundation/ABase.h> 224456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber#include <utils/RefBase.h> 234456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 244456da54bcd206ed1f518c69cc959ca65a179c83Andreas Hubernamespace android { 254456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 264456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huberstruct MP3Seeker : public RefBase { 274456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber MP3Seeker() {} 284456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 294456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber virtual bool getDuration(int64_t *durationUs) = 0; 304456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 314456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber // Given a request seek time in "*timeUs", find the byte offset closest 324456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber // to that position and return it in "*pos". Update "*timeUs" to reflect 334456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber // the actual time that seekpoint represents. 34c7fc37a3dab9bd1f96713649f351b5990e6316ffJames Dong virtual bool getOffsetForTime(int64_t *timeUs, off64_t *pos) = 0; 354456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 364456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huberprotected: 374456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber virtual ~MP3Seeker() {} 384456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 394456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huberprivate: 404456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber DISALLOW_EVIL_CONSTRUCTORS(MP3Seeker); 414456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber}; 424456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 434456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber} // namespace android 444456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 454456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber#endif // MP3_SEEKER_H_ 464456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 47