diff options
Diffstat (limited to 'media/jni/android_media_MediaExtractor.cpp')
-rw-r--r-- | media/jni/android_media_MediaExtractor.cpp | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/media/jni/android_media_MediaExtractor.cpp b/media/jni/android_media_MediaExtractor.cpp index 23949fa..1704d5c 100644 --- a/media/jni/android_media_MediaExtractor.cpp +++ b/media/jni/android_media_MediaExtractor.cpp @@ -162,6 +162,18 @@ status_t JMediaExtractor::getTrackFormat(size_t index, jobject *format) const { return ConvertMessageToMap(env, msg, format); } +status_t JMediaExtractor::getFileFormat(jobject *format) const { + sp<AMessage> msg; + status_t err; + if ((err = mImpl->getFileFormat(&msg)) != OK) { + return err; + } + + JNIEnv *env = AndroidRuntime::getJNIEnv(); + + return ConvertMessageToMap(env, msg, format); +} + status_t JMediaExtractor::selectTrack(size_t index) { return mImpl->selectTrack(index); } @@ -339,6 +351,26 @@ static jobject android_media_MediaExtractor_getTrackFormatNative( return format; } +static jobject android_media_MediaExtractor_getFileFormatNative( + JNIEnv *env, jobject thiz) { + sp<JMediaExtractor> extractor = getMediaExtractor(env, thiz); + + if (extractor == NULL) { + jniThrowException(env, "java/lang/IllegalStateException", NULL); + return NULL; + } + + jobject format; + status_t err = extractor->getFileFormat(&format); + + if (err != OK) { + jniThrowException(env, "java/lang/IllegalArgumentException", NULL); + return NULL; + } + + return format; +} + static void android_media_MediaExtractor_selectTrack( JNIEnv *env, jobject thiz, jint index) { sp<JMediaExtractor> extractor = getMediaExtractor(env, thiz); @@ -768,6 +800,9 @@ static JNINativeMethod gMethods[] = { { "getTrackCount", "()I", (void *)android_media_MediaExtractor_getTrackCount }, + { "getFileFormatNative", "()Ljava/util/Map;", + (void *)android_media_MediaExtractor_getFileFormatNative }, + { "getTrackFormatNative", "(I)Ljava/util/Map;", (void *)android_media_MediaExtractor_getTrackFormatNative }, |