| /* |
| * Copyright 2019 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package android.media.tv.tuner.frontend; |
| |
| import android.annotation.IntDef; |
| import android.annotation.IntRange; |
| import android.annotation.NonNull; |
| import android.annotation.SystemApi; |
| import android.hardware.tv.tuner.V1_0.Constants; |
| |
| import java.lang.annotation.Retention; |
| import java.lang.annotation.RetentionPolicy; |
| |
| /** |
| * Frontend settings for analog tuner. |
| * |
| * @hide |
| */ |
| @SystemApi |
| public class AnalogFrontendSettings extends FrontendSettings { |
| /** @hide */ |
| @IntDef(flag = true, |
| prefix = "SIGNAL_TYPE_", |
| value = {SIGNAL_TYPE_UNDEFINED, SIGNAL_TYPE_AUTO, SIGNAL_TYPE_PAL, SIGNAL_TYPE_PAL_M, |
| SIGNAL_TYPE_PAL_N, SIGNAL_TYPE_PAL_60, SIGNAL_TYPE_NTSC, SIGNAL_TYPE_NTSC_443, |
| SIGNAL_TYPE_SECAM}) |
| @Retention(RetentionPolicy.SOURCE) |
| public @interface SignalType {} |
| |
| /** |
| * Undefined analog signal type. |
| */ |
| public static final int SIGNAL_TYPE_UNDEFINED = Constants.FrontendAnalogType.UNDEFINED; |
| /** |
| * AUTO analog signal type. |
| */ |
| public static final int SIGNAL_TYPE_AUTO = Constants.FrontendAnalogType.AUTO; |
| /** |
| * PAL analog signal type. |
| */ |
| public static final int SIGNAL_TYPE_PAL = Constants.FrontendAnalogType.PAL; |
| /** |
| * PAL M analog signal type. |
| */ |
| public static final int SIGNAL_TYPE_PAL_M = Constants.FrontendAnalogType.PAL_M; |
| /** |
| * PAL N analog signal type. |
| */ |
| public static final int SIGNAL_TYPE_PAL_N = Constants.FrontendAnalogType.PAL_N; |
| /** |
| * PAL 60 analog signal type. |
| */ |
| public static final int SIGNAL_TYPE_PAL_60 = Constants.FrontendAnalogType.PAL_60; |
| /** |
| * NTSC analog signal type. |
| */ |
| public static final int SIGNAL_TYPE_NTSC = Constants.FrontendAnalogType.NTSC; |
| /** |
| * NTSC 443 analog signal type. |
| */ |
| public static final int SIGNAL_TYPE_NTSC_443 = Constants.FrontendAnalogType.NTSC_443; |
| /** |
| * SECM analog signal type. |
| */ |
| public static final int SIGNAL_TYPE_SECAM = Constants.FrontendAnalogType.SECAM; |
| |
| /** @hide */ |
| @IntDef(flag = true, |
| prefix = "SIF_", |
| value = {SIF_UNDEFINED, SIF_AUTO, SIF_BG, SIF_BG_A2, SIF_BG_NICAM, SIF_I, SIF_DK, |
| SIF_DK1_A2, SIF_DK2_A2, SIF_DK3_A2, SIF_DK_NICAM, SIF_L, SIF_M, SIF_M_BTSC, SIF_M_A2, |
| SIF_M_EIAJ, SIF_I_NICAM, SIF_L_NICAM, SIF_L_PRIME}) |
| @Retention(RetentionPolicy.SOURCE) |
| public @interface SifStandard {} |
| |
| /** |
| * Undefined Analog Standard Interchange Format (SIF). |
| */ |
| public static final int SIF_UNDEFINED = Constants.FrontendAnalogSifStandard.UNDEFINED; |
| /** |
| * Audo Analog Standard Interchange Format (SIF). |
| */ |
| public static final int SIF_AUTO = Constants.FrontendAnalogSifStandard.AUTO; |
| /** |
| * BG Analog Standard Interchange Format (SIF). |
| */ |
| public static final int SIF_BG = Constants.FrontendAnalogSifStandard.BG; |
| /** |
| * BG-A2 Analog Standard Interchange Format (SIF). |
| */ |
| public static final int SIF_BG_A2 = Constants.FrontendAnalogSifStandard.BG_A2; |
| /** |
| * BG-NICAM Analog Standard Interchange Format (SIF). |
| */ |
| public static final int SIF_BG_NICAM = Constants.FrontendAnalogSifStandard.BG_NICAM; |
| /** |
| * I Analog Standard Interchange Format (SIF). |
| */ |
| public static final int SIF_I = Constants.FrontendAnalogSifStandard.I; |
| /** |
| * DK Analog Standard Interchange Format (SIF). |
| */ |
| public static final int SIF_DK = Constants.FrontendAnalogSifStandard.DK; |
| /** |
| * DK1 A2 Analog Standard Interchange Format (SIF). |
| */ |
| public static final int SIF_DK1_A2 = Constants.FrontendAnalogSifStandard.DK1_A2; |
| /** |
| * DK2 A2 Analog Standard Interchange Format (SIF). |
| */ |
| public static final int SIF_DK2_A2 = Constants.FrontendAnalogSifStandard.DK2_A2; |
| /** |
| * DK3 A2 Analog Standard Interchange Format (SIF). |
| */ |
| public static final int SIF_DK3_A2 = Constants.FrontendAnalogSifStandard.DK3_A2; |
| /** |
| * DK-NICAM Analog Standard Interchange Format (SIF). |
| */ |
| public static final int SIF_DK_NICAM = Constants.FrontendAnalogSifStandard.DK_NICAM; |
| /** |
| * L Analog Standard Interchange Format (SIF). |
| */ |
| public static final int SIF_L = Constants.FrontendAnalogSifStandard.L; |
| /** |
| * M Analog Standard Interchange Format (SIF). |
| */ |
| public static final int SIF_M = Constants.FrontendAnalogSifStandard.M; |
| /** |
| * M-BTSC Analog Standard Interchange Format (SIF). |
| */ |
| public static final int SIF_M_BTSC = Constants.FrontendAnalogSifStandard.M_BTSC; |
| /** |
| * M-A2 Analog Standard Interchange Format (SIF). |
| */ |
| public static final int SIF_M_A2 = Constants.FrontendAnalogSifStandard.M_A2; |
| /** |
| * M-EIAJ Analog Standard Interchange Format (SIF). |
| */ |
| public static final int SIF_M_EIAJ = Constants.FrontendAnalogSifStandard.M_EIAJ; |
| /** |
| * I-NICAM Analog Standard Interchange Format (SIF). |
| */ |
| public static final int SIF_I_NICAM = Constants.FrontendAnalogSifStandard.I_NICAM; |
| /** |
| * L-NICAM Analog Standard Interchange Format (SIF). |
| */ |
| public static final int SIF_L_NICAM = Constants.FrontendAnalogSifStandard.L_NICAM; |
| /** |
| * L-PRIME Analog Standard Interchange Format (SIF). |
| */ |
| public static final int SIF_L_PRIME = Constants.FrontendAnalogSifStandard.L_PRIME; |
| |
| |
| private final int mSignalType; |
| private final int mSifStandard; |
| |
| @Override |
| public int getType() { |
| return FrontendSettings.TYPE_ANALOG; |
| } |
| |
| |
| /** |
| * Gets analog signal type. |
| */ |
| @SignalType |
| public int getSignalType() { |
| return mSignalType; |
| } |
| |
| /** |
| * Gets Standard Interchange Format (SIF). |
| */ |
| @SifStandard |
| public int getSifStandard() { |
| return mSifStandard; |
| } |
| |
| /** |
| * Creates a builder for {@link AnalogFrontendSettings}. |
| */ |
| @NonNull |
| public static Builder builder() { |
| return new Builder(); |
| } |
| |
| private AnalogFrontendSettings(int frequency, int signalType, int sifStandard) { |
| super(frequency); |
| mSignalType = signalType; |
| mSifStandard = sifStandard; |
| } |
| |
| /** |
| * Builder for {@link AnalogFrontendSettings}. |
| */ |
| public static class Builder { |
| private int mFrequency = 0; |
| private int mSignalType = SIGNAL_TYPE_UNDEFINED; |
| private int mSifStandard = SIF_UNDEFINED; |
| |
| private Builder() {} |
| |
| /** |
| * Sets frequency in Hz. |
| * |
| * <p>Default value is 0. |
| */ |
| @NonNull |
| @IntRange(from = 1) |
| public Builder setFrequency(int frequency) { |
| mFrequency = frequency; |
| return this; |
| } |
| |
| /** |
| * Sets analog signal type. |
| * |
| * <p>Default value is {@link #SIGNAL_TYPE_UNDEFINED}. |
| */ |
| @NonNull |
| public Builder setSignalType(@SignalType int signalType) { |
| mSignalType = signalType; |
| return this; |
| } |
| |
| /** |
| * Sets Standard Interchange Format (SIF). |
| * |
| * <p>Default value is {@link #SIF_UNDEFINED}. |
| */ |
| @NonNull |
| public Builder setSifStandard(@SifStandard int sifStandard) { |
| mSifStandard = sifStandard; |
| return this; |
| } |
| |
| /** |
| * Builds a {@link AnalogFrontendSettings} object. |
| */ |
| @NonNull |
| public AnalogFrontendSettings build() { |
| return new AnalogFrontendSettings(mFrequency, mSignalType, mSifStandard); |
| } |
| } |
| } |