MediaCas: add MediaCasService
This CL adds API only without implementation.
bug: 22804304
Change-Id: Ibb5a29cc616ec0af81957b2bfe1419c482591753
diff --git a/media/libmedia/Android.mk b/media/libmedia/Android.mk
index 6c6c369..eac532b 100644
--- a/media/libmedia/Android.mk
+++ b/media/libmedia/Android.mk
@@ -60,10 +60,10 @@
libui liblog libcutils libutils libbinder libsonivox libicuuc libicui18n libexpat \
libcamera_client libstagefright_foundation \
libgui libdl libaudioutils libaudioclient \
- libmedia_helper \
+ libmedia_helper libmediadrm \
libhidlbase \
-LOCAL_EXPORT_SHARED_LIBRARY_HEADERS := libbinder libsonivox
+LOCAL_EXPORT_SHARED_LIBRARY_HEADERS := libbinder libsonivox libmediadrm
# for memory heap analysis
LOCAL_STATIC_LIBRARIES := libc_malloc_debug_backtrace libc_logging
diff --git a/media/libmedia/IMediaExtractor.cpp b/media/libmedia/IMediaExtractor.cpp
index bfc43a6..f08fabb 100644
--- a/media/libmedia/IMediaExtractor.cpp
+++ b/media/libmedia/IMediaExtractor.cpp
@@ -21,6 +21,7 @@
#include <stdint.h>
#include <sys/types.h>
+#include <android/media/ICas.h>
#include <binder/IPCThreadState.h>
#include <binder/Parcel.h>
#include <media/IMediaExtractor.h>
@@ -35,6 +36,7 @@
GETMETADATA,
FLAGS,
GETDRMTRACKINFO,
+ SETMEDIACAS,
SETUID,
NAME,
GETMETRICS
@@ -114,6 +116,21 @@
ALOGV("getDrmTrackInfo NOT IMPLEMENTED");
return NULL;
}
+
+ virtual status_t setMediaCas(const sp<ICas> & cas) {
+ ALOGV("setMediaCas");
+
+ Parcel data, reply;
+ data.writeInterfaceToken(BpMediaExtractor::getInterfaceDescriptor());
+ data.writeStrongBinder(IInterface::asBinder(cas));
+
+ status_t err = remote()->transact(SETMEDIACAS, data, &reply);
+ if (err != NO_ERROR) {
+ return err;
+ }
+ return reply.readInt32();
+ }
+
virtual void setUID(uid_t uid __unused) {
ALOGV("setUID NOT IMPLEMENTED");
}
@@ -185,6 +202,21 @@
status_t ret = getMetrics(reply);
return ret;
}
+ case SETMEDIACAS: {
+ ALOGV("setMediaCas");
+ CHECK_INTERFACE(IMediaExtractor, data, reply);
+
+ sp<IBinder> casBinder;
+ status_t err = data.readNullableStrongBinder(&casBinder);
+ if (err != NO_ERROR) {
+ ALOGE("Error reading cas from parcel");
+ return err;
+ }
+ sp<ICas> cas = interface_cast<ICas>(casBinder);
+
+ reply->writeInt32(setMediaCas(cas));
+ return OK;
+ }
default:
return BBinder::onTransact(code, data, reply, flags);
}
diff --git a/media/libmedia/MediaDefs.cpp b/media/libmedia/MediaDefs.cpp
index 2ae71f7..544a6ae 100644
--- a/media/libmedia/MediaDefs.cpp
+++ b/media/libmedia/MediaDefs.cpp
@@ -29,6 +29,7 @@
const char *MEDIA_MIMETYPE_VIDEO_MPEG2 = "video/mpeg2";
const char *MEDIA_MIMETYPE_VIDEO_RAW = "video/raw";
const char *MEDIA_MIMETYPE_VIDEO_DOLBY_VISION = "video/dolby-vision";
+const char *MEDIA_MIMETYPE_VIDEO_SCRAMBLED = "video/scrambled";
const char *MEDIA_MIMETYPE_AUDIO_AMR_NB = "audio/3gpp";
const char *MEDIA_MIMETYPE_AUDIO_AMR_WB = "audio/amr-wb";
@@ -48,6 +49,7 @@
const char *MEDIA_MIMETYPE_AUDIO_MSGSM = "audio/gsm";
const char *MEDIA_MIMETYPE_AUDIO_AC3 = "audio/ac3";
const char *MEDIA_MIMETYPE_AUDIO_EAC3 = "audio/eac3";
+const char *MEDIA_MIMETYPE_AUDIO_SCRAMBLED = "audio/scrambled";
const char *MEDIA_MIMETYPE_CONTAINER_MPEG4 = "video/mp4";
const char *MEDIA_MIMETYPE_CONTAINER_WAV = "audio/x-wav";