diff options
| author | 2020-08-06 13:48:57 -0700 | |
|---|---|---|
| committer | 2020-10-14 10:52:37 -0700 | |
| commit | 3e7c28632d1440b919ee9862f3daffd2c0a9540b (patch) | |
| tree | ef1293050d42fbf04dd4a7dab8e3e8e1199e84c6 | |
| parent | 377af5a74fe0e762d557d004c96300c2ef2af7ab (diff) | |
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
9 files changed, 478 insertions, 21 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index 648be0d74bae..d2b6af8ec914 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -5055,6 +5055,7 @@ package android.media.tv.tuner { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { } 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 @@ package android.media.tv.tuner.frontend { 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 867eab017a28..3252c90f0153 100644 --- a/media/java/android/media/tv/tuner/Tuner.java +++ b/media/java/android/media/tv/tuner/Tuner.java @@ -136,6 +136,11 @@ public class Tuner implements AutoCloseable { */ 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 1d36da34429e..c6a5bb045a1d 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.IntRange; 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 class AnalogFrontendSettings extends FrontendSettings { */ 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 @@ public class AnalogFrontendSettings extends FrontendSettings { } /** + * Gets AFT flag. + */ + @AftFlag + public int getAftFlag() { + return mAftFlag; + } + + /** * Creates a builder for {@link AnalogFrontendSettings}. */ @NonNull @@ -198,10 +230,11 @@ public class AnalogFrontendSettings extends FrontendSettings { 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 @@ public class AnalogFrontendSettings extends FrontendSettings { 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 @@ public class AnalogFrontendSettings extends FrontendSettings { } /** + * 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 @@ public class AnalogFrontendSettings extends FrontendSettings { */ @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 f9eabc5b50e5..ed1ce2d6a566 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 @@ public class Atsc3FrontendSettings extends FrontendSettings { */ @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 271e91e5cbb8..673268621d93 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.IntRange; 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 class DvbcFrontendSettings extends FrontendSettings { 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 @@ public class DvbcFrontendSettings extends FrontendSettings { 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 @@ public class DvbcFrontendSettings extends FrontendSettings { mOuterFec = outerFec; mAnnex = annex; mSpectralInversion = spectralInversion; + mInterleaveMode = interleaveMode; } /** @@ -196,10 +269,17 @@ public class DvbcFrontendSettings extends FrontendSettings { /** * 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 @@ public class DvbcFrontendSettings extends FrontendSettings { 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 @@ public class DvbcFrontendSettings extends FrontendSettings { /** * 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 @@ public class DvbcFrontendSettings extends FrontendSettings { @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 60b070fa1fa8..343dbb137dd6 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.Nullable; 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 @@ import java.lang.annotation.RetentionPolicy; 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 @@ public class DvbsFrontendSettings extends FrontendSettings { 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 @@ public class DvbsFrontendSettings extends FrontendSettings { mInputStreamId = inputStreamId; mStandard = standard; mVcmMode = vcm; + mScanType = scanType; } /** @@ -286,6 +330,13 @@ public class DvbsFrontendSettings extends FrontendSettings { public int getVcmMode() { return mVcmMode; } + /** + * Get scan type. + */ + @ScanType + public int getScanType() { + return mScanType; + } /** * Creates a builder for {@link DvbsFrontendSettings}. @@ -308,6 +359,7 @@ public class DvbsFrontendSettings extends FrontendSettings { 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 @@ public class DvbsFrontendSettings extends FrontendSettings { } /** + * 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 @@ public class DvbsFrontendSettings extends FrontendSettings { @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 5c057de7cfbe..07d179707b98 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.IntRange; 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 @@ public class DvbtFrontendSettings extends FrontendSettings { * 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 @@ public class DvbtFrontendSettings extends FrontendSettings { @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 class DvbtFrontendSettings extends FrontendSettings { */ 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 class DvbtFrontendSettings extends FrontendSettings { */ 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 @@ public class DvbtFrontendSettings extends FrontendSettings { 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 @@ public class DvbtFrontendSettings extends FrontendSettings { /** * 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 @@ public class DvbtFrontendSettings extends FrontendSettings { /** * 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 2f2fa97f4e7a..82f7afab23df 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 abstract class FrontendSettings { */ 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 abstract class FrontendSettings { 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 900f68b02be9..fc6ff746a8cb 100644 --- a/non-updatable-api/system-current.txt +++ b/non-updatable-api/system-current.txt @@ -4995,6 +4995,7 @@ package android.media.tv.tuner { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { 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 @@ package android.media.tv.tuner.frontend { } 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 @@ package android.media.tv.tuner.frontend { 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 |