DrmEngineBase.cpp revision 3473846f64f5b28e1cbeb70ef5867073fc93159e
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
343473846f64f5b28e1cbeb70ef5867073fc93159eTakeshi AimiDrmMetadata* DrmEngineBase::getMetadata(int uniqueId, const String8* path) {
353473846f64f5b28e1cbeb70ef5867073fc93159eTakeshi Aimi    return onGetMetadata(uniqueId, path);
363473846f64f5b28e1cbeb70ef5867073fc93159eTakeshi Aimi}
373473846f64f5b28e1cbeb70ef5867073fc93159eTakeshi Aimi
3827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmEngineBase::initialize(int uniqueId) {
3927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onInitialize(uniqueId);
4027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
4127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
4227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmEngineBase::setOnInfoListener(
4327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int uniqueId, const IDrmEngine::OnInfoListener* infoListener) {
4427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onSetOnInfoListener(uniqueId, infoListener);
4527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
4627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
4727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmEngineBase::terminate(int uniqueId) {
4827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onTerminate(uniqueId);
4927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
5027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
5127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshibool DrmEngineBase::canHandle(int uniqueId, const String8& path) {
5227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onCanHandle(uniqueId, path);
5327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
5427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
5527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmInfoStatus* DrmEngineBase::processDrmInfo(int uniqueId, const DrmInfo* drmInfo) {
5627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onProcessDrmInfo(uniqueId, drmInfo);
5727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
5827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
592272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmEngineBase::saveRights(
6027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi            int uniqueId, const DrmRights& drmRights,
6127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi            const String8& rightsPath, const String8& contentPath) {
6227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onSaveRights(uniqueId, drmRights, rightsPath, contentPath);
6327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
6427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
6527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmInfo* DrmEngineBase::acquireDrmInfo(int uniqueId, const DrmInfoRequest* drmInfoRequest) {
6627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onAcquireDrmInfo(uniqueId, drmInfoRequest);
6727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
6827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
6927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiString8 DrmEngineBase::getOriginalMimeType(int uniqueId, const String8& path) {
7027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onGetOriginalMimeType(uniqueId, path);
7127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
7227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
7327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiint DrmEngineBase::getDrmObjectType(int uniqueId, const String8& path, const String8& mimeType) {
7427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onGetDrmObjectType(uniqueId, path, mimeType);
7527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
7627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
7727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiint DrmEngineBase::checkRightsStatus(int uniqueId, const String8& path, int action) {
7827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onCheckRightsStatus(uniqueId, path, action);
7927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
8027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
812272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmEngineBase::consumeRights(
8227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int uniqueId, DecryptHandle* decryptHandle, int action, bool reserve) {
832272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    return onConsumeRights(uniqueId, decryptHandle, action, reserve);
8427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
8527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
862272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmEngineBase::setPlaybackStatus(
8727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int uniqueId, DecryptHandle* decryptHandle, int playbackStatus, int position) {
882272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    return onSetPlaybackStatus(uniqueId, decryptHandle, playbackStatus, position);
8927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
9027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
9127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshibool DrmEngineBase::validateAction(
9227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int uniqueId, const String8& path,
9327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int action, const ActionDescription& description) {
9427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onValidateAction(uniqueId, path, action, description);
9527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
9627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
972272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmEngineBase::removeRights(int uniqueId, const String8& path) {
982272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    return onRemoveRights(uniqueId, path);
9927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
10027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
1012272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmEngineBase::removeAllRights(int uniqueId) {
1022272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    return onRemoveAllRights(uniqueId);
10327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
10427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
1052272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmEngineBase::openConvertSession(int uniqueId, int convertId) {
1062272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    return onOpenConvertSession(uniqueId, convertId);
10727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
10827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
10927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmConvertedStatus* DrmEngineBase::convertData(
11027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int uniqueId, int convertId, const DrmBuffer* inputData) {
11127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onConvertData(uniqueId, convertId, inputData);
11227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
11327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
11427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmConvertedStatus* DrmEngineBase::closeConvertSession(int uniqueId, int convertId) {
11527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onCloseConvertSession(uniqueId, convertId);
11627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
11727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
11827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshiDrmSupportInfo* DrmEngineBase::getSupportInfo(int uniqueId) {
11927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onGetSupportInfo(uniqueId);
12027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
12127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
12227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmEngineBase::openDecryptSession(
12327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int uniqueId, DecryptHandle* decryptHandle, int fd, int offset, int length) {
12427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onOpenDecryptSession(uniqueId, decryptHandle, fd, offset, length);
12527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
12627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
127e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimistatus_t DrmEngineBase::openDecryptSession(
128e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi    int uniqueId, DecryptHandle* decryptHandle, const char* uri) {
129e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi    return onOpenDecryptSession(uniqueId, decryptHandle, uri);
130e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi}
131e943f84129326ab885cc7a69dcfa17f766b72b89Takeshi Aimi
1322272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmEngineBase::closeDecryptSession(int uniqueId, DecryptHandle* decryptHandle) {
1332272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    return onCloseDecryptSession(uniqueId, decryptHandle);
13427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
13527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
1362272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmEngineBase::initializeDecryptUnit(
13727ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId, const DrmBuffer* headerInfo) {
1382272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    return onInitializeDecryptUnit(uniqueId, decryptHandle, decryptUnitId, headerInfo);
13927ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
14027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
14127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshistatus_t DrmEngineBase::decrypt(
14227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId,
1432272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    const DrmBuffer* encBuffer, DrmBuffer** decBuffer, DrmBuffer* IV) {
1442272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    return onDecrypt(uniqueId, decryptHandle, decryptUnitId, encBuffer, decBuffer, IV);
14527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
14627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
1472272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimistatus_t DrmEngineBase::finalizeDecryptUnit(
14827ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int uniqueId, DecryptHandle* decryptHandle, int decryptUnitId) {
1492272ee27d9022d173b6eab45c409b3c3f57f30ecTakeshi Aimi    return onFinalizeDecryptUnit(uniqueId, decryptHandle, decryptUnitId);
15027ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
15127ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
15227ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshissize_t DrmEngineBase::pread(
15327ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    int uniqueId, DecryptHandle* decryptHandle, void* buffer, ssize_t numBytes, off_t offset) {
15427ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi    return onPread(uniqueId, decryptHandle, buffer, numBytes, offset);
15527ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi}
15627ed8ad2db653f6ac07dcf8bcc05e2409c8bb024aimitakeshi
157