Merge "Add mediadrm service" into nyc-dev

am: f35b991438

* commit 'f35b9914383e6f55008e0c5d74f49a6365c9522f':
  Add mediadrm service
This commit is contained in:
Jeff Tinker
2016-02-13 08:16:03 +00:00
committed by android-build-merger
2 changed files with 46 additions and 20 deletions

View File

@@ -25,7 +25,9 @@
#include "JNIHelp.h"
#include <binder/IServiceManager.h>
#include <cutils/properties.h>
#include <media/ICrypto.h>
#include <media/IMediaDrmService.h>
#include <media/IMediaPlayerService.h>
#include <media/stagefright/foundation/ADebug.h>
@@ -61,19 +63,30 @@ JCrypto::~JCrypto() {
// static
sp<ICrypto> JCrypto::MakeCrypto() {
sp<IServiceManager> sm = defaultServiceManager();
sp<ICrypto> crypto;
sp<IBinder> binder =
sm->getService(String16("media.player"));
sp<IMediaPlayerService> service =
interface_cast<IMediaPlayerService>(binder);
if (service == NULL) {
return NULL;
char value[PROPERTY_VALUE_MAX];
if (property_get("media.mediadrmservice.enable", value, NULL)
&& (!strcmp("1", value) || !strcasecmp("true", value))) {
sp<IBinder> binder =
sm->getService(String16("media.drm"));
sp<IMediaDrmService> service =
interface_cast<IMediaDrmService>(binder);
if (service == NULL) {
return NULL;
}
crypto = service->makeCrypto();
} else {
sp<IBinder> binder =
sm->getService(String16("media.player"));
sp<IMediaPlayerService> service =
interface_cast<IMediaPlayerService>(binder);
if (service == NULL) {
return NULL;
}
crypto = service->makeCrypto();
}
sp<ICrypto> crypto = service->makeCrypto();
if (crypto == NULL || (crypto->initCheck() != OK && crypto->initCheck() != NO_INIT)) {
return NULL;
}

View File

@@ -28,7 +28,9 @@
#include <binder/IServiceManager.h>
#include <binder/Parcel.h>
#include <cutils/properties.h>
#include <media/IDrm.h>
#include <media/IMediaDrmService.h>
#include <media/IMediaPlayerService.h>
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/MediaErrors.h>
@@ -352,19 +354,30 @@ JDrm::~JDrm() {
// static
sp<IDrm> JDrm::MakeDrm() {
sp<IServiceManager> sm = defaultServiceManager();
sp<IDrm> drm;
sp<IBinder> binder =
sm->getService(String16("media.player"));
sp<IMediaPlayerService> service =
interface_cast<IMediaPlayerService>(binder);
if (service == NULL) {
return NULL;
char value[PROPERTY_VALUE_MAX];
if (property_get("media.mediadrmservice.enable", value, NULL)
&& (!strcmp("1", value) || !strcasecmp("true", value))) {
sp<IBinder> binder =
sm->getService(String16("media.drm"));
sp<IMediaDrmService> service =
interface_cast<IMediaDrmService>(binder);
if (service == NULL) {
return NULL;
}
drm = service->makeDrm();
} else {
sp<IBinder> binder =
sm->getService(String16("media.player"));
sp<IMediaPlayerService> service =
interface_cast<IMediaPlayerService>(binder);
if (service == NULL) {
return NULL;
}
drm = service->makeDrm();
}
sp<IDrm> drm = service->makeDrm();
if (drm == NULL || (drm->initCheck() != OK && drm->initCheck() != NO_INIT)) {
return NULL;
}