diff options
-rw-r--r-- | api/system-current.txt | 7 | ||||
-rw-r--r-- | core/api/system-current.txt | 7 | ||||
-rw-r--r-- | media/java/android/media/tv/tuner/frontend/DvbcFrontendSettings.java | 66 | ||||
-rw-r--r-- | media/jni/android_media_tv_Tuner.cpp | 5 |
4 files changed, 83 insertions, 2 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index f16cc4ecb690..3dd05af06b24 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -5797,6 +5797,7 @@ package android.media.tv.tuner.frontend { public class DvbcFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings { method @NonNull public static android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder builder(); method public int getAnnex(); + method public int getBandwidth(); method public long getInnerFec(); method public int getModulation(); method public int getOuterFec(); @@ -5808,6 +5809,11 @@ package android.media.tv.tuner.frontend { field public static final int ANNEX_B = 2; // 0x2 field public static final int ANNEX_C = 4; // 0x4 field public static final int ANNEX_UNDEFINED = 0; // 0x0 + field public static final int BANDWIDTH_5MHZ = 1; // 0x1 + field public static final int BANDWIDTH_6MHZ = 2; // 0x2 + field public static final int BANDWIDTH_7MHZ = 4; // 0x4 + field public static final int BANDWIDTH_8MHZ = 8; // 0x8 + field public static final int BANDWIDTH_UNDEFINED = 0; // 0x0 field public static final int MODULATION_AUTO = 1; // 0x1 field public static final int MODULATION_MOD_128QAM = 16; // 0x10 field public static final int MODULATION_MOD_16QAM = 2; // 0x2 @@ -5837,6 +5843,7 @@ package android.media.tv.tuner.frontend { public static class DvbcFrontendSettings.Builder { method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings build(); method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setAnnex(int); + method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setBandwidth(int); method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setFrequency(int); method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setInnerFec(long); method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setModulation(int); diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 98918a7b3b58..18fdc0f4f705 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -5737,6 +5737,7 @@ package android.media.tv.tuner.frontend { public class DvbcFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings { method @NonNull public static android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder builder(); method public int getAnnex(); + method public int getBandwidth(); method public long getInnerFec(); method public int getModulation(); method public int getOuterFec(); @@ -5748,6 +5749,11 @@ package android.media.tv.tuner.frontend { field public static final int ANNEX_B = 2; // 0x2 field public static final int ANNEX_C = 4; // 0x4 field public static final int ANNEX_UNDEFINED = 0; // 0x0 + field public static final int BANDWIDTH_5MHZ = 1; // 0x1 + field public static final int BANDWIDTH_6MHZ = 2; // 0x2 + field public static final int BANDWIDTH_7MHZ = 4; // 0x4 + field public static final int BANDWIDTH_8MHZ = 8; // 0x8 + field public static final int BANDWIDTH_UNDEFINED = 0; // 0x0 field public static final int MODULATION_AUTO = 1; // 0x1 field public static final int MODULATION_MOD_128QAM = 16; // 0x10 field public static final int MODULATION_MOD_16QAM = 2; // 0x2 @@ -5777,6 +5783,7 @@ package android.media.tv.tuner.frontend { public static class DvbcFrontendSettings.Builder { method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings build(); method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setAnnex(int); + method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setBandwidth(int); method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setFrequency(int); method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setInnerFec(long); method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setModulation(int); diff --git a/media/java/android/media/tv/tuner/frontend/DvbcFrontendSettings.java b/media/java/android/media/tv/tuner/frontend/DvbcFrontendSettings.java index e6968bb4ec90..a611da669d35 100644 --- a/media/java/android/media/tv/tuner/frontend/DvbcFrontendSettings.java +++ b/media/java/android/media/tv/tuner/frontend/DvbcFrontendSettings.java @@ -223,6 +223,40 @@ public class DvbcFrontendSettings extends FrontendSettings { public static final int TIME_INTERLEAVE_MODE_128_4 = android.hardware.tv.tuner.V1_1.Constants .FrontendCableTimeInterleaveMode.INTERLEAVING_128_4; + /** @hide */ + @IntDef(flag = true, + prefix = "BANDWIDTH_", + value = {BANDWIDTH_UNDEFINED, BANDWIDTH_5MHZ, BANDWIDTH_6MHZ, BANDWIDTH_7MHZ, + BANDWIDTH_8MHZ}) + @Retention(RetentionPolicy.SOURCE) + public @interface Bandwidth {} + + /** + * Bandwidth undefined. + */ + public static final int BANDWIDTH_UNDEFINED = + android.hardware.tv.tuner.V1_1.Constants.FrontendDvbcBandwidth.UNDEFINED; + /** + * 5 MHz bandwidth. + */ + public static final int BANDWIDTH_5MHZ = + android.hardware.tv.tuner.V1_1.Constants.FrontendDvbcBandwidth.BANDWIDTH_5MHZ; + /** + * 6 MHz bandwidth. + */ + public static final int BANDWIDTH_6MHZ = + android.hardware.tv.tuner.V1_1.Constants.FrontendDvbcBandwidth.BANDWIDTH_6MHZ; + /** + * 7 MHz bandwidth. + */ + public static final int BANDWIDTH_7MHZ = + android.hardware.tv.tuner.V1_1.Constants.FrontendDvbcBandwidth.BANDWIDTH_7MHZ; + /** + * 8 MHz bandwidth. + */ + public static final int BANDWIDTH_8MHZ = + android.hardware.tv.tuner.V1_1.Constants.FrontendDvbcBandwidth.BANDWIDTH_8MHZ; + private final int mModulation; private final long mInnerFec; @@ -232,9 +266,11 @@ public class DvbcFrontendSettings extends FrontendSettings { private final int mSpectralInversion; // Dvbc time interleave mode is only supported in Tuner 1.1 or higher. private final int mInterleaveMode; + // Dvbc bandwidth is only supported in Tuner 1.1 or higher. + private final int mBandwidth; private DvbcFrontendSettings(int frequency, int modulation, long innerFec, int symbolRate, - int outerFec, int annex, int spectralInversion, int interleaveMode) { + int outerFec, int annex, int spectralInversion, int interleaveMode, int bandwidth) { super(frequency); mModulation = modulation; mInnerFec = innerFec; @@ -243,6 +279,7 @@ public class DvbcFrontendSettings extends FrontendSettings { mAnnex = annex; mSpectralInversion = spectralInversion; mInterleaveMode = interleaveMode; + mBandwidth = bandwidth; } /** @@ -293,6 +330,13 @@ public class DvbcFrontendSettings extends FrontendSettings { public int getTimeInterleaveMode() { return mInterleaveMode; } + /** + * Gets Bandwidth. + */ + @Bandwidth + public int getBandwidth() { + return mBandwidth; + } /** * Creates a builder for {@link DvbcFrontendSettings}. @@ -314,6 +358,7 @@ public class DvbcFrontendSettings extends FrontendSettings { private int mAnnex = ANNEX_UNDEFINED; private int mSpectralInversion = FrontendSettings.FRONTEND_SPECTRAL_INVERSION_UNDEFINED; private int mInterleaveMode = TIME_INTERLEAVE_MODE_UNDEFINED; + private int mBandwidth = BANDWIDTH_UNDEFINED; private Builder() { } @@ -407,6 +452,23 @@ public class DvbcFrontendSettings extends FrontendSettings { } return this; } + /** + * Set the Bandwidth. + * + * <p>This API is only supported by Tuner HAL 1.1 or higher. Unsupported version would cause + * no-op. Use {@link TunerVersionChecker.getTunerVersion()} to check the version. + * + * @param bandwidth the value to set as the bandwidth. Default value is + * {@link #BANDWIDTH_UNDEFINED}. + */ + @NonNull + public Builder setBandwidth(@Bandwidth int bandwidth) { + if (TunerVersionChecker.checkHigherOrEqualVersionTo( + TunerVersionChecker.TUNER_VERSION_1_1, "setBandwidth")) { + mBandwidth = bandwidth; + } + return this; + } /** * Builds a {@link DvbcFrontendSettings} object. @@ -414,7 +476,7 @@ public class DvbcFrontendSettings extends FrontendSettings { @NonNull public DvbcFrontendSettings build() { return new DvbcFrontendSettings(mFrequency, mModulation, mInnerFec, mSymbolRate, - mOuterFec, mAnnex, mSpectralInversion, mInterleaveMode); + mOuterFec, mAnnex, mSpectralInversion, mInterleaveMode, mBandwidth); } } diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp index 1be0d4439e69..27e199205459 100644 --- a/media/jni/android_media_tv_Tuner.cpp +++ b/media/jni/android_media_tv_Tuner.cpp @@ -140,6 +140,7 @@ using ::android::hardware::tv::tuner::V1_1::FrontendAnalogAftFlag; using ::android::hardware::tv::tuner::V1_1::FrontendAnalogSettingsExt1_1; using ::android::hardware::tv::tuner::V1_1::FrontendBandwidth; using ::android::hardware::tv::tuner::V1_1::FrontendCableTimeInterleaveMode; +using ::android::hardware::tv::tuner::V1_1::FrontendDvbcBandwidth; 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; @@ -2725,9 +2726,13 @@ static void getDvbcFrontendSettingsExt1_1(JNIEnv *env, const jobject& settings, FrontendCableTimeInterleaveMode interleaveMode = static_cast<FrontendCableTimeInterleaveMode>( env->GetIntField(settings, env->GetFieldID(clazz, "mInterleaveMode", "I"))); + FrontendDvbcBandwidth bandwidth = + static_cast<FrontendDvbcBandwidth>( + env->GetIntField(settings, env->GetFieldID(clazz, "mBandwidth", "I"))); FrontendDvbcSettingsExt1_1 dvbcExt1_1 { .interleaveMode = interleaveMode, + .bandwidth = bandwidth, }; settingsExt1_1.settingExt.dvbc(dvbcExt1_1); } |