Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a102c75e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "MediaMuxerJNI:Throw relevant exception on error"

parents 6f28d5e6 1ec633db
Loading
Loading
Loading
Loading
+29 −4
Original line number Diff line number Diff line
@@ -26,11 +26,15 @@
#include <unistd.h>
#include <fcntl.h>

#include <android/api-level.h>
#include <media/stagefright/foundation/ABuffer.h>
#include <media/stagefright/foundation/ADebug.h>
#include <media/stagefright/foundation/AMessage.h>
#include <media/stagefright/MediaErrors.h>
#include <media/stagefright/MediaMuxer.h>

extern "C" int android_get_application_target_sdk_version();

namespace android {

struct fields_t {
@@ -229,12 +233,33 @@ static void android_media_MediaMuxer_stop(JNIEnv *env, jclass /* clazz */,

    status_t err = muxer->stop();

    if (err != OK) {
    if (android_get_application_target_sdk_version() >= __ANDROID_API_R__) {
        switch (err) {
            case OK:
                break;
            case ERROR_IO: {
                jniThrowException(env, "java/lang/UncheckedIOException",
                                  "Muxer stopped unexpectedly");
                return;
            }
            case ERROR_MALFORMED: {
                jniThrowException(env, "java/io/IOError",
                                  "Failure of reading or writing operation");
                return;
            }
            default: {
                jniThrowException(env, "java/lang/IllegalStateException",
                                  "Failed to stop the muxer");
                return;
            }
        }
    } else {
        if (err != OK) {
            jniThrowException(env, "java/lang/IllegalStateException", "Failed to stop the muxer");
            return;
        }
    }
}

static void android_media_MediaMuxer_native_release(
        JNIEnv* /* env */, jclass clazz, jlong nativeObject) {