150c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang/* 250c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang * Copyright (C) 2011 The Android Open Source Project 350c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang * 450c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang * Licensed under the Apache License, Version 2.0 (the "License"); 550c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang * you may not use this file except in compliance with the License. 650c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang * You may obtain a copy of the License at 750c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang * 850c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang * http://www.apache.org/licenses/LICENSE-2.0 950c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang * 1050c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang * Unless required by applicable law or agreed to in writing, software 1150c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang * distributed under the License is distributed on an "AS IS" BASIS, 1250c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1350c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang * See the License for the specific language governing permissions and 1450c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang * limitations under the License. 1550c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang */ 1650c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 1750c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang#ifndef AAC_EXTRACTOR_H_ 1850c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 1950c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang#define AAC_EXTRACTOR_H_ 2050c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 2150c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang#include <media/stagefright/MediaExtractor.h> 2250c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 2350c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang#include <utils/Vector.h> 2450c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 2550c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wangnamespace android { 2650c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 2750c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wangstruct AMessage; 2850c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wangclass String8; 2950c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 3050c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wangclass AACExtractor : public MediaExtractor { 3150c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wangpublic: 3214da736f1707a6dbefa52405e910ecb1b3bc2dd2Andreas Huber AACExtractor(const sp<DataSource> &source, const sp<AMessage> &meta); 3350c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 3450c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang virtual size_t countTracks(); 3550c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang virtual sp<MediaSource> getTrack(size_t index); 3650c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang virtual sp<MetaData> getTrackMetaData(size_t index, uint32_t flags); 3750c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 3850c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang virtual sp<MetaData> getMetaData(); 3950c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 4050c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wangprotected: 4150c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang virtual ~AACExtractor(); 4250c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 4350c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wangprivate: 4450c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang sp<DataSource> mDataSource; 4550c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang sp<MetaData> mMeta; 4650c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang status_t mInitCheck; 4750c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 4850c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang Vector<uint64_t> mOffsetVector; 4950c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang int64_t mFrameDurationUs; 5050c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 5150c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang AACExtractor(const AACExtractor &); 5250c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang AACExtractor &operator=(const AACExtractor &); 5350c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang}; 5450c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 5550c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wangbool SniffAAC( 5650c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang const sp<DataSource> &source, String8 *mimeType, float *confidence, 5750c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang sp<AMessage> *); 5850c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 5950c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang} // namespace android 6050c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 6150c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang#endif // AAC_EXTRACTOR_H_ 62