1856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten/* 2856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten * Copyright (C) 2011 The Android Open Source Project 3856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten * 4856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten * Licensed under the Apache License, Version 2.0 (the "License"); 5856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten * you may not use this file except in compliance with the License. 6856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten * You may obtain a copy of the License at 7856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten * 8856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten * http://www.apache.org/licenses/LICENSE-2.0 9856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten * 10856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten * Unless required by applicable law or agreed to in writing, software 11856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten * distributed under the License is distributed on an "AS IS" BASIS, 12856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten * See the License for the specific language governing permissions and 14856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten * limitations under the License. 15856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten */ 16856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten 17856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten#ifndef FLAC_EXTRACTOR_H_ 18856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten#define FLAC_EXTRACTOR_H_ 19856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten 20856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten#include <media/stagefright/DataSource.h> 21856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten#include <media/stagefright/MediaExtractor.h> 22856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten#include <utils/String8.h> 23856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten 24856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kastennamespace android { 25856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten 26856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kastenclass FLACParser; 27856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten 28856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kastenclass FLACExtractor : public MediaExtractor { 29856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten 30856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kastenpublic: 31856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten // Extractor assumes ownership of source 32856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten FLACExtractor(const sp<DataSource> &source); 33856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten 34856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten virtual size_t countTracks(); 35856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten virtual sp<MediaSource> getTrack(size_t index); 36856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten virtual sp<MetaData> getTrackMetaData(size_t index, uint32_t flags); 37856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten 38856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten virtual sp<MetaData> getMetaData(); 39856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten 40856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kastenprotected: 41856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten virtual ~FLACExtractor(); 42856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten 43856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kastenprivate: 44856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten sp<DataSource> mDataSource; 45856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten sp<FLACParser> mParser; 46856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten status_t mInitCheck; 47856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten sp<MetaData> mFileMetadata; 48856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten 49856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten // There is only one track 50856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten sp<MetaData> mTrackMetadata; 51856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten 52856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten status_t init(); 53856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten 54856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten FLACExtractor(const FLACExtractor &); 55856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten FLACExtractor &operator=(const FLACExtractor &); 56856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten 57856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten}; 58856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten 59856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kastenbool SniffFLAC(const sp<DataSource> &source, String8 *mimeType, 60856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten float *confidence, sp<AMessage> *); 61856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten 62856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten} // namespace android 63856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten 64856990b491d84b7ed4fefe337485c8997ba9dd02Glenn Kasten#endif // FLAC_EXTRACTOR_H_ 65