Loading media/jni/android_media_tv_Tuner.cpp +114 −30 Original line number Diff line number Diff line Loading @@ -141,6 +141,14 @@ using ::android::hardware::tv::tuner::V1_1::FrontendDvbsScanType; using ::android::hardware::tv::tuner::V1_1::FrontendDvbcSettingsExt1_1; using ::android::hardware::tv::tuner::V1_1::FrontendDvbsSettingsExt1_1; using ::android::hardware::tv::tuner::V1_1::FrontendDvbtSettingsExt1_1; using ::android::hardware::tv::tuner::V1_1::FrontendDtmbBandwidth; using ::android::hardware::tv::tuner::V1_1::FrontendDtmbCapabilities; using ::android::hardware::tv::tuner::V1_1::FrontendDtmbCodeRate; using ::android::hardware::tv::tuner::V1_1::FrontendDtmbGuardInterval; using ::android::hardware::tv::tuner::V1_1::FrontendDtmbModulation; using ::android::hardware::tv::tuner::V1_1::FrontendDtmbSettings; using ::android::hardware::tv::tuner::V1_1::FrontendDtmbTimeInterleaveMode; using ::android::hardware::tv::tuner::V1_1::FrontendDtmbTransmissionMode; using ::android::hardware::tv::tuner::V1_1::FrontendSpectralInversion; struct fields_t { Loading Loading @@ -1208,6 +1216,33 @@ jobject JTuner::getIsdbtFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabili guardIntervalCap); } jobject JTuner::getDtmbFrontendCaps(JNIEnv *env, int id) { jclass clazz = env->FindClass("android/media/tv/tuner/frontend/DtmbFrontendCapabilities"); jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(IIIIII)V"); if (mTuner_1_1 == NULL) { ALOGD("1.1 Tuner is not found. Dtmb Frontend Caps are not supported."); return NULL; } Result result; FrontendDtmbCapabilities dtmbCaps; mTuner_1_1->getFrontendDtmbCapabilities(id, [&](Result r, const FrontendDtmbCapabilities& caps) { dtmbCaps = caps; result = r; }); jint modulationCap = dtmbCaps.modulationCap; jint transmissionModeCap = dtmbCaps.transmissionModeCap; jint guardIntervalCap = dtmbCaps.guardIntervalCap; jint interleaveModeCap = dtmbCaps.interleaveModeCap; jint codeRateCap = dtmbCaps.codeRateCap; jint bandwidthCap = dtmbCaps.bandwidthCap; return env->NewObject(clazz, capsInit, modulationCap, transmissionModeCap, guardIntervalCap, interleaveModeCap, codeRateCap, bandwidthCap); } jobject JTuner::getFrontendInfo(int id) { FrontendInfo feInfo; Result res; Loading Loading @@ -1238,6 +1273,15 @@ jobject JTuner::getFrontendInfo(int id) { FrontendInfo::FrontendCapabilities caps = feInfo.frontendCaps; jobject jcaps = NULL; if (feInfo.type == static_cast<FrontendType>( ::android::hardware::tv::tuner::V1_1::FrontendType::DTMB)) { if (mTuner_1_1 == NULL) { return NULL; } jcaps = getDtmbFrontendCaps(env, id); } switch(feInfo.type) { case FrontendType::ANALOG: if (FrontendInfo::FrontendCapabilities::hidl_discriminator::analogCaps Loading Loading @@ -2599,6 +2643,41 @@ static FrontendSettings getIsdbtFrontendSettings(JNIEnv *env, const jobject& set return frontendSettings; } static void getDtmbFrontendSettings(JNIEnv *env, const jobject& settings, FrontendSettingsExt1_1& settingsExt1_1) { uint32_t freq = getFrontendSettingsFreq(env, settings); jclass clazz = env->FindClass("android/media/tv/tuner/frontend/DtmbFrontendSettings"); FrontendDtmbModulation modulation = static_cast<FrontendDtmbModulation>( env->GetIntField(settings, env->GetFieldID(clazz, "mModulation", "I"))); FrontendDtmbBandwidth bandwidth = static_cast<FrontendDtmbBandwidth>( env->GetIntField(settings, env->GetFieldID(clazz, "mBandwidth", "I"))); FrontendDtmbTransmissionMode transmissionMode = static_cast<FrontendDtmbTransmissionMode>( env->GetIntField(settings, env->GetFieldID(clazz, "mTransmissionMode", "I"))); FrontendDtmbCodeRate codeRate = static_cast<FrontendDtmbCodeRate>( env->GetIntField(settings, env->GetFieldID(clazz, "mCodeRate", "I"))); FrontendDtmbGuardInterval guardInterval = static_cast<FrontendDtmbGuardInterval>( env->GetIntField(settings, env->GetFieldID(clazz, "mGuardInterval", "I"))); FrontendDtmbTimeInterleaveMode interleaveMode = static_cast<FrontendDtmbTimeInterleaveMode>( env->GetIntField(settings, env->GetFieldID(clazz, "mTimeInterleaveMode", "I"))); FrontendDtmbSettings frontendDtmbSettings { .frequency = freq, .modulation = modulation, .bandwidth = bandwidth, .transmissionMode = transmissionMode, .codeRate = codeRate, .guardInterval = guardInterval, .interleaveMode = interleaveMode, }; settingsExt1_1.settingExt.dtmb(frontendDtmbSettings); } static FrontendSettings getFrontendSettings(JNIEnv *env, int type, jobject settings) { ALOGD("getFrontendSettings %d", type); Loading Loading @@ -2639,6 +2718,10 @@ static FrontendSettingsExt1_1 getFrontendSettingsExt1_1(JNIEnv *env, int type, j .inversion = FrontendSpectralInversion::UNDEFINED, }; settingsExt1_1.settingExt.noinit(); if (type == static_cast<int>(::android::hardware::tv::tuner::V1_1::FrontendType::DTMB)) { getDtmbFrontendSettings(env, settings, settingsExt1_1); } else { FrontendType feType = static_cast<FrontendType>(type); switch(feType) { case FrontendType::DVBS: Loading Loading @@ -2670,6 +2753,7 @@ static FrontendSettingsExt1_1 getFrontendSettingsExt1_1(JNIEnv *env, int type, j "Unsupported frontend type %d", type); return FrontendSettingsExt1_1(); } } uint32_t endFreq = getFrontendSettingsEndFreq(env, settings); FrontendSpectralInversion inversion = getFrontendSettingsSpectralInversion(env, settings); Loading media/jni/android_media_tv_Tuner.h +1 −0 Original line number Diff line number Diff line Loading @@ -267,6 +267,7 @@ private: static jobject getIsdbs3FrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps); static jobject getIsdbsFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps); static jobject getIsdbtFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps); static jobject getDtmbFrontendCaps(JNIEnv *env, int id); }; class C2DataIdInfo : public C2Param { Loading Loading
media/jni/android_media_tv_Tuner.cpp +114 −30 Original line number Diff line number Diff line Loading @@ -141,6 +141,14 @@ using ::android::hardware::tv::tuner::V1_1::FrontendDvbsScanType; using ::android::hardware::tv::tuner::V1_1::FrontendDvbcSettingsExt1_1; using ::android::hardware::tv::tuner::V1_1::FrontendDvbsSettingsExt1_1; using ::android::hardware::tv::tuner::V1_1::FrontendDvbtSettingsExt1_1; using ::android::hardware::tv::tuner::V1_1::FrontendDtmbBandwidth; using ::android::hardware::tv::tuner::V1_1::FrontendDtmbCapabilities; using ::android::hardware::tv::tuner::V1_1::FrontendDtmbCodeRate; using ::android::hardware::tv::tuner::V1_1::FrontendDtmbGuardInterval; using ::android::hardware::tv::tuner::V1_1::FrontendDtmbModulation; using ::android::hardware::tv::tuner::V1_1::FrontendDtmbSettings; using ::android::hardware::tv::tuner::V1_1::FrontendDtmbTimeInterleaveMode; using ::android::hardware::tv::tuner::V1_1::FrontendDtmbTransmissionMode; using ::android::hardware::tv::tuner::V1_1::FrontendSpectralInversion; struct fields_t { Loading Loading @@ -1208,6 +1216,33 @@ jobject JTuner::getIsdbtFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabili guardIntervalCap); } jobject JTuner::getDtmbFrontendCaps(JNIEnv *env, int id) { jclass clazz = env->FindClass("android/media/tv/tuner/frontend/DtmbFrontendCapabilities"); jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(IIIIII)V"); if (mTuner_1_1 == NULL) { ALOGD("1.1 Tuner is not found. Dtmb Frontend Caps are not supported."); return NULL; } Result result; FrontendDtmbCapabilities dtmbCaps; mTuner_1_1->getFrontendDtmbCapabilities(id, [&](Result r, const FrontendDtmbCapabilities& caps) { dtmbCaps = caps; result = r; }); jint modulationCap = dtmbCaps.modulationCap; jint transmissionModeCap = dtmbCaps.transmissionModeCap; jint guardIntervalCap = dtmbCaps.guardIntervalCap; jint interleaveModeCap = dtmbCaps.interleaveModeCap; jint codeRateCap = dtmbCaps.codeRateCap; jint bandwidthCap = dtmbCaps.bandwidthCap; return env->NewObject(clazz, capsInit, modulationCap, transmissionModeCap, guardIntervalCap, interleaveModeCap, codeRateCap, bandwidthCap); } jobject JTuner::getFrontendInfo(int id) { FrontendInfo feInfo; Result res; Loading Loading @@ -1238,6 +1273,15 @@ jobject JTuner::getFrontendInfo(int id) { FrontendInfo::FrontendCapabilities caps = feInfo.frontendCaps; jobject jcaps = NULL; if (feInfo.type == static_cast<FrontendType>( ::android::hardware::tv::tuner::V1_1::FrontendType::DTMB)) { if (mTuner_1_1 == NULL) { return NULL; } jcaps = getDtmbFrontendCaps(env, id); } switch(feInfo.type) { case FrontendType::ANALOG: if (FrontendInfo::FrontendCapabilities::hidl_discriminator::analogCaps Loading Loading @@ -2599,6 +2643,41 @@ static FrontendSettings getIsdbtFrontendSettings(JNIEnv *env, const jobject& set return frontendSettings; } static void getDtmbFrontendSettings(JNIEnv *env, const jobject& settings, FrontendSettingsExt1_1& settingsExt1_1) { uint32_t freq = getFrontendSettingsFreq(env, settings); jclass clazz = env->FindClass("android/media/tv/tuner/frontend/DtmbFrontendSettings"); FrontendDtmbModulation modulation = static_cast<FrontendDtmbModulation>( env->GetIntField(settings, env->GetFieldID(clazz, "mModulation", "I"))); FrontendDtmbBandwidth bandwidth = static_cast<FrontendDtmbBandwidth>( env->GetIntField(settings, env->GetFieldID(clazz, "mBandwidth", "I"))); FrontendDtmbTransmissionMode transmissionMode = static_cast<FrontendDtmbTransmissionMode>( env->GetIntField(settings, env->GetFieldID(clazz, "mTransmissionMode", "I"))); FrontendDtmbCodeRate codeRate = static_cast<FrontendDtmbCodeRate>( env->GetIntField(settings, env->GetFieldID(clazz, "mCodeRate", "I"))); FrontendDtmbGuardInterval guardInterval = static_cast<FrontendDtmbGuardInterval>( env->GetIntField(settings, env->GetFieldID(clazz, "mGuardInterval", "I"))); FrontendDtmbTimeInterleaveMode interleaveMode = static_cast<FrontendDtmbTimeInterleaveMode>( env->GetIntField(settings, env->GetFieldID(clazz, "mTimeInterleaveMode", "I"))); FrontendDtmbSettings frontendDtmbSettings { .frequency = freq, .modulation = modulation, .bandwidth = bandwidth, .transmissionMode = transmissionMode, .codeRate = codeRate, .guardInterval = guardInterval, .interleaveMode = interleaveMode, }; settingsExt1_1.settingExt.dtmb(frontendDtmbSettings); } static FrontendSettings getFrontendSettings(JNIEnv *env, int type, jobject settings) { ALOGD("getFrontendSettings %d", type); Loading Loading @@ -2639,6 +2718,10 @@ static FrontendSettingsExt1_1 getFrontendSettingsExt1_1(JNIEnv *env, int type, j .inversion = FrontendSpectralInversion::UNDEFINED, }; settingsExt1_1.settingExt.noinit(); if (type == static_cast<int>(::android::hardware::tv::tuner::V1_1::FrontendType::DTMB)) { getDtmbFrontendSettings(env, settings, settingsExt1_1); } else { FrontendType feType = static_cast<FrontendType>(type); switch(feType) { case FrontendType::DVBS: Loading Loading @@ -2670,6 +2753,7 @@ static FrontendSettingsExt1_1 getFrontendSettingsExt1_1(JNIEnv *env, int type, j "Unsupported frontend type %d", type); return FrontendSettingsExt1_1(); } } uint32_t endFreq = getFrontendSettingsEndFreq(env, settings); FrontendSpectralInversion inversion = getFrontendSettingsSpectralInversion(env, settings); Loading
media/jni/android_media_tv_Tuner.h +1 −0 Original line number Diff line number Diff line Loading @@ -267,6 +267,7 @@ private: static jobject getIsdbs3FrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps); static jobject getIsdbsFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps); static jobject getIsdbtFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities& caps); static jobject getDtmbFrontendCaps(JNIEnv *env, int id); }; class C2DataIdInfo : public C2Param { Loading