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
This commit is contained in:
Amy Zhang
2020-08-06 13:48:57 -07:00
parent 377af5a74f
commit 3e7c28632d
9 changed files with 478 additions and 21 deletions

View File

@@ -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

View File

@@ -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})

View File

@@ -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() {
@@ -190,6 +214,14 @@ public class AnalogFrontendSettings extends FrontendSettings {
return mSifStandard;
}
/**
* Gets AFT flag.
*/
@AftFlag
public int getAftFlag() {
return mAftFlag;
}
/**
* Creates a builder for {@link AnalogFrontendSettings}.
*/
@@ -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() {}
@@ -226,6 +260,24 @@ public class AnalogFrontendSettings extends FrontendSettings {
return this;
}
/**
* 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.
*
@@ -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);
}
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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;
@@ -34,6 +36,44 @@ import java.lang.annotation.RetentionPolicy;
*/
@SystemApi
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_",
@@ -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() {
}
@@ -324,6 +376,24 @@ public class DvbsFrontendSettings extends FrontendSettings {
return this;
}
/**
* 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.
*
@@ -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);
}
}

View File

@@ -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;
}
/**

View File

@@ -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;
}
}
}

View File

@@ -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