FLACExtractor.h revision 856990b491d84b7ed4fefe337485c8997ba9dd02
13b20251a355c88193c439f928a84ae69483fb488John Reck/* 23b20251a355c88193c439f928a84ae69483fb488John Reck * Copyright (C) 2011 The Android Open Source Project 33b20251a355c88193c439f928a84ae69483fb488John Reck * 43b20251a355c88193c439f928a84ae69483fb488John Reck * Licensed under the Apache License, Version 2.0 (the "License"); 53b20251a355c88193c439f928a84ae69483fb488John Reck * you may not use this file except in compliance with the License. 63b20251a355c88193c439f928a84ae69483fb488John Reck * You may obtain a copy of the License at 73b20251a355c88193c439f928a84ae69483fb488John Reck * 83b20251a355c88193c439f928a84ae69483fb488John Reck * http://www.apache.org/licenses/LICENSE-2.0 93b20251a355c88193c439f928a84ae69483fb488John Reck * 103b20251a355c88193c439f928a84ae69483fb488John Reck * Unless required by applicable law or agreed to in writing, software 113b20251a355c88193c439f928a84ae69483fb488John Reck * distributed under the License is distributed on an "AS IS" BASIS, 123b20251a355c88193c439f928a84ae69483fb488John Reck * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133b20251a355c88193c439f928a84ae69483fb488John Reck * See the License for the specific language governing permissions and 143b20251a355c88193c439f928a84ae69483fb488John Reck * limitations under the License. 153b20251a355c88193c439f928a84ae69483fb488John Reck */ 1696a5c4c7bab6718524de7253da8309143ab48befChris Craik 173b20251a355c88193c439f928a84ae69483fb488John Reck#ifndef FLAC_EXTRACTOR_H_ 18443a714fa7c0dd07fee3527cc5bc3d3ca1fb7d44John Reck#define FLAC_EXTRACTOR_H_ 190e89e2b7bcb2c035e8cee77f93120e7c5617f8d2John Reck 20117bdbcfa3e8306dad21e7e01fa71b00cdfa7265Chris Craik#include <media/stagefright/DataSource.h> 21443a714fa7c0dd07fee3527cc5bc3d3ca1fb7d44John Reck#include <media/stagefright/MediaExtractor.h> 223b20251a355c88193c439f928a84ae69483fb488John Reck#include <utils/String8.h> 233b20251a355c88193c439f928a84ae69483fb488John Reck 243b20251a355c88193c439f928a84ae69483fb488John Recknamespace android { 250e89e2b7bcb2c035e8cee77f93120e7c5617f8d2John Reck 260e89e2b7bcb2c035e8cee77f93120e7c5617f8d2John Reckclass FLACParser; 273b20251a355c88193c439f928a84ae69483fb488John Reck 283b20251a355c88193c439f928a84ae69483fb488John Reckclass FLACExtractor : public MediaExtractor { 293b20251a355c88193c439f928a84ae69483fb488John Reck 300e89e2b7bcb2c035e8cee77f93120e7c5617f8d2John Reckpublic: 313b20251a355c88193c439f928a84ae69483fb488John Reck // Extractor assumes ownership of source 323b20251a355c88193c439f928a84ae69483fb488John Reck FLACExtractor(const sp<DataSource> &source); 333b20251a355c88193c439f928a84ae69483fb488John Reck 3444eb2c00861098dd3e2950d923646814b4cc57c2Chris Craik virtual size_t countTracks(); 3596a5c4c7bab6718524de7253da8309143ab48befChris Craik virtual sp<MediaSource> getTrack(size_t index); 363b20251a355c88193c439f928a84ae69483fb488John Reck virtual sp<MetaData> getTrackMetaData(size_t index, uint32_t flags); 373b20251a355c88193c439f928a84ae69483fb488John Reck 383b20251a355c88193c439f928a84ae69483fb488John Reck virtual sp<MetaData> getMetaData(); 3944eb2c00861098dd3e2950d923646814b4cc57c2Chris Craik 4096a5c4c7bab6718524de7253da8309143ab48befChris Craikprotected: 4144eb2c00861098dd3e2950d923646814b4cc57c2Chris Craik virtual ~FLACExtractor(); 4296a5c4c7bab6718524de7253da8309143ab48befChris Craik 4396a5c4c7bab6718524de7253da8309143ab48befChris Craikprivate: 4496a5c4c7bab6718524de7253da8309143ab48befChris Craik sp<DataSource> mDataSource; 4596a5c4c7bab6718524de7253da8309143ab48befChris Craik sp<FLACParser> mParser; 463b20251a355c88193c439f928a84ae69483fb488John Reck status_t mInitCheck; 47ff5c8e8097e3eff910632a568195b798798cccccChris Craik sp<MetaData> mFileMetadata; 48ff5c8e8097e3eff910632a568195b798798cccccChris Craik 49ff5c8e8097e3eff910632a568195b798798cccccChris Craik // There is only one track 503b20251a355c88193c439f928a84ae69483fb488John Reck sp<MetaData> mTrackMetadata; 51ebd52610cfeff6e557fde284a7e1efc5e6438285John Reck 523b20251a355c88193c439f928a84ae69483fb488John Reck status_t init(); 533b20251a355c88193c439f928a84ae69483fb488John Reck 5457998017ff137f7d4ec33df21b6596141f8c4547John Reck FLACExtractor(const FLACExtractor &); 5557998017ff137f7d4ec33df21b6596141f8c4547John Reck FLACExtractor &operator=(const FLACExtractor &); 5657998017ff137f7d4ec33df21b6596141f8c4547John Reck 5757998017ff137f7d4ec33df21b6596141f8c4547John Reck}; 581d4774233304c484673e2af2c1de2ab41021c979Chris Craik 5921029ef131d6a98862ae6faf3305bee2872e9c5fChris Craikbool SniffFLAC(const sp<DataSource> &source, String8 *mimeType, 60bfd1cd620991ac2fa9202fdce6c00ec47d071935Chris Craik float *confidence, sp<AMessage> *); 61bfd1cd620991ac2fa9202fdce6c00ec47d071935Chris Craik 62bfd1cd620991ac2fa9202fdce6c00ec47d071935Chris Craik} // namespace android 63bfd1cd620991ac2fa9202fdce6c00ec47d071935Chris Craik 6417035b0211a3c9d45ea46a99217a6acbe76e8fbeJohn Reck#endif // FLAC_EXTRACTOR_H_ 65443a714fa7c0dd07fee3527cc5bc3d3ca1fb7d44John Reck