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 VBRI_SEEKER_H_
184456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber
194456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber#define VBRI_SEEKER_H_
204456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber
214456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber#include "include/MP3Seeker.h"
224456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber
234456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber#include <utils/Vector.h>
244456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber
254456da54bcd206ed1f518c69cc959ca65a179c83Andreas Hubernamespace android {
264456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber
27ee4e1b1a63758941460ae79a064249d3a5189443Lajos Molnarclass DataSource;
284456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber
294456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huberstruct VBRISeeker : public MP3Seeker {
304456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber    static sp<VBRISeeker> CreateFromSource(
31c7fc37a3dab9bd1f96713649f351b5990e6316ffJames Dong            const sp<DataSource> &source, off64_t post_id3_pos);
324456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber
334456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber    virtual bool getDuration(int64_t *durationUs);
34c7fc37a3dab9bd1f96713649f351b5990e6316ffJames Dong    virtual bool getOffsetForTime(int64_t *timeUs, off64_t *pos);
354456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber
364456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huberprivate:
37c7fc37a3dab9bd1f96713649f351b5990e6316ffJames Dong    off64_t mBasePos;
384456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber    int64_t mDurationUs;
394456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber    Vector<uint32_t> mSegments;
404456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber
414456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber    VBRISeeker();
424456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber
434456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber    DISALLOW_EVIL_CONSTRUCTORS(VBRISeeker);
444456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber};
454456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber
464456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber}  // namespace android
474456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber
484456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber#endif  // VBRI_SEEKER_H_
494456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber
504456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber
51