1c5b0abf900474b204c367093984ff60da4fba09cGloria Wang/* 2c5b0abf900474b204c367093984ff60da4fba09cGloria Wang * Copyright (C) 2011 The Android Open Source Project 3c5b0abf900474b204c367093984ff60da4fba09cGloria Wang * 4c5b0abf900474b204c367093984ff60da4fba09cGloria Wang * Licensed under the Apache License, Version 2.0 (the "License"); 5c5b0abf900474b204c367093984ff60da4fba09cGloria Wang * you may not use this file except in compliance with the License. 6c5b0abf900474b204c367093984ff60da4fba09cGloria Wang * You may obtain a copy of the License at 7c5b0abf900474b204c367093984ff60da4fba09cGloria Wang * 8c5b0abf900474b204c367093984ff60da4fba09cGloria Wang * http://www.apache.org/licenses/LICENSE-2.0 9c5b0abf900474b204c367093984ff60da4fba09cGloria Wang * 10c5b0abf900474b204c367093984ff60da4fba09cGloria Wang * Unless required by applicable law or agreed to in writing, software 11c5b0abf900474b204c367093984ff60da4fba09cGloria Wang * distributed under the License is distributed on an "AS IS" BASIS, 12c5b0abf900474b204c367093984ff60da4fba09cGloria Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c5b0abf900474b204c367093984ff60da4fba09cGloria Wang * See the License for the specific language governing permissions and 14c5b0abf900474b204c367093984ff60da4fba09cGloria Wang * limitations under the License. 15c5b0abf900474b204c367093984ff60da4fba09cGloria Wang */ 16c5b0abf900474b204c367093984ff60da4fba09cGloria Wang 17c5b0abf900474b204c367093984ff60da4fba09cGloria Wang#ifndef AAC_EXTRACTOR_H_ 18c5b0abf900474b204c367093984ff60da4fba09cGloria Wang 19c5b0abf900474b204c367093984ff60da4fba09cGloria Wang#define AAC_EXTRACTOR_H_ 20c5b0abf900474b204c367093984ff60da4fba09cGloria Wang 21c5b0abf900474b204c367093984ff60da4fba09cGloria Wang#include <media/stagefright/MediaExtractor.h> 22c5b0abf900474b204c367093984ff60da4fba09cGloria Wang 23c5b0abf900474b204c367093984ff60da4fba09cGloria Wang#include <utils/Vector.h> 24c5b0abf900474b204c367093984ff60da4fba09cGloria Wang 25c5b0abf900474b204c367093984ff60da4fba09cGloria Wangnamespace android { 26c5b0abf900474b204c367093984ff60da4fba09cGloria Wang 27c5b0abf900474b204c367093984ff60da4fba09cGloria Wangstruct AMessage; 28c5b0abf900474b204c367093984ff60da4fba09cGloria Wangclass String8; 29c5b0abf900474b204c367093984ff60da4fba09cGloria Wang 30c5b0abf900474b204c367093984ff60da4fba09cGloria Wangclass AACExtractor : public MediaExtractor { 31c5b0abf900474b204c367093984ff60da4fba09cGloria Wangpublic: 32c5b0abf900474b204c367093984ff60da4fba09cGloria Wang AACExtractor(const sp<DataSource> &source); 33c5b0abf900474b204c367093984ff60da4fba09cGloria Wang 34c5b0abf900474b204c367093984ff60da4fba09cGloria Wang virtual size_t countTracks(); 35c5b0abf900474b204c367093984ff60da4fba09cGloria Wang virtual sp<MediaSource> getTrack(size_t index); 36c5b0abf900474b204c367093984ff60da4fba09cGloria Wang virtual sp<MetaData> getTrackMetaData(size_t index, uint32_t flags); 37c5b0abf900474b204c367093984ff60da4fba09cGloria Wang 38c5b0abf900474b204c367093984ff60da4fba09cGloria Wang virtual sp<MetaData> getMetaData(); 39c5b0abf900474b204c367093984ff60da4fba09cGloria Wang 40c5b0abf900474b204c367093984ff60da4fba09cGloria Wangprotected: 41c5b0abf900474b204c367093984ff60da4fba09cGloria Wang virtual ~AACExtractor(); 42c5b0abf900474b204c367093984ff60da4fba09cGloria Wang 43c5b0abf900474b204c367093984ff60da4fba09cGloria Wangprivate: 44c5b0abf900474b204c367093984ff60da4fba09cGloria Wang sp<DataSource> mDataSource; 45c5b0abf900474b204c367093984ff60da4fba09cGloria Wang sp<MetaData> mMeta; 46c5b0abf900474b204c367093984ff60da4fba09cGloria Wang status_t mInitCheck; 47c5b0abf900474b204c367093984ff60da4fba09cGloria Wang 48c5b0abf900474b204c367093984ff60da4fba09cGloria Wang Vector<uint64_t> mOffsetVector; 49c5b0abf900474b204c367093984ff60da4fba09cGloria Wang int64_t mFrameDurationUs; 50c5b0abf900474b204c367093984ff60da4fba09cGloria Wang 51c5b0abf900474b204c367093984ff60da4fba09cGloria Wang AACExtractor(const AACExtractor &); 52c5b0abf900474b204c367093984ff60da4fba09cGloria Wang AACExtractor &operator=(const AACExtractor &); 53c5b0abf900474b204c367093984ff60da4fba09cGloria Wang}; 54c5b0abf900474b204c367093984ff60da4fba09cGloria Wang 55c5b0abf900474b204c367093984ff60da4fba09cGloria Wangbool SniffAAC( 56c5b0abf900474b204c367093984ff60da4fba09cGloria Wang const sp<DataSource> &source, String8 *mimeType, float *confidence, 57c5b0abf900474b204c367093984ff60da4fba09cGloria Wang sp<AMessage> *); 58c5b0abf900474b204c367093984ff60da4fba09cGloria Wang 59c5b0abf900474b204c367093984ff60da4fba09cGloria Wang} // namespace android 60c5b0abf900474b204c367093984ff60da4fba09cGloria Wang 61c5b0abf900474b204c367093984ff60da4fba09cGloria Wang#endif // AAC_EXTRACTOR_H_ 62