AMRExtractor.h revision 5a1c3529e4fa2f8a11054181294e0ce79fff8dd3
1f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber/*
2f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber * Copyright (C) 2009 The Android Open Source Project
3f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber *
4f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
5f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber * you may not use this file except in compliance with the License.
6f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber * You may obtain a copy of the License at
7f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber *
8f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
9f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber *
10f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber * Unless required by applicable law or agreed to in writing, software
11f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
12f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber * See the License for the specific language governing permissions and
14f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber * limitations under the License.
15f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber */
16f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
17f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber#ifndef AMR_EXTRACTOR_H_
18f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
19f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber#define AMR_EXTRACTOR_H_
20f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
21f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber#include <media/stagefright/MediaExtractor.h>
22f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
23f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Hubernamespace android {
24f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
255a1c3529e4fa2f8a11054181294e0ce79fff8dd3Andreas Huberstruct AMessage;
26f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huberclass String8;
27f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
28f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huberclass AMRExtractor : public MediaExtractor {
29f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huberpublic:
30f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber    AMRExtractor(const sp<DataSource> &source);
31f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
32f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber    virtual size_t countTracks();
33f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber    virtual sp<MediaSource> getTrack(size_t index);
347e04dcf8d6784dd56f53aa90bf34431ab4f0710cAndreas Huber    virtual sp<MetaData> getTrackMetaData(size_t index, uint32_t flags);
35f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
367be6407f2ad7f2b0782d195d9f792072c084d6f5Andreas Huber    virtual sp<MetaData> getMetaData();
377be6407f2ad7f2b0782d195d9f792072c084d6f5Andreas Huber
38f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huberprotected:
39f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber    virtual ~AMRExtractor();
40f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
41f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huberprivate:
42f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber    sp<DataSource> mDataSource;
43bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber    sp<MetaData> mMeta;
44f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber    status_t mInitCheck;
45bfa6b2d7a1be1832ac40ed90aece1834f720b5c6Andreas Huber    size_t mFrameSize;
46f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber    bool mIsWide;
47f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
48f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber    AMRExtractor(const AMRExtractor &);
49f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber    AMRExtractor &operator=(const AMRExtractor &);
50f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber};
51f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
52f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huberbool SniffAMR(
535a1c3529e4fa2f8a11054181294e0ce79fff8dd3Andreas Huber        const sp<DataSource> &source, String8 *mimeType, float *confidence,
545a1c3529e4fa2f8a11054181294e0ce79fff8dd3Andreas Huber        sp<AMessage> *);
55f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
56f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber}  // namespace android
57f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
58f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber#endif  // AMR_EXTRACTOR_H_
59