Skip to content
This repository was archived by the owner on Oct 8, 2024. It is now read-only.

Commit 3e64e7b

Browse files
committed
An API for switching DRM master
Add an API in binder for dropping and setting DRM master Test: Compile sucessful for Android. Change-Id: Iad5df43ad26e9d063aac339e79394b4f00e8431d Tracked-On: None Signed-off-by: Shaofeng Tang <[email protected]>
1 parent 130d65a commit 3e64e7b

File tree

8 files changed

+45
-0
lines changed

8 files changed

+45
-0
lines changed

os/android/hwcservice.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,10 @@ bool HwcService::Controls::EnableDRMCommit(bool enable, uint32_t display_id) {
409409
return mHwc.EnableDRMCommit(enable, display_id);
410410
}
411411

412+
bool HwcService::Controls::ResetDrmMaster(bool drop_master) {
413+
return mHwc.ResetDrmMaster(drop_master);
414+
}
415+
412416
status_t HwcService::Controls::VideoEnableEncryptedSession(
413417
uint32_t sessionID, uint32_t instanceID) {
414418
mHwc.SetPAVPSessionStatus(true, sessionID, instanceID);

os/android/hwcservice.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ class HwcService : public BnService {
108108
uint32_t SRMLength);
109109
uint32_t GetDisplayIDFromConnectorID(uint32_t connector_id);
110110
bool EnableDRMCommit(bool enable, uint32_t display_id);
111+
bool ResetDrmMaster(bool drop_master);
111112
status_t VideoEnableEncryptedSession(uint32_t sessionID,
112113
uint32_t instanceID);
113114
status_t VideoDisableAllEncryptedSessions(uint32_t sessionID);

os/android/iahwc2.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1311,6 +1311,10 @@ bool IAHWC2::EnableDRMCommit(bool enable, uint32_t display_id) {
13111311
return device_.EnableDRMCommit(enable, display_id);
13121312
}
13131313

1314+
bool IAHWC2::ResetDrmMaster(bool drop_master) {
1315+
return device_.ResetDrmMaster(drop_master);
1316+
}
1317+
13141318
void IAHWC2::SetHDCPSRMForDisplay(uint32_t connector, const int8_t *SRM,
13151319
uint32_t SRMLength) {
13161320
if (SRM == NULL) {

os/android/iahwc2.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ class IAHWC2 : public hwc2_device_t {
7474

7575
bool EnableDRMCommit(bool enable, uint32_t display_id);
7676

77+
bool ResetDrmMaster(bool drop_master);
78+
7779
public:
7880
class Hwc2Layer {
7981
public:

os/android/libhwcservice/hwcserviceapi.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -315,6 +315,15 @@ status_t HwcService_EnableDRMCommit(HWCSHANDLE hwcs, uint32_t enable,
315315
return pContext->mControls->EnableDRMCommit(enable, display_id);
316316
}
317317

318+
status_t HwcService_ResetDrmMaster(HWCSHANDLE hwcs, uint32_t drop_master) {
319+
HwcsContext* pContext = static_cast<HwcsContext*>(hwcs);
320+
if (!pContext) {
321+
return android::BAD_VALUE;
322+
}
323+
324+
return pContext->mControls->ResetDrmMaster(drop_master);
325+
}
326+
318327
status_t HwcService_Video_DisableHDCPSession_AllDisplays(HWCSHANDLE hwcs) {
319328
HwcsContext* pContext = static_cast<HwcsContext*>(hwcs);
320329
if (!pContext) {

os/android/libhwcservice/hwcserviceapi.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,8 @@ uint32_t HwcService_GetDisplayIDFromConnectorID(HWCSHANDLE hwcs,
224224
status_t HwcService_EnableDRMCommit(HWCSHANDLE hwcs, uint32_t enable,
225225
uint32_t display_id);
226226

227+
status_t HwcService_ResetDrmMaster(HWCSHANDLE hwcs, uint32_t drop_master);
228+
227229
// The control enables a the protected video subsystem to control when to
228230
// replace any
229231
// encrypted content with a default bitmap (usually black).

os/android/libhwcservice/icontrols.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ class BpControls : public BpInterface<IControls> {
5858
TRANSACT_VIDEO_SET_HDCP_SRM_FOR_DISPLAY,
5959
TRANSACT_GET_DISPLAYID_FROM_CONNECTORID,
6060
TRANSACT_ENABLE_DRM_COMMIT,
61+
TRANSACT_RESET_DRM_MASTER,
6162
TRANSACT_VIDEO_ENABLE_ENCRYPTED_SESSION,
6263
TRANSACT_VIDEO_DISABLE_ENCRYPTED_SESSION,
6364
TRANSACT_VIDEO_DISABLE_ALL_ENCRYPTED_SESSIONS,
@@ -458,6 +459,19 @@ class BpControls : public BpInterface<IControls> {
458459
return (uint32_t)(reply.readInt32());
459460
}
460461

462+
bool ResetDrmMaster(bool drop_master) override {
463+
Parcel data;
464+
Parcel reply;
465+
data.writeInterfaceToken(IControls::getInterfaceDescriptor());
466+
data.writeInt32(drop_master);
467+
468+
status_t ret = remote()->transact(TRANSACT_RESET_DRM_MASTER, data, &reply);
469+
if (ret != NO_ERROR) {
470+
ALOGW("%s() transact failed: %d", __FUNCTION__, ret);
471+
}
472+
return (uint32_t)(reply.readInt32());
473+
}
474+
461475
status_t VideoEnableEncryptedSession(uint32_t sessionID,
462476
uint32_t instanceID) override {
463477
Parcel data;
@@ -801,6 +815,13 @@ status_t BnControls::onTransact(uint32_t code, const Parcel &data,
801815
reply->writeInt32(ret);
802816
return NO_ERROR;
803817
}
818+
case BpControls::TRANSACT_RESET_DRM_MASTER: {
819+
CHECK_INTERFACE(IControls, data, reply);
820+
bool drop_master = data.readInt32();
821+
bool ret = this->ResetDrmMaster(drop_master);
822+
reply->writeInt32(ret);
823+
return NO_ERROR;
824+
}
804825
case BpControls::TRANSACT_VIDEO_ENABLE_ENCRYPTED_SESSION: {
805826
CHECK_INTERFACE(IControls, data, reply);
806827
uint32_t sessionID = data.readInt32();

os/android/libhwcservice/icontrols.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ class IControls : public android::IInterface {
8181

8282
virtual bool EnableDRMCommit(bool enable, uint32_t display_id) = 0;
8383

84+
virtual bool ResetDrmMaster(bool drop_master) = 0;
85+
8486
virtual status_t VideoEnableEncryptedSession(uint32_t sessionID,
8587
uint32_t instanceID) = 0;
8688
virtual status_t VideoDisableAllEncryptedSessions(uint32_t sessionID) = 0;

0 commit comments

Comments
 (0)