Loading media/ndk/NdkMediaExtractor.cpp +21 −4 Original line number Diff line number Diff line Loading @@ -84,8 +84,17 @@ media_status_t AMediaExtractor_setDataSourceFd(AMediaExtractor *mData, int fd, o EXPORT media_status_t AMediaExtractor_setDataSource(AMediaExtractor *mData, const char *location) { ALOGV("setDataSource(%s)", location); // TODO: add header support return AMediaExtractor_setDataSourceWithHeaders(mData, location, 0, NULL, NULL); } EXPORT media_status_t AMediaExtractor_setDataSourceWithHeaders(AMediaExtractor *mData, const char *uri, int numheaders, const char * const *keys, const char * const *values) { ALOGV("setDataSource(%s)", uri); JNIEnv *env = AndroidRuntime::getJNIEnv(); jobject service = NULL; Loading @@ -109,7 +118,7 @@ media_status_t AMediaExtractor_setDataSource(AMediaExtractor *mData, const char return AMEDIA_ERROR_UNSUPPORTED; } jstring jloc = env->NewStringUTF(location); jstring jloc = env->NewStringUTF(uri); service = env->CallStaticObjectMethod(mediahttpclass, mediaHttpCreateMethod, jloc); env->DeleteLocalRef(jloc); Loading @@ -120,7 +129,15 @@ media_status_t AMediaExtractor_setDataSource(AMediaExtractor *mData, const char httpService = interface_cast<IMediaHTTPService>(binder); } status_t err = mData->mImpl->setDataSource(httpService, location, NULL); KeyedVector<String8, String8> headers; for (int i = 0; i < numheaders; ++i) { String8 key8(keys[i]); String8 value8(values[i]); headers.add(key8, value8); } status_t err; err = mData->mImpl->setDataSource(httpService, uri, numheaders > 0 ? &headers : NULL); env->ExceptionClear(); return translate_error(err); } Loading media/ndk/include/media/NdkMediaExtractor.h +21 −1 Original line number Diff line number Diff line Loading @@ -72,7 +72,27 @@ media_status_t AMediaExtractor_setDataSourceFd(AMediaExtractor*, int fd, off64_t */ media_status_t AMediaExtractor_setDataSource(AMediaExtractor*, const char *location) __INTRODUCED_IN(21); // TODO support headers #if __ANDROID_API__ >= 29 /** * Set the |uri| from which the extractor will read, * plus additional http headers when initiating the request. * * Headers will contain corresponding items from |keys| & |values| * from indices 0 (inclusive) to numheaders-1 (inclusive): * * keys[0]:values[0] * ... * keys[numheaders - 1]:values[numheaders - 1] * */ media_status_t AMediaExtractor_setDataSourceWithHeaders(AMediaExtractor*, const char *uri, int numheaders, const char * const *keys, const char * const *values) __INTRODUCED_IN(29); #endif /* __ANDROID_API__ >= 29 */ #if __ANDROID_API__ >= 28 Loading media/ndk/libmediandk.map.txt +1 −0 Original line number Diff line number Diff line Loading @@ -184,6 +184,7 @@ LIBMEDIANDK { AMediaExtractor_setDataSource; AMediaExtractor_setDataSourceCustom; # introduced=28 AMediaExtractor_setDataSourceFd; AMediaExtractor_setDataSourceWithHeaders; # introduced=29 AMediaExtractor_unselectTrack; AMediaFormat_clear; # introduced=29 AMediaFormat_copy; # introduced=29 Loading Loading
media/ndk/NdkMediaExtractor.cpp +21 −4 Original line number Diff line number Diff line Loading @@ -84,8 +84,17 @@ media_status_t AMediaExtractor_setDataSourceFd(AMediaExtractor *mData, int fd, o EXPORT media_status_t AMediaExtractor_setDataSource(AMediaExtractor *mData, const char *location) { ALOGV("setDataSource(%s)", location); // TODO: add header support return AMediaExtractor_setDataSourceWithHeaders(mData, location, 0, NULL, NULL); } EXPORT media_status_t AMediaExtractor_setDataSourceWithHeaders(AMediaExtractor *mData, const char *uri, int numheaders, const char * const *keys, const char * const *values) { ALOGV("setDataSource(%s)", uri); JNIEnv *env = AndroidRuntime::getJNIEnv(); jobject service = NULL; Loading @@ -109,7 +118,7 @@ media_status_t AMediaExtractor_setDataSource(AMediaExtractor *mData, const char return AMEDIA_ERROR_UNSUPPORTED; } jstring jloc = env->NewStringUTF(location); jstring jloc = env->NewStringUTF(uri); service = env->CallStaticObjectMethod(mediahttpclass, mediaHttpCreateMethod, jloc); env->DeleteLocalRef(jloc); Loading @@ -120,7 +129,15 @@ media_status_t AMediaExtractor_setDataSource(AMediaExtractor *mData, const char httpService = interface_cast<IMediaHTTPService>(binder); } status_t err = mData->mImpl->setDataSource(httpService, location, NULL); KeyedVector<String8, String8> headers; for (int i = 0; i < numheaders; ++i) { String8 key8(keys[i]); String8 value8(values[i]); headers.add(key8, value8); } status_t err; err = mData->mImpl->setDataSource(httpService, uri, numheaders > 0 ? &headers : NULL); env->ExceptionClear(); return translate_error(err); } Loading
media/ndk/include/media/NdkMediaExtractor.h +21 −1 Original line number Diff line number Diff line Loading @@ -72,7 +72,27 @@ media_status_t AMediaExtractor_setDataSourceFd(AMediaExtractor*, int fd, off64_t */ media_status_t AMediaExtractor_setDataSource(AMediaExtractor*, const char *location) __INTRODUCED_IN(21); // TODO support headers #if __ANDROID_API__ >= 29 /** * Set the |uri| from which the extractor will read, * plus additional http headers when initiating the request. * * Headers will contain corresponding items from |keys| & |values| * from indices 0 (inclusive) to numheaders-1 (inclusive): * * keys[0]:values[0] * ... * keys[numheaders - 1]:values[numheaders - 1] * */ media_status_t AMediaExtractor_setDataSourceWithHeaders(AMediaExtractor*, const char *uri, int numheaders, const char * const *keys, const char * const *values) __INTRODUCED_IN(29); #endif /* __ANDROID_API__ >= 29 */ #if __ANDROID_API__ >= 28 Loading
media/ndk/libmediandk.map.txt +1 −0 Original line number Diff line number Diff line Loading @@ -184,6 +184,7 @@ LIBMEDIANDK { AMediaExtractor_setDataSource; AMediaExtractor_setDataSourceCustom; # introduced=28 AMediaExtractor_setDataSourceFd; AMediaExtractor_setDataSourceWithHeaders; # introduced=29 AMediaExtractor_unselectTrack; AMediaFormat_clear; # introduced=29 AMediaFormat_copy; # introduced=29 Loading