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 XING_SEEKER_H_ 184456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 194456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber#define XING_SEEKER_H_ 204456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 214456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber#include "include/MP3Seeker.h" 224456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 234456da54bcd206ed1f518c69cc959ca65a179c83Andreas Hubernamespace android { 244456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 25ee4e1b1a63758941460ae79a064249d3a5189443Lajos Molnarclass DataSource; 264456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 274456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huberstruct XINGSeeker : public MP3Seeker { 284456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber static sp<XINGSeeker> CreateFromSource( 29c7fc37a3dab9bd1f96713649f351b5990e6316ffJames Dong const sp<DataSource> &source, off64_t first_frame_pos); 304456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 314456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber virtual bool getDuration(int64_t *durationUs); 32c7fc37a3dab9bd1f96713649f351b5990e6316ffJames Dong virtual bool getOffsetForTime(int64_t *timeUs, off64_t *pos); 334456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 34b636abde14f2612ea236257846b9ab15d87d4623Marco Nelissen virtual int32_t getEncoderDelay(); 35b636abde14f2612ea236257846b9ab15d87d4623Marco Nelissen virtual int32_t getEncoderPadding(); 36b636abde14f2612ea236257846b9ab15d87d4623Marco Nelissen 374456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huberprivate: 384456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber int64_t mFirstFramePos; 394456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber int64_t mDurationUs; 404456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber int32_t mSizeBytes; 41b636abde14f2612ea236257846b9ab15d87d4623Marco Nelissen int32_t mEncoderDelay; 42b636abde14f2612ea236257846b9ab15d87d4623Marco Nelissen int32_t mEncoderPadding; 434456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 444456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber // TOC entries in XING header. Skip the first one since it's always 0. 455102400104ce1f0a6de7bf913381a91e4f18a22aMarco Nelissen unsigned char mTOC[99]; 465102400104ce1f0a6de7bf913381a91e4f18a22aMarco Nelissen bool mTOCValid; 474456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 484456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber XINGSeeker(); 494456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 504456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber DISALLOW_EVIL_CONSTRUCTORS(XINGSeeker); 514456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber}; 524456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 534456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber} // namespace android 544456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 554456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber#endif // XING_SEEKER_H_ 564456da54bcd206ed1f518c69cc959ca65a179c83Andreas Huber 57