Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3e7c2863 authored by Amy Zhang's avatar Amy Zhang
Browse files

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
parent 377af5a7
Loading
Loading
Loading
Loading
+40 −0
Original line number Diff line number Diff line
@@ -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
+5 −0
Original line number Diff line number Diff line
@@ -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})
+54 −2
Original line number Diff line number Diff line
@@ -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);
        }
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -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);
        }
    }

+104 −6
Original line number Diff line number Diff line
@@ -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);
        }
    }

Loading