WAVExtractor.h revision 6bce6d87b3fd98e68fb54328fb4dc8e40cd2c293
16bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber/* 26bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber * Copyright (C) 2009 The Android Open Source Project 36bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber * 46bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 56bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber * you may not use this file except in compliance with the License. 66bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber * You may obtain a copy of the License at 76bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber * 86bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber * http://www.apache.org/licenses/LICENSE-2.0 96bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber * 106bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber * Unless required by applicable law or agreed to in writing, software 116bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 126bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber * See the License for the specific language governing permissions and 146bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber * limitations under the License. 156bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber */ 166bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber 176bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber#ifndef WAV_EXTRACTOR_H_ 186bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber 196bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber#define WAV_EXTRACTOR_H_ 206bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber 216bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber#include <media/stagefright/MediaExtractor.h> 226bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber 236bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Hubernamespace android { 246bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber 256bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huberclass DataSource; 266bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huberclass String8; 276bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber 286bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huberclass WAVExtractor : public MediaExtractor { 296bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huberpublic: 306bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber // Extractor assumes ownership of "source". 316bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber WAVExtractor(const sp<DataSource> &source); 326bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber 336bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber virtual size_t countTracks(); 346bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber virtual sp<MediaSource> getTrack(size_t index); 356bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber virtual sp<MetaData> getTrackMetaData(size_t index, uint32_t flags); 366bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber 376bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huberprotected: 386bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber virtual ~WAVExtractor(); 396bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber 406bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huberprivate: 416bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber sp<DataSource> mDataSource; 426bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber status_t mInitCheck; 436bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber bool mValidFormat; 446bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber uint16_t mNumChannels; 456bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber uint32_t mSampleRate; 466bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber off_t mDataOffset; 476bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber size_t mDataSize; 486bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber 496bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber status_t init(); 506bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber 516bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber WAVExtractor(const WAVExtractor &); 526bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber WAVExtractor &operator=(const WAVExtractor &); 536bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber}; 546bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber 556bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huberbool SniffWAV( 566bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber const sp<DataSource> &source, String8 *mimeType, float *confidence); 576bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber 586bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber} // namespace android 596bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber 606bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber#endif // WAV_EXTRACTOR_H_ 616bce6d87b3fd98e68fb54328fb4dc8e40cd2c293Andreas Huber 62