DrmEngineBase.cpp revision a2cd44cb5067b4fe98794860690394254d3ac73c
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
1727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi#include "DrmEngineBase.h"
1827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
1927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiusing namespace android;
2027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
2127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmEngineBase::DrmEngineBase() {
2227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
2327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
2427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
2527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmEngineBase::~DrmEngineBase() {
2627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
2727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
2827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
2927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmConstraints* DrmEngineBase::getConstraints(
3027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int uniqueId, const String8* path, int action) {
3127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onGetConstraints(uniqueId, path, action);
3227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
3327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
3427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmEngineBase::initialize(int uniqueId) {
3527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onInitialize(uniqueId);
3627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
3727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
3827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmEngineBase::setOnInfoListener(
3927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int uniqueId, const IDrmEngine::OnInfoListener* infoListener) {
4027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onSetOnInfoListener(uniqueId, infoListener);
4127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
4227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
4327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmEngineBase::terminate(int uniqueId) {
4427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onTerminate(uniqueId);
4527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
4627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
4727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshibool DrmEngineBase::canHandle(int uniqueId, const String8& path) {
4827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onCanHandle(uniqueId, path);
4927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
5027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
5127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmInfoStatus* DrmEngineBase::processDrmInfo(int uniqueId, const DrmInfo* drmInfo) {
5227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onProcessDrmInfo(uniqueId, drmInfo);
5327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
5427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
552272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmEngineBase::saveRights(
5627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi            int uniqueId, const DrmRights& drmRights,
5727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi            const String8& rightsPath, const String8& contentPath) {
5827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onSaveRights(uniqueId, drmRights, rightsPath, contentPath);
5927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
6027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
6127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmInfo* DrmEngineBase::acquireDrmInfo(int uniqueId, const DrmInfoRequest* drmInfoRequest) {
6227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onAcquireDrmInfo(uniqueId, drmInfoRequest);
6327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
6427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
6527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiString8 DrmEngineBase::getOriginalMimeType(int uniqueId, const String8& path) {
6627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onGetOriginalMimeType(uniqueId, path);
6727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
6827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
6927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiint DrmEngineBase::getDrmObjectType(int uniqueId, const String8& path, const String8& mimeType) {
7027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onGetDrmObjectType(uniqueId, path, mimeType);
7127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
7227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
7327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiint DrmEngineBase::checkRightsStatus(int uniqueId, const String8& path, int action) {
7427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onCheckRightsStatus(uniqueId, path, action);
7527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
7627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
772272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmEngineBase::consumeRights(
7827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int uniqueId, DecryptHandle* decryptHandle, int action, bool reserve) {
792272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    return onConsumeRights(uniqueId, decryptHandle, action, reserve);
8027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
8127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
822272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmEngineBase::setPlaybackStatus(
83a2cd44cb5067b4fe98794860690394254d3ac73cGloria Wang    int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int64_t position) {
842272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    return onSetPlaybackStatus(uniqueId, decryptHandle, playbackStatus, position);
8527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
8627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
8727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshibool DrmEngineBase::validateAction(
8827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int uniqueId, const String8& path,
8927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int action, const ActionDescription& description) {
9027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onValidateAction(uniqueId, path, action, description);
9127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
9227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
932272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmEngineBase::removeRights(int uniqueId, const String8& path) {
942272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    return onRemoveRights(uniqueId, path);
9527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
9627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
972272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmEngineBase::removeAllRights(int uniqueId) {
982272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    return onRemoveAllRights(uniqueId);
9927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
10027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
1012272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmEngineBase::openConvertSession(int uniqueId, int convertId) {
1022272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    return onOpenConvertSession(uniqueId, convertId);
10327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
10427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
10527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmConvertedStatus* DrmEngineBase::convertData(
10627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int uniqueId, int convertId, const DrmBuffer* inputData) {
10727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onConvertData(uniqueId, convertId, inputData);
10827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
10927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
11027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmConvertedStatus* DrmEngineBase::closeConvertSession(int uniqueId, int convertId) {
11127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onCloseConvertSession(uniqueId, convertId);
11227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
11327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
11427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmSupportInfo* DrmEngineBase::getSupportInfo(int uniqueId) {
11527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onGetSupportInfo(uniqueId);
11627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
11727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
11827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmEngineBase::openDecryptSession(
119a2cd44cb5067b4fe98794860690394254d3ac73cGloria Wang    int uniqueId, DecryptHandle* decryptHandle, int fd, off64_t offset, off64_t length) {
12027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onOpenDecryptSession(uniqueId, decryptHandle, fd, offset, length);
12127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
12227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
123e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimistatus_t DrmEngineBase::openDecryptSession(
124e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi    int uniqueId, DecryptHandle* decryptHandle, const char* uri) {
125e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi    return onOpenDecryptSession(uniqueId, decryptHandle, uri);
126e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi}
127e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi
1282272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmEngineBase::closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle) {
1292272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    return onCloseDecryptSession(uniqueId, decryptHandle);
13027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
13127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
1322272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmEngineBase::initializeDecryptUnit(
13327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId, const DrmBuffer* headerInfo) {
1342272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    return onInitializeDecryptUnit(uniqueId, decryptHandle, decryptUnitId, headerInfo);
13527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
13627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
13727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmEngineBase::decrypt(
13827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId,
1392272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV) {
1402272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    return onDecrypt(uniqueId, decryptHandle, decryptUnitId, encBuffer, decBuffer, IV);
14127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
14227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
1432272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmEngineBase::finalizeDecryptUnit(
14427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId) {
1452272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    return onFinalizeDecryptUnit(uniqueId, decryptHandle, decryptUnitId);
14627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
14727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
14827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshissize_t DrmEngineBase::pread(
149a2cd44cb5067b4fe98794860690394254d3ac73cGloria Wang    int uniqueId, DecryptHandle* decryptHandle, void* buffer, ssize_t numBytes, off64_t offset) {
15027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onPread(uniqueId, decryptHandle, buffer, numBytes, offset);
15127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
15227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
153