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