summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/system-current.txt7
-rw-r--r--core/api/system-current.txt7
-rw-r--r--media/java/android/media/tv/tuner/frontend/DvbcFrontendSettings.java66
-rw-r--r--media/jni/android_media_tv_Tuner.cpp5
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);
}