diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp index 0aae940ca40e2..4bdbe362a6150 100644 --- a/media/jni/android_media_tv_Tuner.cpp +++ b/media/jni/android_media_tv_Tuner.cpp @@ -3029,7 +3029,8 @@ static FrontendSettings getFrontendSettings(JNIEnv *env, int type, jobject setti } } -static FrontendSettingsExt1_1 getFrontendSettingsExt1_1(JNIEnv *env, int type, jobject settings) { +static FrontendSettingsExt1_1 getFrontendSettingsExt1_1( + JNIEnv *env, int type, jobject settings, int tunerVersion) { ALOGD("getFrontendSettingsExt1_1 %d", type); FrontendSettingsExt1_1 settingsExt1_1 { @@ -3038,6 +3039,10 @@ static FrontendSettingsExt1_1 getFrontendSettingsExt1_1(JNIEnv *env, int type, j }; settingsExt1_1.settingExt.noinit(); + if (tunerVersion < TUNER_VERSION_1_1) { + return settingsExt1_1; + } + if (type == static_cast(::android::hardware::tv::tuner::V1_1::FrontendType::DTMB)) { getDtmbFrontendSettings(env, settings, settingsExt1_1); } else { @@ -3220,7 +3225,8 @@ static jobject android_media_tv_Tuner_open_frontend_by_handle( static int android_media_tv_Tuner_tune(JNIEnv *env, jobject thiz, jint type, jobject settings) { sp tuner = getTuner(env, thiz); FrontendSettings setting = getFrontendSettings(env, type, settings); - FrontendSettingsExt1_1 settingExt = getFrontendSettingsExt1_1(env, type, settings); + FrontendSettingsExt1_1 settingExt = getFrontendSettingsExt1_1( + env, type, settings, tuner->getTunerVersion()); return tuner->tune(setting, settingExt); } @@ -3233,7 +3239,8 @@ static int android_media_tv_Tuner_scan( JNIEnv *env, jobject thiz, jint settingsType, jobject settings, jint scanType) { sp tuner = getTuner(env, thiz); FrontendSettings setting = getFrontendSettings(env, settingsType, settings); - FrontendSettingsExt1_1 settingExt = getFrontendSettingsExt1_1(env, settingsType, settings); + FrontendSettingsExt1_1 settingExt = getFrontendSettingsExt1_1( + env, settingsType, settings, tuner->getTunerVersion()); return tuner->scan(setting, static_cast(scanType), settingExt); } diff --git a/media/jni/android_media_tv_Tuner.h b/media/jni/android_media_tv_Tuner.h index fafef42215415..2a933b207902a 100644 --- a/media/jni/android_media_tv_Tuner.h +++ b/media/jni/android_media_tv_Tuner.h @@ -73,6 +73,8 @@ using ::android::hardware::tv::tuner::V1_1::FrontendScanMessageTypeExt1_1; using MQ = MessageQueue; +const static int TUNER_VERSION_1_1 = ((1 << 16) | 1); + namespace android { struct LnbClientCallbackImpl : public LnbClientCallback { diff --git a/media/jni/tuner/FilterClient.cpp b/media/jni/tuner/FilterClient.cpp index c080701e31a88..dc1d8b705d8f9 100644 --- a/media/jni/tuner/FilterClient.cpp +++ b/media/jni/tuner/FilterClient.cpp @@ -596,11 +596,11 @@ TunerFilterSectionSettings FilterClient::getAidlSectionSettings( sectionBits.mask.resize(hidlSectionBits.mask.size()); sectionBits.mode.resize(hidlSectionBits.mode.size()); copy(hidlSectionBits.filter.begin(), hidlSectionBits.filter.end(), - hidlSectionBits.filter.begin()); + sectionBits.filter.begin()); copy(hidlSectionBits.mask.begin(), hidlSectionBits.mask.end(), - hidlSectionBits.mask.begin()); + sectionBits.mask.begin()); copy(hidlSectionBits.mode.begin(), hidlSectionBits.mode.end(), - hidlSectionBits.mode.begin()); + sectionBits.mode.begin()); aidlSection.condition.set(sectionBits); break; }