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