DRMExtractor.h revision b5ce361d19e69fe156f7188c9ee0f4734b259874
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; 48b5ce361d19e69fe156f7188c9ee0f4734b259874Gloria Wang sp<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