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