AMRExtractor.h revision 7e04dcf8d6784dd56f53aa90bf34431ab4f0710c
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
25f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huberclass String8;
26f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
27f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huberclass AMRExtractor : public MediaExtractor {
28f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huberpublic:
29f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber    AMRExtractor(const sp<DataSource> &source);
30f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
31f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber    virtual size_t countTracks();
32f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber    virtual sp<MediaSource> getTrack(size_t index);
337e04dcf8d6784dd56f53aa90bf34431ab4f0710cAndreas Huber    virtual sp<MetaData> getTrackMetaData(size_t index, uint32_t flags);
34f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
35f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber    static sp<MetaData> makeAMRFormat(bool isWide);
36f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
37f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huberprotected:
38f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber    virtual ~AMRExtractor();
39f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
40f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huberprivate:
41f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber    sp<DataSource> mDataSource;
42f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber    status_t mInitCheck;
43f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber    bool mIsWide;
44f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
45f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber    AMRExtractor(const AMRExtractor &);
46f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber    AMRExtractor &operator=(const AMRExtractor &);
47f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber};
48f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
49f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huberbool SniffAMR(
50f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber        const sp<DataSource> &source, String8 *mimeType, float *confidence);
51f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
52f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber}  // namespace android
53f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber
54f75978f63a25e79c683e96611f95cb5cd49efd3dAndreas Huber#endif  // AMR_EXTRACTOR_H_
55