Merge "Fix tuner JNI breakage due to recent changes" into rvc-dev am: 92b1b302a9
Change-Id: Ic83f9ac032f1394639674dbfc480d0081aa82300
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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[] = {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user