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

Commit af019e9c authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix tuner JNI breakage due to recent changes" into rvc-dev am: 92b1b302

Change-Id: Ic83f9ac032f1394639674dbfc480d0081aa82300
parents f5acb002 92b1b302
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -394,7 +394,7 @@ public class Tuner implements AutoCloseable {
    private native Lnb nativeOpenLnbByName(String name);
    private native Lnb nativeOpenLnbByName(String name);


    private native Descrambler nativeOpenDescramblerByHandle(int handle);
    private native Descrambler nativeOpenDescramblerByHandle(int handle);
    private native Descrambler nativeOpenDemuxByhandle(int handle);
    private native int nativeOpenDemuxByhandle(int handle);


    private native DvrRecorder nativeOpenDvrRecorder(long bufferSize);
    private native DvrRecorder nativeOpenDvrRecorder(long bufferSize);
    private native DvrPlayback nativeOpenDvrPlayback(long bufferSize);
    private native DvrPlayback nativeOpenDvrPlayback(long bufferSize);
@@ -985,7 +985,7 @@ public class Tuner implements AutoCloseable {
        boolean granted = mTunerResourceManager.requestDescrambler(request, descramblerHandle);
        boolean granted = mTunerResourceManager.requestDescrambler(request, descramblerHandle);
        if (granted) {
        if (granted) {
            mDescramblerHandle = descramblerHandle[0];
            mDescramblerHandle = descramblerHandle[0];
            nativeOpenDescramblerByHandle(mDescramblerHandle);
            mDescrambler = nativeOpenDescramblerByHandle(mDescramblerHandle);
        }
        }
        return granted;
        return granted;
    }
    }
+56 −21
Original line number Original line Diff line number Diff line
@@ -880,10 +880,12 @@ jobject JTuner::getFrontendIds() {


jobject JTuner::openFrontendById(int id) {
jobject JTuner::openFrontendById(int id) {
    sp<IFrontend> fe;
    sp<IFrontend> fe;
    mTuner->openFrontendById(id, [&](Result, const sp<IFrontend>& frontend) {
    Result res;
    mTuner->openFrontendById(id, [&](Result r, const sp<IFrontend>& frontend) {
        fe = frontend;
        fe = frontend;
        res = r;
    });
    });
    if (fe == nullptr) {
    if (res != Result::SUCCESS || fe == nullptr) {
        ALOGE("Failed to open frontend");
        ALOGE("Failed to open frontend");
        return NULL;
        return NULL;
    }
    }
@@ -906,7 +908,7 @@ jobject JTuner::openFrontendById(int id) {
            (jint) jId);
            (jint) jId);
}
}


jobject JTuner::getAnalogFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps) {
jobject JTuner::getAnalogFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps) {
    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/AnalogFrontendCapabilities");
    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/AnalogFrontendCapabilities");
    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(II)V");
    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(II)V");


@@ -915,7 +917,7 @@ jobject JTuner::getAnalogFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabil
    return env->NewObject(clazz, capsInit, typeCap, sifStandardCap);
    return env->NewObject(clazz, capsInit, typeCap, sifStandardCap);
}
}


jobject JTuner::getAtsc3FrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps) {
jobject JTuner::getAtsc3FrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps) {
    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/Atsc3FrontendCapabilities");
    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/Atsc3FrontendCapabilities");
    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(IIIIII)V");
    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(IIIIII)V");


@@ -930,7 +932,7 @@ jobject JTuner::getAtsc3FrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabili
            codeRateCap, fecCap, demodOutputFormatCap);
            codeRateCap, fecCap, demodOutputFormatCap);
}
}


jobject JTuner::getAtscFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps) {
jobject JTuner::getAtscFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps) {
    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/AtscFrontendCapabilities");
    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/AtscFrontendCapabilities");
    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(I)V");
    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(I)V");


@@ -939,7 +941,7 @@ jobject JTuner::getAtscFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilit
    return env->NewObject(clazz, capsInit, modulationCap);
    return env->NewObject(clazz, capsInit, modulationCap);
}
}


jobject JTuner::getDvbcFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps) {
jobject JTuner::getDvbcFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps) {
    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/DvbcFrontendCapabilities");
    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/DvbcFrontendCapabilities");
    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(III)V");
    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(III)V");


@@ -950,7 +952,7 @@ jobject JTuner::getDvbcFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilit
    return env->NewObject(clazz, capsInit, modulationCap, fecCap, annexCap);
    return env->NewObject(clazz, capsInit, modulationCap, fecCap, annexCap);
}
}


jobject JTuner::getDvbsFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps) {
jobject JTuner::getDvbsFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps) {
    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/DvbsFrontendCapabilities");
    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/DvbsFrontendCapabilities");
    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(IJI)V");
    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(IJI)V");


@@ -961,7 +963,7 @@ jobject JTuner::getDvbsFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilit
    return env->NewObject(clazz, capsInit, modulationCap, innerfecCap, standard);
    return env->NewObject(clazz, capsInit, modulationCap, innerfecCap, standard);
}
}


jobject JTuner::getDvbtFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps) {
jobject JTuner::getDvbtFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps) {
    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/DvbtFrontendCapabilities");
    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/DvbtFrontendCapabilities");
    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(IIIIIIZZ)V");
    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(IIIIIIZZ)V");


@@ -978,7 +980,7 @@ jobject JTuner::getDvbtFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilit
            coderateCap, hierarchyCap, guardIntervalCap, isT2Supported, isMisoSupported);
            coderateCap, hierarchyCap, guardIntervalCap, isT2Supported, isMisoSupported);
}
}


jobject JTuner::getIsdbs3FrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps) {
jobject JTuner::getIsdbs3FrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps) {
    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/Isdbs3FrontendCapabilities");
    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/Isdbs3FrontendCapabilities");
    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(II)V");
    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(II)V");


@@ -988,7 +990,7 @@ jobject JTuner::getIsdbs3FrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabil
    return env->NewObject(clazz, capsInit, modulationCap, coderateCap);
    return env->NewObject(clazz, capsInit, modulationCap, coderateCap);
}
}


jobject JTuner::getIsdbsFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps) {
jobject JTuner::getIsdbsFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps) {
    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/IsdbsFrontendCapabilities");
    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/IsdbsFrontendCapabilities");
    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(II)V");
    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(II)V");


@@ -998,7 +1000,7 @@ jobject JTuner::getIsdbsFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabili
    return env->NewObject(clazz, capsInit, modulationCap, coderateCap);
    return env->NewObject(clazz, capsInit, modulationCap, coderateCap);
}
}


jobject JTuner::getIsdbtFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps) {
jobject JTuner::getIsdbtFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps) {
    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/IsdbtFrontendCapabilities");
    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/IsdbtFrontendCapabilities");
    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(IIIII)V");
    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(IIIII)V");


@@ -1044,31 +1046,58 @@ jobject JTuner::getFrontendInfo(int id) {
    jobject jcaps = NULL;
    jobject jcaps = NULL;
    switch(feInfo.type) {
    switch(feInfo.type) {
        case FrontendType::ANALOG:
        case FrontendType::ANALOG:
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::analogCaps
                    == caps.getDiscriminator()) {
                jcaps = getAnalogFrontendCaps(env, caps);
                jcaps = getAnalogFrontendCaps(env, caps);
            }
            break;
            break;
        case FrontendType::ATSC3:
        case FrontendType::ATSC3:
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::atsc3Caps
                    == caps.getDiscriminator()) {
                jcaps = getAtsc3FrontendCaps(env, caps);
                jcaps = getAtsc3FrontendCaps(env, caps);
            }
            break;
            break;
        case FrontendType::ATSC:
        case FrontendType::ATSC:
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::atscCaps
                    == caps.getDiscriminator()) {
                jcaps = getAtscFrontendCaps(env, caps);
                jcaps = getAtscFrontendCaps(env, caps);
            }
            break;
            break;
        case FrontendType::DVBC:
        case FrontendType::DVBC:
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::dvbcCaps
                    == caps.getDiscriminator()) {
                jcaps = getDvbcFrontendCaps(env, caps);
                jcaps = getDvbcFrontendCaps(env, caps);
            }
            break;
            break;
        case FrontendType::DVBS:
        case FrontendType::DVBS:
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::dvbsCaps
                    == caps.getDiscriminator()) {
                jcaps = getDvbsFrontendCaps(env, caps);
                jcaps = getDvbsFrontendCaps(env, caps);
            }
            break;
            break;
        case FrontendType::DVBT:
        case FrontendType::DVBT:
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::dvbtCaps
                    == caps.getDiscriminator()) {
                jcaps = getDvbtFrontendCaps(env, caps);
                jcaps = getDvbtFrontendCaps(env, caps);
            }
            break;
            break;
        case FrontendType::ISDBS:
        case FrontendType::ISDBS:
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::isdbsCaps
                    == caps.getDiscriminator()) {
                jcaps = getIsdbsFrontendCaps(env, caps);
                jcaps = getIsdbsFrontendCaps(env, caps);
            }
            break;
            break;
        case FrontendType::ISDBS3:
        case FrontendType::ISDBS3:
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::isdbs3Caps
                    == caps.getDiscriminator()) {
                jcaps = getIsdbs3FrontendCaps(env, caps);
                jcaps = getIsdbs3FrontendCaps(env, caps);
            }
            break;
            break;
        case FrontendType::ISDBT:
        case FrontendType::ISDBT:
            if (FrontendInfo::FrontendCapabilities::hidl_discriminator::isdbtCaps
                    == caps.getDiscriminator()) {
                jcaps = getIsdbtFrontendCaps(env, caps);
                jcaps = getIsdbtFrontendCaps(env, caps);
            }
            break;
            break;
        default:
        default:
            break;
            break;
@@ -2308,7 +2337,7 @@ static void android_media_tv_Tuner_native_init(JNIEnv *env) {
    gFields.dvrPlaybackContext = env->GetFieldID(dvrPlaybackClazz, "mNativeContext", "J");
    gFields.dvrPlaybackContext = env->GetFieldID(dvrPlaybackClazz, "mNativeContext", "J");
    gFields.dvrPlaybackInitID = env->GetMethodID(dvrPlaybackClazz, "<init>", "()V");
    gFields.dvrPlaybackInitID = env->GetMethodID(dvrPlaybackClazz, "<init>", "()V");
    gFields.onDvrPlaybackStatusID =
    gFields.onDvrPlaybackStatusID =
            env->GetMethodID(dvrRecorderClazz, "onPlaybackStatusChanged", "(I)V");
            env->GetMethodID(dvrPlaybackClazz, "onPlaybackStatusChanged", "(I)V");


    jclass linearBlockClazz = env->FindClass("android/media/MediaCodec$LinearBlock");
    jclass linearBlockClazz = env->FindClass("android/media/MediaCodec$LinearBlock");
    gFields.linearBlockInitID = env->GetMethodID(linearBlockClazz, "<init>", "()V");
    gFields.linearBlockInitID = env->GetMethodID(linearBlockClazz, "<init>", "()V");
@@ -3101,6 +3130,11 @@ static jobject android_media_tv_Tuner_get_demux_caps(JNIEnv* env, jobject thiz)
    return tuner->getDemuxCaps();
    return tuner->getDemuxCaps();
}
}


static jint android_media_tv_Tuner_open_demux(JNIEnv* env, jobject thiz, jint /* handle */) {
    sp<JTuner> tuner = getTuner(env, thiz);
    return (jint) tuner->openDemux();
}

static jint android_media_tv_Tuner_attach_filter(JNIEnv *env, jobject dvr, jobject filter) {
static jint android_media_tv_Tuner_attach_filter(JNIEnv *env, jobject dvr, jobject filter) {
    sp<Dvr> dvrSp = getDvr(env, dvr);
    sp<Dvr> dvrSp = getDvr(env, dvr);
    if (dvrSp == NULL) {
    if (dvrSp == NULL) {
@@ -3425,6 +3459,7 @@ static const JNINativeMethod gTunerMethods[] = {
            (void *)android_media_tv_Tuner_open_dvr_playback },
            (void *)android_media_tv_Tuner_open_dvr_playback },
    { "nativeGetDemuxCapabilities", "()Landroid/media/tv/tuner/DemuxCapabilities;",
    { "nativeGetDemuxCapabilities", "()Landroid/media/tv/tuner/DemuxCapabilities;",
            (void *)android_media_tv_Tuner_get_demux_caps },
            (void *)android_media_tv_Tuner_get_demux_caps },
    { "nativeOpenDemuxByhandle", "(I)I", (void *)android_media_tv_Tuner_open_demux },
};
};


static const JNINativeMethod gFilterMethods[] = {
static const JNINativeMethod gFilterMethods[] = {
+10 −10
Original line number Original line Diff line number Diff line
@@ -188,9 +188,9 @@ struct JTuner : public RefBase {
    jobject openDvr(DvrType type, jlong bufferSize);
    jobject openDvr(DvrType type, jlong bufferSize);
    jobject getDemuxCaps();
    jobject getDemuxCaps();
    jobject getFrontendStatus(jintArray types);
    jobject getFrontendStatus(jintArray types);
    Result openDemux();


protected:
protected:
    Result openDemux();
    virtual ~JTuner();
    virtual ~JTuner();


private:
private:
@@ -204,15 +204,15 @@ private:
    sp<ILnb> mLnb;
    sp<ILnb> mLnb;
    sp<IDemux> mDemux;
    sp<IDemux> mDemux;
    uint32_t mDemuxId;
    uint32_t mDemuxId;
    static jobject getAnalogFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps);
    static jobject getAnalogFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps);
    static jobject getAtsc3FrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps);
    static jobject getAtsc3FrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps);
    static jobject getAtscFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps);
    static jobject getAtscFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps);
    static jobject getDvbcFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps);
    static jobject getDvbcFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps);
    static jobject getDvbsFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps);
    static jobject getDvbsFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps);
    static jobject getDvbtFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps);
    static jobject getDvbtFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps);
    static jobject getIsdbs3FrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps);
    static jobject getIsdbs3FrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps);
    static jobject getIsdbsFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps);
    static jobject getIsdbsFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps);
    static jobject getIsdbtFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps);
    static jobject getIsdbtFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps);
};
};


}  // namespace android
}  // namespace android