DrmManagerService.cpp revision e943f84129326ab885cc7a69dcfa17f766b72b89
127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi/* 227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * Copyright (C) 2010 The Android Open Source Project 327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * 427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * Licensed under the Apache License, Version 2.0 (the "License"); 527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * you may not use this file except in compliance with the License. 627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * You may obtain a copy of the License at 727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * 827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * http://www.apache.org/licenses/LICENSE-2.0 927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * 1027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * Unless required by applicable law or agreed to in writing, software 1127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * distributed under the License is distributed on an "AS IS" BASIS, 1227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * See the License for the specific language governing permissions and 1427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi * limitations under the License. 1527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi */ 1627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 172272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi//#define LOG_NDEBUG 0 1827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#define LOG_TAG "DrmManagerService(Native)" 1927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include <utils/Log.h> 2027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 2127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include <errno.h> 2227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include <utils/threads.h> 2327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include <binder/IServiceManager.h> 2427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include <sys/stat.h> 2527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include "DrmManagerService.h" 2627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include "DrmManager.h" 2727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 2827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiusing namespace android; 2927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 3027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshivoid DrmManagerService::instantiate() { 3127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("instantiate"); 32e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi defaultServiceManager()->addService(String16("drm.drmManager"), new DrmManagerService()); 3327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 3427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 35e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi AimiDrmManagerService::DrmManagerService() : 36e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi mDrmManager(NULL) { 3727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("created"); 3827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi mDrmManager = new DrmManager(); 39e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi mDrmManager->loadPlugIns(); 4027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 4127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 4227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmManagerService::~DrmManagerService() { 4327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Destroyed"); 44e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi mDrmManager->unloadPlugIns(); 4527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi delete mDrmManager; mDrmManager = NULL; 4627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 4727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 482272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimiint DrmManagerService::addUniqueId(int uniqueId) { 492272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi return mDrmManager->addUniqueId(uniqueId); 502272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi} 512272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi 522272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimivoid DrmManagerService::removeUniqueId(int uniqueId) { 532272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi mDrmManager->removeUniqueId(uniqueId); 542272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi} 552272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi 56e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimivoid DrmManagerService::addClient(int uniqueId) { 57e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi mDrmManager->addClient(uniqueId); 5827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 5927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 60e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimivoid DrmManagerService::removeClient(int uniqueId) { 61e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi mDrmManager->removeClient(uniqueId); 6227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 6327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 6427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmManagerService::setDrmServiceListener( 6527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, const sp<IDrmServiceListener>& drmServiceListener) { 6627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering setDrmServiceListener"); 6727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi mDrmManager->setDrmServiceListener(uniqueId, drmServiceListener); 6827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return DRM_NO_ERROR; 6927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 7027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 7127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmManagerService::installDrmEngine(int uniqueId, const String8& drmEngineFile) { 7227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering installDrmEngine"); 7327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->installDrmEngine(uniqueId, drmEngineFile); 7427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 7527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 7627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmConstraints* DrmManagerService::getConstraints( 7727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, const String8* path, const int action) { 7827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering getConstraints from content"); 7927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->getConstraints(uniqueId, path, action); 8027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 8127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 8227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshibool DrmManagerService::canHandle(int uniqueId, const String8& path, const String8& mimeType) { 8327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering canHandle"); 8427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->canHandle(uniqueId, path, mimeType); 8527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 8627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 8727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmInfoStatus* DrmManagerService::processDrmInfo(int uniqueId, const DrmInfo* drmInfo) { 8827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering processDrmInfo"); 8927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->processDrmInfo(uniqueId, drmInfo); 9027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 9127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 9227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmInfo* DrmManagerService::acquireDrmInfo(int uniqueId, const DrmInfoRequest* drmInfoRequest) { 9327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering acquireDrmInfo"); 9427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->acquireDrmInfo(uniqueId, drmInfoRequest); 9527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 9627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 972272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmManagerService::saveRights( 9827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, const DrmRights& drmRights, 9927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi const String8& rightsPath, const String8& contentPath) { 10027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering saveRights"); 10127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->saveRights(uniqueId, drmRights, rightsPath, contentPath); 10227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 10327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 10427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiString8 DrmManagerService::getOriginalMimeType(int uniqueId, const String8& path) { 10527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering getOriginalMimeType"); 10627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->getOriginalMimeType(uniqueId, path); 10727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 10827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 10927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiint DrmManagerService::getDrmObjectType( 11027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, const String8& path, const String8& mimeType) { 11127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering getDrmObjectType"); 11227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->getDrmObjectType(uniqueId, path, mimeType); 11327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 11427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 11527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiint DrmManagerService::checkRightsStatus( 11627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, const String8& path, int action) { 11727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering checkRightsStatus"); 11827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->checkRightsStatus(uniqueId, path, action); 11927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 12027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 1212272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmManagerService::consumeRights( 12227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, DecryptHandle* decryptHandle, int action, bool reserve) { 12327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering consumeRights"); 1242272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi return mDrmManager->consumeRights(uniqueId, decryptHandle, action, reserve); 12527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 12627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 1272272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmManagerService::setPlaybackStatus( 12827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int position) { 12927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering setPlaybackStatus"); 1302272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi return mDrmManager->setPlaybackStatus(uniqueId, decryptHandle, playbackStatus, position); 13127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 13227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 13327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshibool DrmManagerService::validateAction( 13427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, const String8& path, 13527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int action, const ActionDescription& description) { 13627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering validateAction"); 13727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->validateAction(uniqueId, path, action, description); 13827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 13927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 1402272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmManagerService::removeRights(int uniqueId, const String8& path) { 14127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering removeRights"); 1422272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi return mDrmManager->removeRights(uniqueId, path); 14327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 14427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 1452272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmManagerService::removeAllRights(int uniqueId) { 14627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering removeAllRights"); 1472272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi return mDrmManager->removeAllRights(uniqueId); 14827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 14927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 15027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiint DrmManagerService::openConvertSession(int uniqueId, const String8& mimeType) { 15127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering openConvertSession"); 15227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->openConvertSession(uniqueId, mimeType); 15327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 15427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 15527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmConvertedStatus* DrmManagerService::convertData( 15627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, int convertId, const DrmBuffer* inputData) { 15727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering convertData"); 15827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->convertData(uniqueId, convertId, inputData); 15927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 16027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 16127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmConvertedStatus* DrmManagerService::closeConvertSession(int uniqueId, int convertId) { 16227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering closeConvertSession"); 16327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->closeConvertSession(uniqueId, convertId); 16427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 16527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 16627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmManagerService::getAllSupportInfo( 16727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, int* length, DrmSupportInfo** drmSupportInfoArray) { 16827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering getAllSupportInfo"); 16927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->getAllSupportInfo(uniqueId, length, drmSupportInfoArray); 17027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 17127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 17227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDecryptHandle* DrmManagerService::openDecryptSession( 17327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, int fd, int offset, int length) { 17427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering DrmManagerService::openDecryptSession"); 17527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->openDecryptSession(uniqueId, fd, offset, length); 17627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 17727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 178e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi AimiDecryptHandle* DrmManagerService::openDecryptSession( 179e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi int uniqueId, const char* uri) { 180e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi LOGV("Entering DrmManagerService::openDecryptSession with uri"); 181e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi return mDrmManager->openDecryptSession(uniqueId, uri); 182e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi} 183e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi 1842272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmManagerService::closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle) { 18527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering closeDecryptSession"); 1862272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi return mDrmManager->closeDecryptSession(uniqueId, decryptHandle); 18727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 18827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 1892272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmManagerService::initializeDecryptUnit(int uniqueId, DecryptHandle* decryptHandle, 19027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int decryptUnitId, const DrmBuffer* headerInfo) { 19127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering initializeDecryptUnit"); 1922272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi return mDrmManager->initializeDecryptUnit(uniqueId,decryptHandle, decryptUnitId, headerInfo); 19327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 19427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 19527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmManagerService::decrypt( 1962272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId, 1972272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV) { 19827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering decrypt"); 1992272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi return mDrmManager->decrypt(uniqueId, decryptHandle, decryptUnitId, encBuffer, decBuffer, IV); 20027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 20127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 2022272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmManagerService::finalizeDecryptUnit( 20327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId) { 20427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering finalizeDecryptUnit"); 2052272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi return mDrmManager->finalizeDecryptUnit(uniqueId, decryptHandle, decryptUnitId); 20627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 20727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 20827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshissize_t DrmManagerService::pread(int uniqueId, DecryptHandle* decryptHandle, 20927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi void* buffer, ssize_t numBytes, off_t offset) { 21027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi LOGV("Entering pread"); 21127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi return mDrmManager->pread(uniqueId, decryptHandle, buffer, numBytes, offset); 21227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi} 21327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi 214