FINAL ATTEMPT: HTTP services are now provided from JAVA and made available to media code
Change-Id: I7f6cdcfd2a28846d36d89dd5180ef20a22b03af8
diff --git a/media/jni/android_media_MediaExtractor.cpp b/media/jni/android_media_MediaExtractor.cpp
index 705de88..d3a8b22 100644
--- a/media/jni/android_media_MediaExtractor.cpp
+++ b/media/jni/android_media_MediaExtractor.cpp
@@ -26,6 +26,7 @@
#include "jni.h"
#include "JNIHelp.h"
+#include <media/IMediaHTTPService.h>
#include <media/hardware/CryptoAPI.h>
#include <media/stagefright/foundation/ABuffer.h>
#include <media/stagefright/foundation/ADebug.h>
@@ -35,6 +36,8 @@
#include <media/stagefright/MetaData.h>
#include <media/stagefright/NuMediaExtractor.h>
+#include "android_util_Binder.h"
+
namespace android {
struct fields_t {
@@ -135,8 +138,10 @@
}
status_t JMediaExtractor::setDataSource(
- const char *path, const KeyedVector<String8, String8> *headers) {
- return mImpl->setDataSource(path, headers);
+ const sp<IMediaHTTPService> &httpService,
+ const char *path,
+ const KeyedVector<String8, String8> *headers) {
+ return mImpl->setDataSource(httpService, path, headers);
}
status_t JMediaExtractor::setDataSource(int fd, off64_t offset, off64_t size) {
@@ -661,7 +666,10 @@
static void android_media_MediaExtractor_setDataSource(
JNIEnv *env, jobject thiz,
- jstring pathObj, jobjectArray keysArray, jobjectArray valuesArray) {
+ jobject httpServiceBinderObj,
+ jstring pathObj,
+ jobjectArray keysArray,
+ jobjectArray valuesArray) {
sp<JMediaExtractor> extractor = getMediaExtractor(env, thiz);
if (extractor == NULL) {
@@ -686,7 +694,13 @@
return;
}
- status_t err = extractor->setDataSource(path, &headers);
+ sp<IMediaHTTPService> httpService;
+ if (httpServiceBinderObj != NULL) {
+ sp<IBinder> binder = ibinderForJavaObject(env, httpServiceBinderObj);
+ httpService = interface_cast<IMediaHTTPService>(binder);
+ }
+
+ status_t err = extractor->setDataSource(httpService, path, &headers);
env->ReleaseStringUTFChars(pathObj, path);
path = NULL;
@@ -839,8 +853,9 @@
{ "native_finalize", "()V",
(void *)android_media_MediaExtractor_native_finalize },
- { "setDataSource", "(Ljava/lang/String;[Ljava/lang/String;"
- "[Ljava/lang/String;)V",
+ { "nativeSetDataSource",
+ "(Landroid/os/IBinder;Ljava/lang/String;[Ljava/lang/String;"
+ "[Ljava/lang/String;)V",
(void *)android_media_MediaExtractor_setDataSource },
{ "setDataSource", "(Ljava/io/FileDescriptor;JJ)V",