/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef __DRM_PASSTHRU_PLUGIN_H__ #define __DRM_PASSTHRU_PLUGIN_H__ #include namespace android { class DrmPassthruPlugIn : public DrmEngineBase { public: DrmPassthruPlugIn(); virtual ~DrmPassthruPlugIn(); protected: DrmConstraints* onGetConstraints(int uniqueId, const String8* path, int action); status_t onInitialize(int uniqueId); status_t onSetOnInfoListener(int uniqueId, const IDrmEngine::OnInfoListener* infoListener); status_t onTerminate(int uniqueId); bool onCanHandle(int uniqueId, const String8& path); DrmInfoStatus* onProcessDrmInfo(int uniqueId, const DrmInfo* drmInfo); void onSaveRights(int uniqueId, const DrmRights& drmRights, const String8& rightsPath, const String8& contentPath); DrmInfo* onAcquireDrmInfo(int uniqueId, const DrmInfoRequest* drmInfoRequest); String8 onGetOriginalMimeType(int uniqueId, const String8& path); int onGetDrmObjectType(int uniqueId, const String8& path, const String8& mimeType); int onCheckRightsStatus(int uniqueId, const String8& path, int action); void onConsumeRights(int uniqueId, DecryptHandle* decryptHandle, int action, bool reserve); void onSetPlaybackStatus( int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int position); bool onValidateAction( int uniqueId, const String8& path, int action, const ActionDescription& description); void onRemoveRights(int uniqueId, const String8& path); void onRemoveAllRights(int uniqueId); void onOpenConvertSession(int uniqueId, int convertId); DrmConvertedStatus* onConvertData(int uniqueId, int convertId, const DrmBuffer* inputData); DrmConvertedStatus* onCloseConvertSession(int uniqueId, int convertId); DrmSupportInfo* onGetSupportInfo(int uniqueId); status_t onOpenDecryptSession( int uniqueId, DecryptHandle* decryptHandle, int fd, int offset, int length); void onCloseDecryptSession(int uniqueId, DecryptHandle* decryptHandle); void onInitializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId, const DrmBuffer* headerInfo); status_t onDecrypt(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId, const DrmBuffer* encBuffer, DrmBuffer** decBuffer); void onFinalizeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId); ssize_t onPread(int uniqueId, DecryptHandle* decryptHandle, void* buffer, ssize_t numBytes, off_t offset); private: DecryptHandle* openDecryptSessionImpl(); }; }; #endif /* __DRM_PASSTHRU_PLUGIN_H__ */