15a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber/* 25a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber * Copyright (C) 2009 The Android Open Source Project 35a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber * 45a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 55a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber * you may not use this file except in compliance with the License. 65a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber * You may obtain a copy of the License at 75a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber * 85a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber * http://www.apache.org/licenses/LICENSE-2.0 95a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber * 105a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber * Unless required by applicable law or agreed to in writing, software 115a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 125a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber * See the License for the specific language governing permissions and 145a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber * limitations under the License. 155a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber */ 165a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber 175a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber#ifndef AMR_EXTRACTOR_H_ 185a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber 195a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber#define AMR_EXTRACTOR_H_ 205a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber 215a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber#include <media/stagefright/MediaExtractor.h> 225a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber 235a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Hubernamespace android { 245a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber 25efdd088a71ddd0a96cf9ca2f58e8703fe8c5c494Andreas Huberstruct AMessage; 265a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huberclass String8; 275a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber 285a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huberclass AMRExtractor : public MediaExtractor { 295a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huberpublic: 305a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber AMRExtractor(const sp<DataSource> &source); 315a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber 325a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber virtual size_t countTracks(); 335a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber virtual sp<MediaSource> getTrack(size_t index); 34e981c33446a98d5ccc0d73c1a840696d77cf0732Andreas Huber virtual sp<MetaData> getTrackMetaData(size_t index, uint32_t flags); 355a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber 361cb02bf661807ffc6525dcc13e16d7ce027bef00Andreas Huber virtual sp<MetaData> getMetaData(); 371cb02bf661807ffc6525dcc13e16d7ce027bef00Andreas Huber 385a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huberprotected: 395a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber virtual ~AMRExtractor(); 405a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber 415a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huberprivate: 425a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber sp<DataSource> mDataSource; 4327366fc9540cb642ee4856957dabffe7ddf1f901Andreas Huber sp<MetaData> mMeta; 445a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber status_t mInitCheck; 4527366fc9540cb642ee4856957dabffe7ddf1f901Andreas Huber size_t mFrameSize; 465a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber bool mIsWide; 475a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber 485a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber AMRExtractor(const AMRExtractor &); 495a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber AMRExtractor &operator=(const AMRExtractor &); 505a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber}; 515a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber 525a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huberbool SniffAMR( 53efdd088a71ddd0a96cf9ca2f58e8703fe8c5c494Andreas Huber const sp<DataSource> &source, String8 *mimeType, float *confidence, 54efdd088a71ddd0a96cf9ca2f58e8703fe8c5c494Andreas Huber sp<AMessage> *); 555a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber 565a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber} // namespace android 575a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber 585a65a6e22017e51ebcebb0f41510c54f1085f82cAndreas Huber#endif // AMR_EXTRACTOR_H_ 59