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 21d91dc5a0602f54fc0d4d2187f37b5b8169bb62c3Dongwon Kang#include <media/MediaExtractor.h> 223d21ae3fad5a894cf15f2e7e7a1d54d0f3d19db0Marco Nelissen#include <media/stagefright/MetaDataBase.h> 2350c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 2450c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang#include <utils/Vector.h> 2550c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 2650c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wangnamespace android { 2750c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 2850c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wangstruct AMessage; 2950c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wangclass String8; 3050c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 3150c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wangclass AACExtractor : public MediaExtractor { 3250c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wangpublic: 333d21ae3fad5a894cf15f2e7e7a1d54d0f3d19db0Marco Nelissen AACExtractor(DataSourceBase *source, off64_t offset); 3450c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 3550c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang virtual size_t countTracks(); 363d21ae3fad5a894cf15f2e7e7a1d54d0f3d19db0Marco Nelissen virtual MediaTrack *getTrack(size_t index); 373d21ae3fad5a894cf15f2e7e7a1d54d0f3d19db0Marco Nelissen virtual status_t getTrackMetaData(MetaDataBase& meta, size_t index, uint32_t flags); 3850c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 393d21ae3fad5a894cf15f2e7e7a1d54d0f3d19db0Marco Nelissen virtual status_t getMetaData(MetaDataBase& meta); 40a48a51c056198a778755cbed52884dc30b74ac0aMarco Nelissen virtual const char * name() { return "AACExtractor"; } 4150c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 4250c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wangprotected: 4350c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang virtual ~AACExtractor(); 4450c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 4550c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wangprivate: 462a243f08193fe9ff1afe018e9953f01c44ced9deMarco Nelissen DataSourceBase *mDataSource; 473d21ae3fad5a894cf15f2e7e7a1d54d0f3d19db0Marco Nelissen MetaDataBase mMeta; 4850c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang status_t mInitCheck; 4950c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 5050c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang Vector<uint64_t> mOffsetVector; 5150c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang int64_t mFrameDurationUs; 5250c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 5350c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang AACExtractor(const AACExtractor &); 5450c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang AACExtractor &operator=(const AACExtractor &); 5550c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang}; 5650c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 5750c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wangbool SniffAAC( 583d21ae3fad5a894cf15f2e7e7a1d54d0f3d19db0Marco Nelissen DataSourceBase *source, String8 *mimeType, float *confidence, off64_t *offset); 5950c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 6050c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang} // namespace android 6150c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang 6250c44c79d2d7dd6cd1485d9d939f67f80b8da1caGloria Wang#endif // AAC_EXTRACTOR_H_ 63