Add 1.1 Tuner frontend setting into Tuner java Framework
This CL adds the Tuner 1.1 extended frontend setting options into
Tuner Java system APIs.
Including the following settings:
General Frontend Settings: Spectral Inversion, End Frequency
Dvbt Settings: plp rotation, extended transmission mode
Dvbs Settings: scan type.
Test: make
Bug: 158818695
Change-Id: I0d80f244ad29a73458e66ee012c48b9dbde356be
diff --git a/api/system-current.txt b/api/system-current.txt
index 648be0d..d2b6af8 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -5055,6 +5055,7 @@
field public static final int INVALID_AV_SYNC_ID = -1; // 0xffffffff
field public static final int INVALID_FILTER_ID = -1; // 0xffffffff
field public static final long INVALID_FILTER_ID_64BIT = -1L; // 0xffffffffffffffffL
+ field public static final int INVALID_FRONTEND_SETTING_FREQUENCY = -1; // 0xffffffff
field public static final int INVALID_LTS_ID = -1; // 0xffffffff
field public static final int INVALID_MMTP_RECORD_EVENT_MPT_SEQUENCE_NUM = -1; // 0xffffffff
field public static final int INVALID_STREAM_ID = 65535; // 0xffff
@@ -5497,9 +5498,13 @@
public class AnalogFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
method @NonNull public static android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder builder();
+ method public int getAftFlag();
method public int getSifStandard();
method public int getSignalType();
method public int getType();
+ field public static final int AFT_FLAG_FALSE = 2; // 0x2
+ field public static final int AFT_FLAG_TRUE = 1; // 0x1
+ field public static final int AFT_FLAG_UNDEFINED = 0; // 0x0
field public static final int SIF_AUTO = 1; // 0x1
field public static final int SIF_BG = 2; // 0x2
field public static final int SIF_BG_A2 = 4; // 0x4
@@ -5532,6 +5537,7 @@
public static class AnalogFrontendSettings.Builder {
method @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings build();
+ method @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder setAftFlag(int);
method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder setFrequency(int);
method @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder setSifStandard(int);
method @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder setSignalType(int);
@@ -5661,6 +5667,7 @@
method public int getOuterFec();
method public int getSpectralInversion();
method public int getSymbolRate();
+ method public int getTimeInterleaveMode();
method public int getType();
field public static final int ANNEX_A = 1; // 0x1
field public static final int ANNEX_B = 2; // 0x2
@@ -5679,6 +5686,17 @@
field public static final int SPECTRAL_INVERSION_INVERTED = 2; // 0x2
field public static final int SPECTRAL_INVERSION_NORMAL = 1; // 0x1
field public static final int SPECTRAL_INVERSION_UNDEFINED = 0; // 0x0
+ field public static final int TIME_INTERLEAVE_MODE_128_1_0 = 2; // 0x2
+ field public static final int TIME_INTERLEAVE_MODE_128_1_1 = 4; // 0x4
+ field public static final int TIME_INTERLEAVE_MODE_128_2 = 128; // 0x80
+ field public static final int TIME_INTERLEAVE_MODE_128_3 = 256; // 0x100
+ field public static final int TIME_INTERLEAVE_MODE_128_4 = 512; // 0x200
+ field public static final int TIME_INTERLEAVE_MODE_16_8 = 32; // 0x20
+ field public static final int TIME_INTERLEAVE_MODE_32_4 = 16; // 0x10
+ field public static final int TIME_INTERLEAVE_MODE_64_2 = 8; // 0x8
+ field public static final int TIME_INTERLEAVE_MODE_8_16 = 64; // 0x40
+ field public static final int TIME_INTERLEAVE_MODE_AUTO = 1; // 0x1
+ field public static final int TIME_INTERLEAVE_MODE_UNDEFINED = 0; // 0x0
}
public static class DvbcFrontendSettings.Builder {
@@ -5690,6 +5708,7 @@
method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setOuterFec(int);
method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setSpectralInversion(int);
method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setSymbolRate(int);
+ method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setTimeInterleaveMode(int);
}
public class DvbsCodeRate {
@@ -5721,6 +5740,7 @@
method public int getModulation();
method public int getPilot();
method public int getRolloff();
+ method public int getScanType();
method public int getStandard();
method public int getSymbolRate();
method public int getType();
@@ -5751,6 +5771,11 @@
field public static final int ROLLOFF_0_35 = 1; // 0x1
field public static final int ROLLOFF_0_5 = 6; // 0x6
field public static final int ROLLOFF_UNDEFINED = 0; // 0x0
+ field public static final int SCAN_TYPE_DIRECT = 1; // 0x1
+ field public static final int SCAN_TYPE_DISEQC = 2; // 0x2
+ field public static final int SCAN_TYPE_JESS = 4; // 0x4
+ field public static final int SCAN_TYPE_UNDEFINED = 0; // 0x0
+ field public static final int SCAN_TYPE_UNICABLE = 3; // 0x3
field public static final int STANDARD_AUTO = 1; // 0x1
field public static final int STANDARD_S = 2; // 0x2
field public static final int STANDARD_S2 = 4; // 0x4
@@ -5768,6 +5793,7 @@
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setModulation(int);
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setPilot(int);
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setRolloff(int);
+ method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setScanType(int);
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setStandard(int);
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setSymbolRate(int);
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setVcmMode(int);
@@ -5820,10 +5846,14 @@
field public static final int CODERATE_AUTO = 1; // 0x1
field public static final int CODERATE_UNDEFINED = 0; // 0x0
field public static final int CONSTELLATION_16QAM = 4; // 0x4
+ field public static final int CONSTELLATION_16QAM_R = 64; // 0x40
field public static final int CONSTELLATION_256QAM = 16; // 0x10
+ field public static final int CONSTELLATION_256QAM_R = 256; // 0x100
field public static final int CONSTELLATION_64QAM = 8; // 0x8
+ field public static final int CONSTELLATION_64QAM_R = 128; // 0x80
field public static final int CONSTELLATION_AUTO = 1; // 0x1
field public static final int CONSTELLATION_QPSK = 2; // 0x2
+ field public static final int CONSTELLATION_QPSK_R = 32; // 0x20
field public static final int CONSTELLATION_UNDEFINED = 0; // 0x0
field public static final int GUARD_INTERVAL_19_128 = 64; // 0x40
field public static final int GUARD_INTERVAL_19_256 = 128; // 0x80
@@ -5857,6 +5887,9 @@
field public static final int TRANSMISSION_MODE_4K = 8; // 0x8
field public static final int TRANSMISSION_MODE_8K = 4; // 0x4
field public static final int TRANSMISSION_MODE_AUTO = 1; // 0x1
+ field public static final int TRANSMISSION_MODE_EXTENDED_16K = 256; // 0x100
+ field public static final int TRANSMISSION_MODE_EXTENDED_32K = 512; // 0x200
+ field public static final int TRANSMISSION_MODE_EXTENDED_8K = 128; // 0x80
field public static final int TRANSMISSION_MODE_UNDEFINED = 0; // 0x0
}
@@ -5894,8 +5927,12 @@
}
public abstract class FrontendSettings {
+ method public int getEndFrequency();
method public int getFrequency();
+ method public int getFrontendSpectralInversion();
method public abstract int getType();
+ method @IntRange(from=1) public void setEndFrequency(int);
+ method public void setSpectralInversion(int);
field public static final long FEC_11_15 = 4194304L; // 0x400000L
field public static final long FEC_11_20 = 8388608L; // 0x800000L
field public static final long FEC_11_45 = 16777216L; // 0x1000000L
@@ -5933,6 +5970,9 @@
field public static final long FEC_9_20 = 2097152L; // 0x200000L
field public static final long FEC_AUTO = 1L; // 0x1L
field public static final long FEC_UNDEFINED = 0L; // 0x0L
+ field public static final int FRONTEND_SPECTRAL_INVERSION_INVERTED = 2; // 0x2
+ field public static final int FRONTEND_SPECTRAL_INVERSION_NORMAL = 1; // 0x1
+ field public static final int FRONTEND_SPECTRAL_INVERSION_UNDEFINED = 0; // 0x0
field public static final int TYPE_ANALOG = 1; // 0x1
field public static final int TYPE_ATSC = 2; // 0x2
field public static final int TYPE_ATSC3 = 3; // 0x3
diff --git a/media/java/android/media/tv/tuner/Tuner.java b/media/java/android/media/tv/tuner/Tuner.java
index 867eab0..3252c90 100644
--- a/media/java/android/media/tv/tuner/Tuner.java
+++ b/media/java/android/media/tv/tuner/Tuner.java
@@ -136,6 +136,11 @@
*/
public static final long INVALID_FILTER_ID_64BIT =
android.hardware.tv.tuner.V1_1.Constants.Constant64Bit.INVALID_FILTER_ID_64BIT;
+ /**
+ * Invalid frequency that is used as the default frontend frequency setting.
+ */
+ public static final int INVALID_FRONTEND_SETTING_FREQUENCY =
+ android.hardware.tv.tuner.V1_1.Constants.Constant.INVALID_FRONTEND_SETTING_FREQUENCY;
/** @hide */
@IntDef(prefix = "SCAN_TYPE_", value = {SCAN_TYPE_UNDEFINED, SCAN_TYPE_AUTO, SCAN_TYPE_BLIND})
diff --git a/media/java/android/media/tv/tuner/frontend/AnalogFrontendSettings.java b/media/java/android/media/tv/tuner/frontend/AnalogFrontendSettings.java
index 1d36da3..c6a5bb0 100644
--- a/media/java/android/media/tv/tuner/frontend/AnalogFrontendSettings.java
+++ b/media/java/android/media/tv/tuner/frontend/AnalogFrontendSettings.java
@@ -21,6 +21,7 @@
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.hardware.tv.tuner.V1_0.Constants;
+import android.media.tv.tuner.TunerVersionChecker;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -164,9 +165,32 @@
*/
public static final int SIF_L_PRIME = Constants.FrontendAnalogSifStandard.L_PRIME;
+ /** @hide */
+ @IntDef(prefix = "AFT_FLAG_",
+ value = {AFT_FLAG_UNDEFINED, AFT_FLAG_TRUE, AFT_FLAG_FALSE})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface AftFlag {}
+
+ /**
+ * Aft flag is not defined.
+ */
+ public static final int AFT_FLAG_UNDEFINED =
+ android.hardware.tv.tuner.V1_1.Constants.FrontendAnalogAftFlag.UNDEFINED;
+ /**
+ * Aft flag is set true.
+ */
+ public static final int AFT_FLAG_TRUE =
+ android.hardware.tv.tuner.V1_1.Constants.FrontendAnalogAftFlag.AFT_TRUE;
+ /**
+ * Aft flag is not set.
+ */
+ public static final int AFT_FLAG_FALSE =
+ android.hardware.tv.tuner.V1_1.Constants.FrontendAnalogAftFlag.AFT_FALSE;
+
private final int mSignalType;
private final int mSifStandard;
+ private final int mAftFlag;
@Override
public int getType() {
@@ -191,6 +215,14 @@
}
/**
+ * Gets AFT flag.
+ */
+ @AftFlag
+ public int getAftFlag() {
+ return mAftFlag;
+ }
+
+ /**
* Creates a builder for {@link AnalogFrontendSettings}.
*/
@NonNull
@@ -198,10 +230,11 @@
return new Builder();
}
- private AnalogFrontendSettings(int frequency, int signalType, int sifStandard) {
+ private AnalogFrontendSettings(int frequency, int signalType, int sifStandard, int aftFlag) {
super(frequency);
mSignalType = signalType;
mSifStandard = sifStandard;
+ mAftFlag = aftFlag;
}
/**
@@ -211,6 +244,7 @@
private int mFrequency = 0;
private int mSignalType = SIGNAL_TYPE_UNDEFINED;
private int mSifStandard = SIF_UNDEFINED;
+ private int mAftFlag = AFT_FLAG_UNDEFINED;
private Builder() {}
@@ -227,6 +261,24 @@
}
/**
+ * Set Aft flag.
+ *
+ * <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 aftFlag the value to set the aft flag. The default value is
+ * {@link #AFT_FLAG_UNDEFINED}.
+ */
+ @NonNull
+ public Builder setAftFlag(@AftFlag int aftFlag) {
+ if (TunerVersionChecker.checkHigherOrEqualVersionTo(
+ TunerVersionChecker.TUNER_VERSION_1_1, "setAftFlag")) {
+ mAftFlag = aftFlag;
+ }
+ return this;
+ }
+
+ /**
* Sets analog signal type.
*
* <p>Default value is {@link #SIGNAL_TYPE_UNDEFINED}.
@@ -253,7 +305,7 @@
*/
@NonNull
public AnalogFrontendSettings build() {
- return new AnalogFrontendSettings(mFrequency, mSignalType, mSifStandard);
+ return new AnalogFrontendSettings(mFrequency, mSignalType, mSifStandard, mAftFlag);
}
}
}
diff --git a/media/java/android/media/tv/tuner/frontend/Atsc3FrontendSettings.java b/media/java/android/media/tv/tuner/frontend/Atsc3FrontendSettings.java
index f9eabc5..ed1ce2d 100644
--- a/media/java/android/media/tv/tuner/frontend/Atsc3FrontendSettings.java
+++ b/media/java/android/media/tv/tuner/frontend/Atsc3FrontendSettings.java
@@ -377,8 +377,8 @@
*/
@NonNull
public Atsc3FrontendSettings build() {
- return new Atsc3FrontendSettings(
- mFrequency, mBandwidth, mDemodOutputFormat, mPlpSettings);
+ return new Atsc3FrontendSettings(mFrequency, mBandwidth, mDemodOutputFormat,
+ mPlpSettings);
}
}
diff --git a/media/java/android/media/tv/tuner/frontend/DvbcFrontendSettings.java b/media/java/android/media/tv/tuner/frontend/DvbcFrontendSettings.java
index 271e91e..6732686 100644
--- a/media/java/android/media/tv/tuner/frontend/DvbcFrontendSettings.java
+++ b/media/java/android/media/tv/tuner/frontend/DvbcFrontendSettings.java
@@ -21,6 +21,8 @@
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.hardware.tv.tuner.V1_0.Constants;
+import android.media.tv.tuner.TunerVersionChecker;
+import android.media.tv.tuner.frontend.FrontendSettings.FrontendSpectralInversion;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -140,6 +142,74 @@
public static final int SPECTRAL_INVERSION_INVERTED =
Constants.FrontendDvbcSpectralInversion.INVERTED;
+ /** @hide */
+ @IntDef(flag = true,
+ prefix = "TIME_INTERLEAVE_MODE_",
+ value = {TIME_INTERLEAVE_MODE_UNDEFINED, TIME_INTERLEAVE_MODE_AUTO,
+ TIME_INTERLEAVE_MODE_128_1_0, TIME_INTERLEAVE_MODE_128_1_1,
+ TIME_INTERLEAVE_MODE_64_2, TIME_INTERLEAVE_MODE_32_4,
+ TIME_INTERLEAVE_MODE_16_8, TIME_INTERLEAVE_MODE_8_16,
+ TIME_INTERLEAVE_MODE_128_2, TIME_INTERLEAVE_MODE_128_3,
+ TIME_INTERLEAVE_MODE_128_4})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface TimeInterleaveMode {}
+
+ /**
+ * Time interleave mode undefined.
+ */
+ public static final int TIME_INTERLEAVE_MODE_UNDEFINED =
+ android.hardware.tv.tuner.V1_1.Constants.FrontendCableTimeInterleaveMode.UNDEFINED;
+ /**
+ * Hardware is able to detect and set Time Interleave Mode automatically.
+ */
+ public static final int TIME_INTERLEAVE_MODE_AUTO =
+ android.hardware.tv.tuner.V1_1.Constants.FrontendCableTimeInterleaveMode.AUTO;
+ /**
+ * 128/1/0 Time Interleave Mode.
+ */
+ public static final int TIME_INTERLEAVE_MODE_128_1_0 = android.hardware.tv.tuner.V1_1.Constants
+ .FrontendCableTimeInterleaveMode.INTERLEAVING_128_1_0;
+ /**
+ * 128/1/1 Time Interleave Mode.
+ */
+ public static final int TIME_INTERLEAVE_MODE_128_1_1 = android.hardware.tv.tuner.V1_1.Constants
+ .FrontendCableTimeInterleaveMode.INTERLEAVING_128_1_1;
+ /**
+ * 64/2 Time Interleave Mode.
+ */
+ public static final int TIME_INTERLEAVE_MODE_64_2 = android.hardware.tv.tuner.V1_1.Constants
+ .FrontendCableTimeInterleaveMode.INTERLEAVING_64_2;
+ /**
+ * 32/4 Time Interleave Mode.
+ */
+ public static final int TIME_INTERLEAVE_MODE_32_4 = android.hardware.tv.tuner.V1_1.Constants
+ .FrontendCableTimeInterleaveMode.INTERLEAVING_32_4;
+ /**
+ * 16/8 Time Interleave Mode.
+ */
+ public static final int TIME_INTERLEAVE_MODE_16_8 = android.hardware.tv.tuner.V1_1.Constants
+ .FrontendCableTimeInterleaveMode.INTERLEAVING_16_8;
+ /**
+ * 8/16 Time Interleave Mode.
+ */
+ public static final int TIME_INTERLEAVE_MODE_8_16 = android.hardware.tv.tuner.V1_1.Constants
+ .FrontendCableTimeInterleaveMode.INTERLEAVING_8_16;
+ /**
+ * 128/2 Time Interleave Mode.
+ */
+ public static final int TIME_INTERLEAVE_MODE_128_2 = android.hardware.tv.tuner.V1_1.Constants
+ .FrontendCableTimeInterleaveMode.INTERLEAVING_128_2;
+ /**
+ * 128/3 Time Interleave Mode.
+ */
+ public static final int TIME_INTERLEAVE_MODE_128_3 = android.hardware.tv.tuner.V1_1.Constants
+ .FrontendCableTimeInterleaveMode.INTERLEAVING_128_3;
+ /**
+ * 128/4 Time Interleave Mode.
+ */
+ public static final int TIME_INTERLEAVE_MODE_128_4 = android.hardware.tv.tuner.V1_1.Constants
+ .FrontendCableTimeInterleaveMode.INTERLEAVING_128_4;
+
private final int mModulation;
private final long mInnerFec;
@@ -147,9 +217,11 @@
private final int mOuterFec;
private final int mAnnex;
private final int mSpectralInversion;
+ // Dvbc time interleave mode is only supported in Tuner 1.1 or higher.
+ private final int mInterleaveMode;
private DvbcFrontendSettings(int frequency, int modulation, long innerFec, int symbolRate,
- int outerFec, int annex, int spectralInversion) {
+ int outerFec, int annex, int spectralInversion, int interleaveMode) {
super(frequency);
mModulation = modulation;
mInnerFec = innerFec;
@@ -157,6 +229,7 @@
mOuterFec = outerFec;
mAnnex = annex;
mSpectralInversion = spectralInversion;
+ mInterleaveMode = interleaveMode;
}
/**
@@ -196,10 +269,17 @@
/**
* Gets Spectral Inversion.
*/
- @SpectralInversion
+ @FrontendSpectralInversion
public int getSpectralInversion() {
return mSpectralInversion;
}
+ /**
+ * Gets Time Interleave Mode.
+ */
+ @TimeInterleaveMode
+ public int getTimeInterleaveMode() {
+ return mInterleaveMode;
+ }
/**
* Creates a builder for {@link DvbcFrontendSettings}.
@@ -219,7 +299,8 @@
private int mSymbolRate = 0;
private int mOuterFec = OUTER_FEC_UNDEFINED;
private int mAnnex = ANNEX_UNDEFINED;
- private int mSpectralInversion = SPECTRAL_INVERSION_UNDEFINED;
+ private int mSpectralInversion = FrontendSettings.FRONTEND_SPECTRAL_INVERSION_UNDEFINED;
+ private int mInterleaveMode = TIME_INTERLEAVE_MODE_UNDEFINED;
private Builder() {
}
@@ -289,13 +370,30 @@
/**
* Sets Spectral Inversion.
*
- * <p>Default value is {@link #SPECTRAL_INVERSION_UNDEFINED}.
+ * <p>Default value is {@link FrontendSettings#FRONTEND_SPECTRAL_INVERSION_UNDEFINED}.
*/
@NonNull
- public Builder setSpectralInversion(@SpectralInversion int spectralInversion) {
+ public Builder setSpectralInversion(@FrontendSpectralInversion int spectralInversion) {
mSpectralInversion = spectralInversion;
return this;
}
+ /**
+ * Set the time interleave mode.
+ *
+ * <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 interleaveMode the value to set as the time interleave mode. Default value is
+ * {@link #TIME_INTERLEAVE_MODE_UNDEFINED}.
+ */
+ @NonNull
+ public Builder setTimeInterleaveMode(@TimeInterleaveMode int interleaveMode) {
+ if (TunerVersionChecker.checkHigherOrEqualVersionTo(
+ TunerVersionChecker.TUNER_VERSION_1_1, "setTimeInterleaveMode")) {
+ mInterleaveMode = interleaveMode;
+ }
+ return this;
+ }
/**
* Builds a {@link DvbcFrontendSettings} object.
@@ -303,7 +401,7 @@
@NonNull
public DvbcFrontendSettings build() {
return new DvbcFrontendSettings(mFrequency, mModulation, mInnerFec, mSymbolRate,
- mOuterFec, mAnnex, mSpectralInversion);
+ mOuterFec, mAnnex, mSpectralInversion, mInterleaveMode);
}
}
diff --git a/media/java/android/media/tv/tuner/frontend/DvbsFrontendSettings.java b/media/java/android/media/tv/tuner/frontend/DvbsFrontendSettings.java
index 60b070f..343dbb1 100644
--- a/media/java/android/media/tv/tuner/frontend/DvbsFrontendSettings.java
+++ b/media/java/android/media/tv/tuner/frontend/DvbsFrontendSettings.java
@@ -23,6 +23,8 @@
import android.annotation.SystemApi;
import android.hardware.tv.tuner.V1_0.Constants;
import android.media.tv.tuner.Tuner;
+import android.media.tv.tuner.TunerVersionChecker;
+
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -36,6 +38,44 @@
public class DvbsFrontendSettings extends FrontendSettings {
/** @hide */
@IntDef(flag = true,
+ prefix = "SCAN_TYPE_",
+ value = {SCAN_TYPE_UNDEFINED, SCAN_TYPE_DIRECT, SCAN_TYPE_DISEQC,
+ SCAN_TYPE_UNICABLE, SCAN_TYPE_JESS})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface ScanType {}
+
+ /**
+ * Dvbs scan type undefined.
+ */
+ public static final int SCAN_TYPE_UNDEFINED =
+ android.hardware.tv.tuner.V1_1.Constants.FrontendDvbsScanType.UNDEFINED;
+
+ /**
+ * Dvbs scan type DIRECT.
+ */
+ public static final int SCAN_TYPE_DIRECT =
+ android.hardware.tv.tuner.V1_1.Constants.FrontendDvbsScanType.DIRECT;
+
+ /**
+ * Dvbs scan type DISEQC.
+ */
+ public static final int SCAN_TYPE_DISEQC =
+ android.hardware.tv.tuner.V1_1.Constants.FrontendDvbsScanType.DISEQC;
+
+ /**
+ * Dvbs scan type UNICABLE.
+ */
+ public static final int SCAN_TYPE_UNICABLE =
+ android.hardware.tv.tuner.V1_1.Constants.FrontendDvbsScanType.UNICABLE;
+
+ /**
+ * Dvbs scan type JESS.
+ */
+ public static final int SCAN_TYPE_JESS =
+ android.hardware.tv.tuner.V1_1.Constants.FrontendDvbsScanType.JESS;
+
+ /** @hide */
+ @IntDef(flag = true,
prefix = "MODULATION_",
value = {MODULATION_UNDEFINED, MODULATION_AUTO, MODULATION_MOD_QPSK,
MODULATION_MOD_8PSK, MODULATION_MOD_16QAM, MODULATION_MOD_16PSK,
@@ -218,9 +258,12 @@
private final int mInputStreamId;
private final int mStandard;
private final int mVcmMode;
+ // Dvbs scan type is only supported in Tuner 1.1 or higher.
+ private final int mScanType;
private DvbsFrontendSettings(int frequency, int modulation, DvbsCodeRate codeRate,
- int symbolRate, int rolloff, int pilot, int inputStreamId, int standard, int vcm) {
+ int symbolRate, int rolloff, int pilot, int inputStreamId, int standard, int vcm,
+ int scanType) {
super(frequency);
mModulation = modulation;
mCodeRate = codeRate;
@@ -230,6 +273,7 @@
mInputStreamId = inputStreamId;
mStandard = standard;
mVcmMode = vcm;
+ mScanType = scanType;
}
/**
@@ -286,6 +330,13 @@
public int getVcmMode() {
return mVcmMode;
}
+ /**
+ * Get scan type.
+ */
+ @ScanType
+ public int getScanType() {
+ return mScanType;
+ }
/**
* Creates a builder for {@link DvbsFrontendSettings}.
@@ -308,6 +359,7 @@
private int mInputStreamId = Tuner.INVALID_STREAM_ID;
private int mStandard = STANDARD_AUTO;
private int mVcmMode = VCM_MODE_UNDEFINED;
+ private int mScanType = SCAN_TYPE_UNDEFINED;
private Builder() {
}
@@ -325,6 +377,24 @@
}
/**
+ * Set the scan type.
+ *
+ * <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 scanType the value to set as the scan type. Default value is
+ * {@link android.media.tv.tuner.frontend.DvbsFrontendSettings#DVBS_SCAN_TYPE_UNDEFINED}.
+ */
+ @NonNull
+ public Builder setScanType(@ScanType int scanType) {
+ if (TunerVersionChecker.checkHigherOrEqualVersionTo(
+ TunerVersionChecker.TUNER_VERSION_1_1, "setScanType")) {
+ mScanType = scanType;
+ }
+ return this;
+ }
+
+ /**
* Sets Modulation.
*
* <p>Default value is {@link #MODULATION_UNDEFINED}.
@@ -411,7 +481,7 @@
@NonNull
public DvbsFrontendSettings build() {
return new DvbsFrontendSettings(mFrequency, mModulation, mCodeRate, mSymbolRate,
- mRolloff, mPilot, mInputStreamId, mStandard, mVcmMode);
+ mRolloff, mPilot, mInputStreamId, mStandard, mVcmMode, mScanType);
}
}
diff --git a/media/java/android/media/tv/tuner/frontend/DvbtFrontendSettings.java b/media/java/android/media/tv/tuner/frontend/DvbtFrontendSettings.java
index 5c057de..07d1797 100644
--- a/media/java/android/media/tv/tuner/frontend/DvbtFrontendSettings.java
+++ b/media/java/android/media/tv/tuner/frontend/DvbtFrontendSettings.java
@@ -21,6 +21,7 @@
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.hardware.tv.tuner.V1_0.Constants;
+import android.media.tv.tuner.TunerVersionChecker;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -75,8 +76,21 @@
* 32K Transmission Mode.
*/
public static final int TRANSMISSION_MODE_32K = Constants.FrontendDvbtTransmissionMode.MODE_32K;
-
-
+ /**
+ * 8K Transmission Extended Mode.
+ */
+ public static final int TRANSMISSION_MODE_EXTENDED_8K =
+ android.hardware.tv.tuner.V1_1.Constants.FrontendDvbtTransmissionMode.MODE_8K_E;
+ /**
+ * 16K Transmission Extended Mode.
+ */
+ public static final int TRANSMISSION_MODE_EXTENDED_16K =
+ android.hardware.tv.tuner.V1_1.Constants.FrontendDvbtTransmissionMode.MODE_16K_E;
+ /**
+ * 32K Transmission Extended Mode.
+ */
+ public static final int TRANSMISSION_MODE_EXTENDED_32K =
+ android.hardware.tv.tuner.V1_1.Constants.FrontendDvbtTransmissionMode.MODE_32K_E;
/** @hide */
@IntDef(flag = true,
@@ -124,8 +138,9 @@
@IntDef(flag = true,
prefix = "CONSTELLATION_",
value = {CONSTELLATION_UNDEFINED, CONSTELLATION_AUTO, CONSTELLATION_QPSK,
- CONSTELLATION_16QAM, CONSTELLATION_64QAM,
- CONSTELLATION_256QAM})
+ CONSTELLATION_16QAM, CONSTELLATION_64QAM, CONSTELLATION_256QAM,
+ CONSTELLATION_QPSK_R, CONSTELLATION_16QAM_R, CONSTELLATION_64QAM_R,
+ CONSTELLATION_256QAM_R})
@Retention(RetentionPolicy.SOURCE)
public @interface Constellation {}
@@ -157,7 +172,30 @@
*/
public static final int CONSTELLATION_256QAM =
Constants.FrontendDvbtConstellation.CONSTELLATION_256QAM;
-
+ /**
+ * QPSK Rotated Constellation.
+ */
+ public static final int CONSTELLATION_QPSK_R =
+ android.hardware.tv.tuner.V1_1.Constants.FrontendDvbtConstellation
+ .CONSTELLATION_QPSK_R;
+ /**
+ * 16QAM Rotated Constellation.
+ */
+ public static final int CONSTELLATION_16QAM_R =
+ android.hardware.tv.tuner.V1_1.Constants.FrontendDvbtConstellation
+ .CONSTELLATION_16QAM_R;
+ /**
+ * 64QAM Rotated Constellation.
+ */
+ public static final int CONSTELLATION_64QAM_R =
+ android.hardware.tv.tuner.V1_1.Constants.FrontendDvbtConstellation
+ .CONSTELLATION_64QAM_R;
+ /**
+ * 256QAM Rotated Constellation.
+ */
+ public static final int CONSTELLATION_256QAM_R =
+ android.hardware.tv.tuner.V1_1.Constants.FrontendDvbtConstellation
+ .CONSTELLATION_256QAM_R;
/** @hide */
@IntDef(flag = true,
@@ -366,8 +404,7 @@
*/
public static final int PLP_MODE_MANUAL = Constants.FrontendDvbtPlpMode.MANUAL;
-
- private final int mTransmissionMode;
+ private int mTransmissionMode;
private final int mBandwidth;
private final int mConstellation;
private final int mHierarchy;
@@ -489,6 +526,19 @@
return mPlpGroupId;
}
+ private static boolean isExtendedTransmissionMode(@TransmissionMode int transmissionMode) {
+ return transmissionMode == TRANSMISSION_MODE_EXTENDED_8K
+ || transmissionMode == TRANSMISSION_MODE_EXTENDED_16K
+ || transmissionMode == TRANSMISSION_MODE_EXTENDED_32K;
+ }
+
+ private static boolean isExtendedConstellation(@Constellation int constellation) {
+ return constellation == CONSTELLATION_QPSK_R
+ || constellation == CONSTELLATION_16QAM_R
+ || constellation == CONSTELLATION_64QAM_R
+ || constellation == CONSTELLATION_256QAM_R;
+ }
+
/**
* Creates a builder for {@link DvbtFrontendSettings}.
*/
@@ -534,13 +584,23 @@
/**
* Sets Transmission Mode.
*
+ * <p>{@link #TRANSMISSION_MODE_EXTENDED_8K}, {@link #TRANSMISSION_MODE_EXTENDED_16K} and
+ * {@link #TRANSMISSION_MODE_EXTENDED_32K} are only supported by Tuner HAL 1.1 or higher.
+ * Unsupported version would cause no-op. Use {@link TunerVersionChecker.getTunerVersion()}
+ * to check the version.
+ *
* <p>Default value is {@link #TRANSMISSION_MODE_UNDEFINED}.
*/
@NonNull
public Builder setTransmissionMode(@TransmissionMode int transmissionMode) {
- mTransmissionMode = transmissionMode;
+ if (!isExtendedTransmissionMode(transmissionMode)
+ || TunerVersionChecker.checkHigherOrEqualVersionTo(
+ TunerVersionChecker.TUNER_VERSION_1_1, "set TransmissionMode Ext")) {
+ mTransmissionMode = transmissionMode;
+ }
return this;
}
+
/**
* Sets Bandwidth.
*
@@ -554,11 +614,20 @@
/**
* Sets Constellation.
*
+ * <p>{@link #CONSTELLATION_QPSK_R}, {@link #CONSTELLATION_16QAM_R},
+ * {@link #CONSTELLATION_64QAM_R} and {@link #CONSTELLATION_256QAM_Rare} are only supported
+ * by Tuner HAL 1.1 or higher. Unsupported version would cause no-op. Use
+ * {@link TunerVersionChecker.getTunerVersion()} to check the version.
+ *
* <p>Default value is {@link #CONSTELLATION_UNDEFINED}.
*/
@NonNull
public Builder setConstellation(@Constellation int constellation) {
- mConstellation = constellation;
+ if (!isExtendedConstellation(constellation)
+ || TunerVersionChecker.checkHigherOrEqualVersionTo(
+ TunerVersionChecker.TUNER_VERSION_1_1, "set Constellation Ext")) {
+ mConstellation = constellation;
+ }
return this;
}
/**
diff --git a/media/java/android/media/tv/tuner/frontend/FrontendSettings.java b/media/java/android/media/tv/tuner/frontend/FrontendSettings.java
index 2f2fa97..82f7afa 100644
--- a/media/java/android/media/tv/tuner/frontend/FrontendSettings.java
+++ b/media/java/android/media/tv/tuner/frontend/FrontendSettings.java
@@ -17,9 +17,12 @@
package android.media.tv.tuner.frontend;
import android.annotation.IntDef;
+import android.annotation.IntRange;
import android.annotation.LongDef;
import android.annotation.SystemApi;
import android.hardware.tv.tuner.V1_0.Constants;
+import android.media.tv.tuner.Tuner;
+import android.media.tv.tuner.TunerVersionChecker;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -241,9 +244,36 @@
*/
public static final long FEC_77_90 = Constants.FrontendInnerFec.FEC_77_90;
+ /** @hide */
+ @IntDef(prefix = "FRONTEND_SPECTRAL_INVERSION_",
+ value = {FRONTEND_SPECTRAL_INVERSION_UNDEFINED, FRONTEND_SPECTRAL_INVERSION_NORMAL,
+ FRONTEND_SPECTRAL_INVERSION_INVERTED})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface FrontendSpectralInversion {}
+
+ /**
+ * Spectral Inversion Type undefined.
+ */
+ public static final int FRONTEND_SPECTRAL_INVERSION_UNDEFINED =
+ Constants.FrontendDvbcSpectralInversion.UNDEFINED;
+ /**
+ * Normal Spectral Inversion.
+ */
+ public static final int FRONTEND_SPECTRAL_INVERSION_NORMAL =
+ Constants.FrontendDvbcSpectralInversion.NORMAL;
+ /**
+ * Inverted Spectral Inversion.
+ */
+ public static final int FRONTEND_SPECTRAL_INVERSION_INVERTED =
+ Constants.FrontendDvbcSpectralInversion.INVERTED;
+
private final int mFrequency;
+ // End frequency is only supported in Tuner 1.1 or higher.
+ private int mEndFrequency = Tuner.INVALID_FRONTEND_SETTING_FREQUENCY;
+ // General spectral inversion is only supported in Tuner 1.1 or higher.
+ private int mSpectralInversion = FRONTEND_SPECTRAL_INVERSION_UNDEFINED;
FrontendSettings(int frequency) {
mFrequency = frequency;
@@ -263,4 +293,57 @@
public int getFrequency() {
return mFrequency;
}
+
+ /**
+ * Get the end frequency.
+ *
+ * @return the end frequency in Hz.
+ */
+ public int getEndFrequency() {
+ return mEndFrequency;
+ }
+
+ /**
+ * Get the spectral inversion.
+ *
+ * @return the value of the spectral inversion.
+ */
+ @FrontendSpectralInversion
+ public int getFrontendSpectralInversion() {
+ return mSpectralInversion;
+ }
+
+ /**
+ * Set Spectral Inversion.
+ *
+ * <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 inversion the value to set as the spectral inversion. Default value is {@link
+ * #FRONTEND_SPECTRAL_INVERSION_UNDEFINED}.
+ */
+ public void setSpectralInversion(@FrontendSpectralInversion int inversion) {
+ if (TunerVersionChecker.checkHigherOrEqualVersionTo(
+ TunerVersionChecker.TUNER_VERSION_1_1, "setSpectralInversion")) {
+ mSpectralInversion = inversion;
+ }
+ }
+
+ /**
+ * Set End Frequency. This API is only supported with Tuner HAL 1.1 or higher. Otherwise it
+ * would be no-op.
+ *
+ * <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 endFrequency the end frequency used during blind scan. The default value is
+ * {@link android.media.tv.tuner.Tuner#INVALID_FRONTEND_SETTING_FREQUENCY}.
+ */
+ @IntRange(from = 1)
+ public void setEndFrequency(int endFrequency) {
+ if (TunerVersionChecker.checkHigherOrEqualVersionTo(
+ TunerVersionChecker.TUNER_VERSION_1_1, "setEndFrequency")) {
+ mEndFrequency = endFrequency;
+ }
+ }
}
diff --git a/non-updatable-api/system-current.txt b/non-updatable-api/system-current.txt
index 900f68b..fc6ff74 100644
--- a/non-updatable-api/system-current.txt
+++ b/non-updatable-api/system-current.txt
@@ -4995,6 +4995,7 @@
field public static final int INVALID_AV_SYNC_ID = -1; // 0xffffffff
field public static final int INVALID_FILTER_ID = -1; // 0xffffffff
field public static final long INVALID_FILTER_ID_64BIT = -1L; // 0xffffffffffffffffL
+ field public static final int INVALID_FRONTEND_SETTING_FREQUENCY = -1; // 0xffffffff
field public static final int INVALID_LTS_ID = -1; // 0xffffffff
field public static final int INVALID_MMTP_RECORD_EVENT_MPT_SEQUENCE_NUM = -1; // 0xffffffff
field public static final int INVALID_STREAM_ID = 65535; // 0xffff
@@ -5437,9 +5438,13 @@
public class AnalogFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
method @NonNull public static android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder builder();
+ method public int getAftFlag();
method public int getSifStandard();
method public int getSignalType();
method public int getType();
+ field public static final int AFT_FLAG_FALSE = 2; // 0x2
+ field public static final int AFT_FLAG_TRUE = 1; // 0x1
+ field public static final int AFT_FLAG_UNDEFINED = 0; // 0x0
field public static final int SIF_AUTO = 1; // 0x1
field public static final int SIF_BG = 2; // 0x2
field public static final int SIF_BG_A2 = 4; // 0x4
@@ -5472,6 +5477,7 @@
public static class AnalogFrontendSettings.Builder {
method @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings build();
+ method @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder setAftFlag(int);
method @IntRange(from=1) @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder setFrequency(int);
method @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder setSifStandard(int);
method @NonNull public android.media.tv.tuner.frontend.AnalogFrontendSettings.Builder setSignalType(int);
@@ -5601,6 +5607,7 @@
method public int getOuterFec();
method public int getSpectralInversion();
method public int getSymbolRate();
+ method public int getTimeInterleaveMode();
method public int getType();
field public static final int ANNEX_A = 1; // 0x1
field public static final int ANNEX_B = 2; // 0x2
@@ -5619,6 +5626,17 @@
field public static final int SPECTRAL_INVERSION_INVERTED = 2; // 0x2
field public static final int SPECTRAL_INVERSION_NORMAL = 1; // 0x1
field public static final int SPECTRAL_INVERSION_UNDEFINED = 0; // 0x0
+ field public static final int TIME_INTERLEAVE_MODE_128_1_0 = 2; // 0x2
+ field public static final int TIME_INTERLEAVE_MODE_128_1_1 = 4; // 0x4
+ field public static final int TIME_INTERLEAVE_MODE_128_2 = 128; // 0x80
+ field public static final int TIME_INTERLEAVE_MODE_128_3 = 256; // 0x100
+ field public static final int TIME_INTERLEAVE_MODE_128_4 = 512; // 0x200
+ field public static final int TIME_INTERLEAVE_MODE_16_8 = 32; // 0x20
+ field public static final int TIME_INTERLEAVE_MODE_32_4 = 16; // 0x10
+ field public static final int TIME_INTERLEAVE_MODE_64_2 = 8; // 0x8
+ field public static final int TIME_INTERLEAVE_MODE_8_16 = 64; // 0x40
+ field public static final int TIME_INTERLEAVE_MODE_AUTO = 1; // 0x1
+ field public static final int TIME_INTERLEAVE_MODE_UNDEFINED = 0; // 0x0
}
public static class DvbcFrontendSettings.Builder {
@@ -5630,6 +5648,7 @@
method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setOuterFec(int);
method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setSpectralInversion(int);
method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setSymbolRate(int);
+ method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setTimeInterleaveMode(int);
}
public class DvbsCodeRate {
@@ -5661,6 +5680,7 @@
method public int getModulation();
method public int getPilot();
method public int getRolloff();
+ method public int getScanType();
method public int getStandard();
method public int getSymbolRate();
method public int getType();
@@ -5691,6 +5711,11 @@
field public static final int ROLLOFF_0_35 = 1; // 0x1
field public static final int ROLLOFF_0_5 = 6; // 0x6
field public static final int ROLLOFF_UNDEFINED = 0; // 0x0
+ field public static final int SCAN_TYPE_DIRECT = 1; // 0x1
+ field public static final int SCAN_TYPE_DISEQC = 2; // 0x2
+ field public static final int SCAN_TYPE_JESS = 4; // 0x4
+ field public static final int SCAN_TYPE_UNDEFINED = 0; // 0x0
+ field public static final int SCAN_TYPE_UNICABLE = 3; // 0x3
field public static final int STANDARD_AUTO = 1; // 0x1
field public static final int STANDARD_S = 2; // 0x2
field public static final int STANDARD_S2 = 4; // 0x4
@@ -5708,6 +5733,7 @@
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setModulation(int);
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setPilot(int);
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setRolloff(int);
+ method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setScanType(int);
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setStandard(int);
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setSymbolRate(int);
method @NonNull public android.media.tv.tuner.frontend.DvbsFrontendSettings.Builder setVcmMode(int);
@@ -5760,10 +5786,14 @@
field public static final int CODERATE_AUTO = 1; // 0x1
field public static final int CODERATE_UNDEFINED = 0; // 0x0
field public static final int CONSTELLATION_16QAM = 4; // 0x4
+ field public static final int CONSTELLATION_16QAM_R = 64; // 0x40
field public static final int CONSTELLATION_256QAM = 16; // 0x10
+ field public static final int CONSTELLATION_256QAM_R = 256; // 0x100
field public static final int CONSTELLATION_64QAM = 8; // 0x8
+ field public static final int CONSTELLATION_64QAM_R = 128; // 0x80
field public static final int CONSTELLATION_AUTO = 1; // 0x1
field public static final int CONSTELLATION_QPSK = 2; // 0x2
+ field public static final int CONSTELLATION_QPSK_R = 32; // 0x20
field public static final int CONSTELLATION_UNDEFINED = 0; // 0x0
field public static final int GUARD_INTERVAL_19_128 = 64; // 0x40
field public static final int GUARD_INTERVAL_19_256 = 128; // 0x80
@@ -5797,6 +5827,9 @@
field public static final int TRANSMISSION_MODE_4K = 8; // 0x8
field public static final int TRANSMISSION_MODE_8K = 4; // 0x4
field public static final int TRANSMISSION_MODE_AUTO = 1; // 0x1
+ field public static final int TRANSMISSION_MODE_EXTENDED_16K = 256; // 0x100
+ field public static final int TRANSMISSION_MODE_EXTENDED_32K = 512; // 0x200
+ field public static final int TRANSMISSION_MODE_EXTENDED_8K = 128; // 0x80
field public static final int TRANSMISSION_MODE_UNDEFINED = 0; // 0x0
}
@@ -5834,8 +5867,12 @@
}
public abstract class FrontendSettings {
+ method public int getEndFrequency();
method public int getFrequency();
+ method public int getFrontendSpectralInversion();
method public abstract int getType();
+ method @IntRange(from=1) public void setEndFrequency(int);
+ method public void setSpectralInversion(int);
field public static final long FEC_11_15 = 4194304L; // 0x400000L
field public static final long FEC_11_20 = 8388608L; // 0x800000L
field public static final long FEC_11_45 = 16777216L; // 0x1000000L
@@ -5873,6 +5910,9 @@
field public static final long FEC_9_20 = 2097152L; // 0x200000L
field public static final long FEC_AUTO = 1L; // 0x1L
field public static final long FEC_UNDEFINED = 0L; // 0x0L
+ field public static final int FRONTEND_SPECTRAL_INVERSION_INVERTED = 2; // 0x2
+ field public static final int FRONTEND_SPECTRAL_INVERSION_NORMAL = 1; // 0x1
+ field public static final int FRONTEND_SPECTRAL_INVERSION_UNDEFINED = 0; // 0x0
field public static final int TYPE_ANALOG = 1; // 0x1
field public static final int TYPE_ATSC = 2; // 0x2
field public static final int TYPE_ATSC3 = 3; // 0x3