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