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