Modular DRM for MediaPlayer
Bug: 34559906
Test: Manual through the test app
Change-Id: I286f9ff199c34563b7b8643de725f8d1534ea06c
diff --git a/include/media/IMediaPlayer.h b/include/media/IMediaPlayer.h
index a4cc152..e5a98dd 100644
--- a/include/media/IMediaPlayer.h
+++ b/include/media/IMediaPlayer.h
@@ -24,7 +24,6 @@
#include <system/audio.h>
#include <media/IMediaSource.h>
-#include <media/drm/DrmAPI.h> // for DrmPlugin::* enum
#include <media/VolumeShaper.h>
// Fwd decl to make sure everyone agrees that the scope of struct sockaddr_in is
@@ -97,22 +96,10 @@
const sp<VolumeShaper::Operation>& operation) = 0;
virtual sp<VolumeShaper::State> getVolumeShaperState(int id) = 0;
- // ModDrm
- virtual status_t prepareDrm(const uint8_t uuid[16], const int mode) = 0;
+ // Modular DRM
+ virtual status_t prepareDrm(const uint8_t uuid[16],
+ const Vector<uint8_t>& drmSessionId) = 0;
virtual status_t releaseDrm() = 0;
- virtual status_t getKeyRequest(Vector<uint8_t> const& scope,
- String8 const &mimeType,
- DrmPlugin::KeyType keyType,
- KeyedVector<String8, String8>& optionalParameters,
- Vector<uint8_t>& request,
- String8& defaultUrl,
- DrmPlugin::KeyRequestType& keyRequestType) = 0;
- virtual status_t provideKeyResponse(Vector<uint8_t>& releaseKeySetId,
- Vector<uint8_t>& response,
- Vector<uint8_t>& keySetId) = 0;
- virtual status_t restoreKeys(Vector<uint8_t> const& keySetId) = 0;
- virtual status_t getDrmPropertyString(String8 const& name, String8& value) = 0;
- virtual status_t setDrmPropertyString(String8 const& name, String8 const& value) = 0;
// Invoke a generic method on the player by using opaque parcels
// for the request and reply.
diff --git a/include/media/MediaPlayerInterface.h b/include/media/MediaPlayerInterface.h
index b3e53fc..a01f7f2 100644
--- a/include/media/MediaPlayerInterface.h
+++ b/include/media/MediaPlayerInterface.h
@@ -285,33 +285,13 @@
return INVALID_OPERATION;
}
- // ModDrm
- virtual status_t prepareDrm(const uint8_t uuid[16], const int mode) {
+ // Modular DRM
+ virtual status_t prepareDrm(const uint8_t uuid[16], const Vector<uint8_t>& drmSessionId) {
return INVALID_OPERATION;
}
virtual status_t releaseDrm() {
return INVALID_OPERATION;
}
- virtual status_t getKeyRequest(Vector<uint8_t> const& scope, String8 const& mimeType,
- DrmPlugin::KeyType keyType,
- KeyedVector<String8, String8>& optionalParameters,
- Vector<uint8_t>& request, String8& defaultUrl,
- DrmPlugin::KeyRequestType& keyRequestType) {
- return INVALID_OPERATION;
- }
- virtual status_t provideKeyResponse(Vector<uint8_t>& releaseKeySetId,
- Vector<uint8_t>& response, Vector<uint8_t>& keySetId) {
- return INVALID_OPERATION;
- }
- virtual status_t restoreKeys(Vector<uint8_t> const& keySetId) {
- return INVALID_OPERATION;
- }
- virtual status_t getDrmPropertyString(String8 const& name, String8& value) {
- return INVALID_OPERATION;
- }
- virtual status_t setDrmPropertyString(String8 const& name, String8 const& value) {
- return INVALID_OPERATION;
- }
private:
friend class MediaPlayerService;
diff --git a/include/media/mediaplayer.h b/include/media/mediaplayer.h
index fbe3926..18d69a7 100644
--- a/include/media/mediaplayer.h
+++ b/include/media/mediaplayer.h
@@ -266,19 +266,9 @@
const sp<VolumeShaper::Configuration>& configuration,
const sp<VolumeShaper::Operation>& operation);
sp<VolumeShaper::State> getVolumeShaperState(int id);
- // ModDrm
- status_t prepareDrm(const uint8_t uuid[16], const int mode);
+ // Modular DRM
+ status_t prepareDrm(const uint8_t uuid[16], const Vector<uint8_t>& drmSessionId);
status_t releaseDrm();
- status_t getKeyRequest(Vector<uint8_t> const& scope, String8 const& mimeType,
- DrmPlugin::KeyType keyType,
- KeyedVector<String8, String8>& optionalParameters,
- Vector<uint8_t>& request, String8& defaultUrl,
- DrmPlugin::KeyRequestType& keyRequestType);
- status_t provideKeyResponse(Vector<uint8_t>& releaseKeySetId,
- Vector<uint8_t>& response, Vector<uint8_t>& keySetId);
- status_t restoreKeys(Vector<uint8_t> const& keySetId);
- status_t getDrmPropertyString(String8 const& name, String8& value);
- status_t setDrmPropertyString(String8 const& name, String8 const& value);
private:
void clear_l();
diff --git a/include/media/stagefright/MediaCodec.h b/include/media/stagefright/MediaCodec.h
index 699ae48..20b26e2 100644
--- a/include/media/stagefright/MediaCodec.h
+++ b/include/media/stagefright/MediaCodec.h
@@ -91,6 +91,8 @@
const sp<ICrypto> &crypto,
uint32_t flags);
+ status_t releaseCrypto();
+
status_t setCallback(const sp<AMessage> &callback);
status_t setOnFrameRenderedNotification(const sp<AMessage> ¬ify);
@@ -239,6 +241,7 @@
kWhatSetParameters = 'setP',
kWhatSetCallback = 'setC',
kWhatSetNotification = 'setN',
+ kWhatDrmReleaseCrypto = 'rDrm',
};
enum {
@@ -416,6 +419,8 @@
mStickyError = err;
}
+ void onReleaseCrypto(const sp<AMessage>& msg);
+
DISALLOW_EVIL_CONSTRUCTORS(MediaCodec);
};