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

Commit cb40c6e7 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes I5d5896cc,I1cb68c6e,I1481b758

* changes:
  Unhide more methods of Tuner.java
  Unhide Frontend related methods in Tuner.java
  Unhide FrontendSettings part 2
parents 5a1f7436 ef400ab3
Loading
Loading
Loading
Loading
+615 −17

File changed.

Preview size limit exceeded, changes collapsed.

+16 −70
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.content.Context;
import android.media.tv.TvInputService;
import android.media.tv.tuner.TunerConstants.Result;
import android.media.tv.tuner.dvr.DvrPlayback;
import android.media.tv.tuner.dvr.DvrRecorder;
@@ -55,7 +56,7 @@ import java.util.concurrent.Executor;
 * @hide
 */
@SystemApi
public final class Tuner implements AutoCloseable  {
public class Tuner implements AutoCloseable  {
    private static final String TAG = "MediaTvTuner";
    private static final boolean DEBUG = false;

@@ -85,28 +86,16 @@ public final class Tuner implements AutoCloseable {
    @Nullable
    private Executor mScanCallbackExecutor;

    /**
     * Constructs a Tuner instance.
     *
     * @param context context of the caller.
     */
    public Tuner(@NonNull Context context) {
        mContext = context;
        nativeSetup();
    }

    /**
     * Constructs a Tuner instance.
     *
     * @param context the context of the caller.
     * @param tvInputSessionId the session ID of the TV input.
     * @param useCase the use case of this Tuner instance.
     *
     * @hide
     * TODO: replace the other constructor
     */
    @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
    public Tuner(@NonNull Context context, @NonNull String tvInputSessionId, int useCase,
    public Tuner(@NonNull Context context, @NonNull String tvInputSessionId,
            @TvInputService.PriorityHintUseCaseType int useCase,
            @Nullable OnResourceLostListener listener) {
        mContext = context;
    }
@@ -115,18 +104,21 @@ public final class Tuner implements AutoCloseable {
     * Shares the frontend resource with another Tuner instance
     *
     * @param tuner the Tuner instance to share frontend resource with.
     *
     * @hide
     */
    public void shareFrontendFromTuner(@NonNull Tuner tuner) {
        // TODO: implementation.
    }


    private long mNativeContext; // used by native jMediaTuner

    /** @hide */
    /**
     * Releases the Tuner instance.
     */
    @Override
    public void close() {}
    public void close() {
        // TODO: implementation.
    }

    /**
     * Native Initialization.
@@ -176,7 +168,7 @@ public final class Tuner implements AutoCloseable {
    /**
     * Listener for resource lost.
     *
     * @hide
     * <p>Resource is reclaimed and tuner instance is forced to close.
     */
    public interface OnResourceLostListener {
        /**
@@ -269,8 +261,8 @@ public final class Tuner implements AutoCloseable {
     * start a new tuning.
     *
     * <p>
     * Tune is an async call, with {@link OnTuneEventListener#LOCKED LOCKED} and {@link
     * OnTuneEventListener#NO_SIGNAL NO_SIGNAL} events sent to the {@link OnTuneEventListener}
     * Tune is an async call, with {@link OnTuneEventListener#SIGNAL_LOCKED} and {@link
     * OnTuneEventListener#SIGNAL_NO_SIGNAL} events sent to the {@link OnTuneEventListener}
     * specified in {@link #setOnTuneEventListener(Executor, OnTuneEventListener)}.
     *
     * @param settings Signal delivery information the frontend uses to
@@ -357,13 +349,9 @@ public final class Tuner implements AutoCloseable {
     * @param lnb the LNB instance.
     *
     * @return result status of the operation.
     *
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
    @Result
    public int setLnb(@NonNull Lnb lnb) {
        TunerUtils.checkTunerPermission(mContext);
    private int setLnb(@NonNull Lnb lnb) {
        return nativeSetLnb(lnb.mId);
    }

@@ -373,8 +361,6 @@ public final class Tuner implements AutoCloseable {
     * @param enable {@code true} to activate LNA module; {@code false} to deactivate LNA.
     *
     * @return result status of the operation.
     *
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
    @Result
@@ -390,10 +376,9 @@ public final class Tuner implements AutoCloseable {
     *
     * @param statusTypes an array of status types which the caller requests.
     * @return statuses which response the caller's requests.
     * @hide
     */
    @Nullable
    public FrontendStatus getFrontendStatus(int[] statusTypes) {
    public FrontendStatus getFrontendStatus(@NonNull int[] statusTypes) {
        return nativeGetFrontendStatus(statusTypes);
    }

@@ -402,8 +387,6 @@ public final class Tuner implements AutoCloseable {
     *
     * @param filter the filter instance for the hardware sync ID.
     * @return the id of hardware A/V sync.
     *
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
    public int getAvSyncHwId(@NonNull Filter filter) {
@@ -419,8 +402,6 @@ public final class Tuner implements AutoCloseable {
     *
     * @param avSyncHwId the hardware id of A/V sync.
     * @return the current timestamp of hardware A/V sync.
     *
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
    public long getAvSyncTime(int avSyncHwId) {
@@ -436,8 +417,6 @@ public final class Tuner implements AutoCloseable {
     *
     * @param ciCamId specify CI-CAM Id to connect.
     * @return result status of the operation.
     *
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
    @Result
@@ -452,8 +431,6 @@ public final class Tuner implements AutoCloseable {
     * <p>The demux will use the output from the frontend as the input after this call.
     *
     * @return result status of the operation.
     *
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
    @Result
@@ -466,8 +443,6 @@ public final class Tuner implements AutoCloseable {
     * Gets the frontend information.
     *
     * @return The frontend information. {@code null} if the operation failed.
     *
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
    @Nullable
@@ -479,24 +454,8 @@ public final class Tuner implements AutoCloseable {
        return nativeGetFrontendInfo(mFrontend.mId);
    }

    /**
     * Gets the frontend ID.
     *
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
    public int getFrontendId() {
        TunerUtils.checkTunerPermission(mContext);
        if (mFrontend == null) {
            throw new IllegalStateException("frontend is not initialized");
        }
        return mFrontend.mId;
    }

    /**
     * Gets Demux capabilities.
     *
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
    @Nullable
@@ -621,19 +580,6 @@ public final class Tuner implements AutoCloseable {
        }
    }

    /**
     * This class is used to interact with descramblers.
     *
     * <p> Descrambler is a hardware component used to descramble data.
     *
     * <p> This class controls the TIS interaction with Tuner HAL.
     * TODO: Remove
     */
    public class Descrambler {
        private Descrambler() {
        }
    }

    /**
     * Opens a Descrambler in tuner.
     *
+1 −353
Original line number Diff line number Diff line
@@ -17,14 +17,8 @@
package android.media.tv.tuner;

import android.annotation.IntDef;
import android.annotation.LongDef;
import android.annotation.SystemApi;
import android.hardware.tv.tuner.V1_0.Constants;
import android.media.tv.tuner.frontend.DvbcFrontendSettings;
import android.media.tv.tuner.frontend.DvbsFrontendSettings;
import android.media.tv.tuner.frontend.Isdbs3FrontendSettings;
import android.media.tv.tuner.frontend.IsdbsFrontendSettings;
import android.media.tv.tuner.frontend.IsdbtFrontendSettings;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -38,12 +32,10 @@ import java.lang.annotation.RetentionPolicy;
public final class TunerConstants {
    /**
     * Invalid TS packet ID.
     * @hide
     */
    public static final int INVALID_TS_PID = Constants.Constant.INVALID_TS_PID;
    /**
     * Invalid stream ID.
     * @hide
     */
    public static final int INVALID_STREAM_ID = Constants.Constant.INVALID_STREAM_ID;

@@ -58,7 +50,7 @@ public final class TunerConstants {
    /**
     * Scan type auto.
     *
     * <p> Tuner will send {@link #onLocked}
     * <p> Tuner will send {@link android.media.tv.tuner.frontend.ScanCallback#onLocked}
     */
    public static final int SCAN_TYPE_AUTO = Constants.FrontendScanType.SCAN_AUTO;
    /**
@@ -69,350 +61,6 @@ public final class TunerConstants {
     */
    public static final int SCAN_TYPE_BLIND = Constants.FrontendScanType.SCAN_BLIND;

    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
    @IntDef(prefix = "INDEX_TYPE_", value =
            {INDEX_TYPE_NONE, INDEX_TYPE_SC, INDEX_TYPE_SC_HEVC})
    public @interface ScIndexType {}

    /**
     * Start Code Index is not used.
     * @hide
     */
    public static final int INDEX_TYPE_NONE = Constants.DemuxRecordScIndexType.NONE;
    /**
     * Start Code index.
     * @hide
     */
    public static final int INDEX_TYPE_SC = Constants.DemuxRecordScIndexType.SC;
    /**
     * Start Code index for HEVC.
     * @hide
     */
    public static final int INDEX_TYPE_SC_HEVC = Constants.DemuxRecordScIndexType.SC_HEVC;

    /**
     * Indexes can be tagged by Start Code in PES (Packetized Elementary Stream)
     * according to ISO/IEC 13818-1.
     * @hide
     */
    @IntDef(flag = true, value = {SC_INDEX_I_FRAME, SC_INDEX_P_FRAME, SC_INDEX_B_FRAME,
            SC_INDEX_SEQUENCE})
    @Retention(RetentionPolicy.SOURCE)
    public @interface ScIndex {}

    /**
     * SC index for a new I-frame.
     */
    public static final int SC_INDEX_I_FRAME = Constants.DemuxScIndex.I_FRAME;
    /**
     * SC index for a new P-frame.
     */
    public static final int SC_INDEX_P_FRAME = Constants.DemuxScIndex.P_FRAME;
    /**
     * SC index for a new B-frame.
     */
    public static final int SC_INDEX_B_FRAME = Constants.DemuxScIndex.B_FRAME;
    /**
     * SC index for a new sequence.
     */
    public static final int SC_INDEX_SEQUENCE = Constants.DemuxScIndex.SEQUENCE;


    /**
     * Indexes can be tagged by NAL unit group in HEVC according to ISO/IEC 23008-2.
     *
     * @hide
     */
    @IntDef(flag = true,
            value = {SC_HEVC_INDEX_SPS, SC_HEVC_INDEX_AUD, SC_HEVC_INDEX_SLICE_CE_BLA_W_LP,
            SC_HEVC_INDEX_SLICE_BLA_W_RADL, SC_HEVC_INDEX_SLICE_BLA_N_LP,
            SC_HEVC_INDEX_SLICE_IDR_W_RADL, SC_HEVC_INDEX_SLICE_IDR_N_LP,
            SC_HEVC_INDEX_SLICE_TRAIL_CRA})
    @Retention(RetentionPolicy.SOURCE)
    public @interface ScHevcIndex {}

    /**
     * SC HEVC index SPS.
     */
    public static final int SC_HEVC_INDEX_SPS = Constants.DemuxScHevcIndex.SPS;
    /**
     * SC HEVC index AUD.
     */
    public static final int SC_HEVC_INDEX_AUD = Constants.DemuxScHevcIndex.AUD;
    /**
     * SC HEVC index SLICE_CE_BLA_W_LP.
     */
    public static final int SC_HEVC_INDEX_SLICE_CE_BLA_W_LP =
            Constants.DemuxScHevcIndex.SLICE_CE_BLA_W_LP;
    /**
     * SC HEVC index SLICE_BLA_W_RADL.
     */
    public static final int SC_HEVC_INDEX_SLICE_BLA_W_RADL =
            Constants.DemuxScHevcIndex.SLICE_BLA_W_RADL;
    /**
     * SC HEVC index SLICE_BLA_N_LP.
     */
    public static final int SC_HEVC_INDEX_SLICE_BLA_N_LP =
            Constants.DemuxScHevcIndex.SLICE_BLA_N_LP;
    /**
     * SC HEVC index SLICE_IDR_W_RADL.
     */
    public static final int SC_HEVC_INDEX_SLICE_IDR_W_RADL =
            Constants.DemuxScHevcIndex.SLICE_IDR_W_RADL;
    /**
     * SC HEVC index SLICE_IDR_N_LP.
     */
    public static final int SC_HEVC_INDEX_SLICE_IDR_N_LP =
            Constants.DemuxScHevcIndex.SLICE_IDR_N_LP;
    /**
     * SC HEVC index SLICE_TRAIL_CRA.
     */
    public static final int SC_HEVC_INDEX_SLICE_TRAIL_CRA =
            Constants.DemuxScHevcIndex.SLICE_TRAIL_CRA;

    /** @hide */
    @LongDef({FEC_UNDEFINED, FEC_AUTO, FEC_1_2, FEC_1_3, FEC_1_4, FEC_1_5, FEC_2_3, FEC_2_5,
            FEC_2_9, FEC_3_4, FEC_3_5, FEC_4_5, FEC_4_15, FEC_5_6, FEC_5_9, FEC_6_7, FEC_7_8,
            FEC_7_9, FEC_7_15, FEC_8_9, FEC_8_15, FEC_9_10, FEC_9_20, FEC_11_15, FEC_11_20,
            FEC_11_45, FEC_13_18, FEC_13_45, FEC_14_45, FEC_23_36, FEC_25_36, FEC_26_45, FEC_28_45,
            FEC_29_45, FEC_31_45, FEC_32_45, FEC_77_90})
    @Retention(RetentionPolicy.SOURCE)
    public @interface FrontendInnerFec {}

    /**
     * FEC not defined
     * @hide
     */
    public static final long FEC_UNDEFINED = Constants.FrontendInnerFec.FEC_UNDEFINED;
    /**
     * hardware is able to detect and set FEC automatically
     * @hide
     */
    public static final long FEC_AUTO = Constants.FrontendInnerFec.AUTO;
    /**
     * 1/2 conv. code rate
     * @hide
     */
    public static final long FEC_1_2 = Constants.FrontendInnerFec.FEC_1_2;
    /**
     * 1/3 conv. code rate
     * @hide
     */
    public static final long FEC_1_3 = Constants.FrontendInnerFec.FEC_1_3;
    /**
     * 1/4 conv. code rate
     * @hide
     */
    public static final long FEC_1_4 = Constants.FrontendInnerFec.FEC_1_4;
    /**
     * 1/5 conv. code rate
     * @hide
     */
    public static final long FEC_1_5 = Constants.FrontendInnerFec.FEC_1_5;
    /**
     * 2/3 conv. code rate
     * @hide
     */
    public static final long FEC_2_3 = Constants.FrontendInnerFec.FEC_2_3;
    /**
     * 2/5 conv. code rate
     * @hide
     */
    public static final long FEC_2_5 = Constants.FrontendInnerFec.FEC_2_5;
    /**
     * 2/9 conv. code rate
     * @hide
     */
    public static final long FEC_2_9 = Constants.FrontendInnerFec.FEC_2_9;
    /**
     * 3/4 conv. code rate
     * @hide
     */
    public static final long FEC_3_4 = Constants.FrontendInnerFec.FEC_3_4;
    /**
     * 3/5 conv. code rate
     * @hide
     */
    public static final long FEC_3_5 = Constants.FrontendInnerFec.FEC_3_5;
    /**
     * 4/5 conv. code rate
     * @hide
     */
    public static final long FEC_4_5 = Constants.FrontendInnerFec.FEC_4_5;
    /**
     * 4/15 conv. code rate
     * @hide
     */
    public static final long FEC_4_15 = Constants.FrontendInnerFec.FEC_4_15;
    /**
     * 5/6 conv. code rate
     * @hide
     */
    public static final long FEC_5_6 = Constants.FrontendInnerFec.FEC_5_6;
    /**
     * 5/9 conv. code rate
     * @hide
     */
    public static final long FEC_5_9 = Constants.FrontendInnerFec.FEC_5_9;
    /**
     * 6/7 conv. code rate
     * @hide
     */
    public static final long FEC_6_7 = Constants.FrontendInnerFec.FEC_6_7;
    /**
     * 7/8 conv. code rate
     * @hide
     */
    public static final long FEC_7_8 = Constants.FrontendInnerFec.FEC_7_8;
    /**
     * 7/9 conv. code rate
     * @hide
     */
    public static final long FEC_7_9 = Constants.FrontendInnerFec.FEC_7_9;
    /**
     * 7/15 conv. code rate
     * @hide
     */
    public static final long FEC_7_15 = Constants.FrontendInnerFec.FEC_7_15;
    /**
     * 8/9 conv. code rate
     * @hide
     */
    public static final long FEC_8_9 = Constants.FrontendInnerFec.FEC_8_9;
    /**
     * 8/15 conv. code rate
     * @hide
     */
    public static final long FEC_8_15 = Constants.FrontendInnerFec.FEC_8_15;
    /**
     * 9/10 conv. code rate
     * @hide
     */
    public static final long FEC_9_10 = Constants.FrontendInnerFec.FEC_9_10;
    /**
     * 9/20 conv. code rate
     * @hide
     */
    public static final long FEC_9_20 = Constants.FrontendInnerFec.FEC_9_20;
    /**
     * 11/15 conv. code rate
     * @hide
     */
    public static final long FEC_11_15 = Constants.FrontendInnerFec.FEC_11_15;
    /**
     * 11/20 conv. code rate
     * @hide
     */
    public static final long FEC_11_20 = Constants.FrontendInnerFec.FEC_11_20;
    /**
     * 11/45 conv. code rate
     * @hide
     */
    public static final long FEC_11_45 = Constants.FrontendInnerFec.FEC_11_45;
    /**
     * 13/18 conv. code rate
     * @hide
     */
    public static final long FEC_13_18 = Constants.FrontendInnerFec.FEC_13_18;
    /**
     * 13/45 conv. code rate
     * @hide
     */
    public static final long FEC_13_45 = Constants.FrontendInnerFec.FEC_13_45;
    /**
     * 14/45 conv. code rate
     * @hide
     */
    public static final long FEC_14_45 = Constants.FrontendInnerFec.FEC_14_45;
    /**
     * 23/36 conv. code rate
     * @hide
     */
    public static final long FEC_23_36 = Constants.FrontendInnerFec.FEC_23_36;
    /**
     * 25/36 conv. code rate
     * @hide
     */
    public static final long FEC_25_36 = Constants.FrontendInnerFec.FEC_25_36;
    /**
     * 26/45 conv. code rate
     * @hide
     */
    public static final long FEC_26_45 = Constants.FrontendInnerFec.FEC_26_45;
    /**
     * 28/45 conv. code rate
     * @hide
     */
    public static final long FEC_28_45 = Constants.FrontendInnerFec.FEC_28_45;
    /**
     * 29/45 conv. code rate
     * @hide
     */
    public static final long FEC_29_45 = Constants.FrontendInnerFec.FEC_29_45;
    /**
     * 31/45 conv. code rate
     * @hide
     */
    public static final long FEC_31_45 = Constants.FrontendInnerFec.FEC_31_45;
    /**
     * 32/45 conv. code rate
     * @hide
     */
    public static final long FEC_32_45 = Constants.FrontendInnerFec.FEC_32_45;
    /**
     * 77/90 conv. code rate
     * @hide
     */
    public static final long FEC_77_90 = Constants.FrontendInnerFec.FEC_77_90;


    /** @hide */
    @IntDef(value = {
            DvbcFrontendSettings.MODULATION_UNDEFINED,
            DvbcFrontendSettings.MODULATION_AUTO,
            DvbcFrontendSettings.MODULATION_MOD_16QAM,
            DvbcFrontendSettings.MODULATION_MOD_32QAM,
            DvbcFrontendSettings.MODULATION_MOD_64QAM,
            DvbcFrontendSettings.MODULATION_MOD_128QAM,
            DvbcFrontendSettings.MODULATION_MOD_256QAM,
            DvbsFrontendSettings.MODULATION_UNDEFINED,
            DvbsFrontendSettings.MODULATION_AUTO,
            DvbsFrontendSettings.MODULATION_MOD_QPSK,
            DvbsFrontendSettings.MODULATION_MOD_8PSK,
            DvbsFrontendSettings.MODULATION_MOD_16QAM,
            DvbsFrontendSettings.MODULATION_MOD_16PSK,
            DvbsFrontendSettings.MODULATION_MOD_32PSK,
            DvbsFrontendSettings.MODULATION_MOD_ACM,
            DvbsFrontendSettings.MODULATION_MOD_8APSK,
            DvbsFrontendSettings.MODULATION_MOD_16APSK,
            DvbsFrontendSettings.MODULATION_MOD_32APSK,
            DvbsFrontendSettings.MODULATION_MOD_64APSK,
            DvbsFrontendSettings.MODULATION_MOD_128APSK,
            DvbsFrontendSettings.MODULATION_MOD_256APSK,
            DvbsFrontendSettings.MODULATION_MOD_RESERVED,
            IsdbsFrontendSettings.MODULATION_UNDEFINED,
            IsdbsFrontendSettings.MODULATION_AUTO,
            IsdbsFrontendSettings.MODULATION_MOD_BPSK,
            IsdbsFrontendSettings.MODULATION_MOD_QPSK,
            IsdbsFrontendSettings.MODULATION_MOD_TC8PSK,
            Isdbs3FrontendSettings.MODULATION_UNDEFINED,
            Isdbs3FrontendSettings.MODULATION_AUTO,
            Isdbs3FrontendSettings.MODULATION_MOD_BPSK,
            Isdbs3FrontendSettings.MODULATION_MOD_QPSK,
            Isdbs3FrontendSettings.MODULATION_MOD_8PSK,
            Isdbs3FrontendSettings.MODULATION_MOD_16APSK,
            Isdbs3FrontendSettings.MODULATION_MOD_32APSK,
            IsdbtFrontendSettings.MODULATION_UNDEFINED,
            IsdbtFrontendSettings.MODULATION_AUTO,
            IsdbtFrontendSettings.MODULATION_MOD_DQPSK,
            IsdbtFrontendSettings.MODULATION_MOD_QPSK,
            IsdbtFrontendSettings.MODULATION_MOD_16QAM,
            IsdbtFrontendSettings.MODULATION_MOD_64QAM})
    @Retention(RetentionPolicy.SOURCE)
    public @interface FrontendModulation {}


    /** @hide */
    @IntDef({RESULT_SUCCESS, RESULT_UNAVAILABLE, RESULT_NOT_INITIALIZED, RESULT_INVALID_STATE,
            RESULT_INVALID_ARGUMENT, RESULT_OUT_OF_MEMORY, RESULT_UNKNOWN_ERROR})
+113 −14
Original line number Diff line number Diff line
@@ -22,8 +22,6 @@ import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.content.Context;
import android.hardware.tv.tuner.V1_0.Constants;
import android.media.tv.tuner.TunerConstants;
import android.media.tv.tuner.TunerConstants.ScIndexType;
import android.media.tv.tuner.TunerUtils;

import java.lang.annotation.Retention;
@@ -112,29 +110,130 @@ public class RecordSettings extends Settings {
     */
    public static final int TS_INDEX_ADAPTATION_EXTENSION_FLAG =
            Constants.DemuxTsIndex.ADAPTATION_EXTENSION_FLAG;

    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
    @IntDef(prefix = "INDEX_TYPE_", value =
            {INDEX_TYPE_NONE, INDEX_TYPE_SC, INDEX_TYPE_SC_HEVC})
    public @interface ScIndexType {}

    /**
     * Start Code Index is not used.
     */
    public static final int INDEX_TYPE_NONE = Constants.DemuxRecordScIndexType.NONE;
    /**
     * Start Code index.
     */
    public static final int INDEX_TYPE_SC = Constants.DemuxRecordScIndexType.SC;
    /**
     * Start Code index for HEVC.
     */
    public static final int INDEX_TYPE_SC_HEVC = Constants.DemuxRecordScIndexType.SC_HEVC;

    /**
     * Indexes can be tagged by Start Code in PES (Packetized Elementary Stream)
     * according to ISO/IEC 13818-1.
     * @hide
     */
    @IntDef(flag = true, value = {SC_INDEX_I_FRAME, SC_INDEX_P_FRAME, SC_INDEX_B_FRAME,
            SC_INDEX_SEQUENCE})
    @Retention(RetentionPolicy.SOURCE)
    public @interface ScIndex {}

    /**
     * SC index for a new I-frame.
     */
    public static final int SC_INDEX_I_FRAME = Constants.DemuxScIndex.I_FRAME;
    /**
     * SC index for a new P-frame.
     */
    public static final int SC_INDEX_P_FRAME = Constants.DemuxScIndex.P_FRAME;
    /**
     * SC index for a new B-frame.
     */
    public static final int SC_INDEX_B_FRAME = Constants.DemuxScIndex.B_FRAME;
    /**
     * SC index for a new sequence.
     */
    public static final int SC_INDEX_SEQUENCE = Constants.DemuxScIndex.SEQUENCE;


    /**
     * Indexes can be tagged by NAL unit group in HEVC according to ISO/IEC 23008-2.
     *
     * @hide
     */
    @IntDef(flag = true,
            value = {SC_HEVC_INDEX_SPS, SC_HEVC_INDEX_AUD, SC_HEVC_INDEX_SLICE_CE_BLA_W_LP,
            SC_HEVC_INDEX_SLICE_BLA_W_RADL, SC_HEVC_INDEX_SLICE_BLA_N_LP,
            SC_HEVC_INDEX_SLICE_IDR_W_RADL, SC_HEVC_INDEX_SLICE_IDR_N_LP,
            SC_HEVC_INDEX_SLICE_TRAIL_CRA})
    @Retention(RetentionPolicy.SOURCE)
    public @interface ScHevcIndex {}

    /**
     * SC HEVC index SPS.
     */
    public static final int SC_HEVC_INDEX_SPS = Constants.DemuxScHevcIndex.SPS;
    /**
     * SC HEVC index AUD.
     */
    public static final int SC_HEVC_INDEX_AUD = Constants.DemuxScHevcIndex.AUD;
    /**
     * SC HEVC index SLICE_CE_BLA_W_LP.
     */
    public static final int SC_HEVC_INDEX_SLICE_CE_BLA_W_LP =
            Constants.DemuxScHevcIndex.SLICE_CE_BLA_W_LP;
    /**
     * SC HEVC index SLICE_BLA_W_RADL.
     */
    public static final int SC_HEVC_INDEX_SLICE_BLA_W_RADL =
            Constants.DemuxScHevcIndex.SLICE_BLA_W_RADL;
    /**
     * SC HEVC index SLICE_BLA_N_LP.
     */
    public static final int SC_HEVC_INDEX_SLICE_BLA_N_LP =
            Constants.DemuxScHevcIndex.SLICE_BLA_N_LP;
    /**
     * SC HEVC index SLICE_IDR_W_RADL.
     */
    public static final int SC_HEVC_INDEX_SLICE_IDR_W_RADL =
            Constants.DemuxScHevcIndex.SLICE_IDR_W_RADL;
    /**
     * SC HEVC index SLICE_IDR_N_LP.
     */
    public static final int SC_HEVC_INDEX_SLICE_IDR_N_LP =
            Constants.DemuxScHevcIndex.SLICE_IDR_N_LP;
    /**
     * SC HEVC index SLICE_TRAIL_CRA.
     */
    public static final int SC_HEVC_INDEX_SLICE_TRAIL_CRA =
            Constants.DemuxScHevcIndex.SLICE_TRAIL_CRA;

    /**
     * @hide
     */
    @IntDef(flag = true,
            prefix = "SC_",
            value = {
                TunerConstants.SC_INDEX_I_FRAME,
                TunerConstants.SC_INDEX_P_FRAME,
                TunerConstants.SC_INDEX_B_FRAME,
                TunerConstants.SC_INDEX_SEQUENCE,
                TunerConstants.SC_HEVC_INDEX_SPS,
                TunerConstants.SC_HEVC_INDEX_AUD,
                TunerConstants.SC_HEVC_INDEX_SLICE_CE_BLA_W_LP,
                TunerConstants.SC_HEVC_INDEX_SLICE_BLA_W_RADL,
                TunerConstants.SC_HEVC_INDEX_SLICE_BLA_N_LP,
                TunerConstants.SC_HEVC_INDEX_SLICE_IDR_W_RADL,
                TunerConstants.SC_HEVC_INDEX_SLICE_IDR_N_LP,
                TunerConstants.SC_HEVC_INDEX_SLICE_TRAIL_CRA,
                SC_INDEX_I_FRAME,
                SC_INDEX_P_FRAME,
                SC_INDEX_B_FRAME,
                SC_INDEX_SEQUENCE,
                SC_HEVC_INDEX_SPS,
                SC_HEVC_INDEX_AUD,
                SC_HEVC_INDEX_SLICE_CE_BLA_W_LP,
                SC_HEVC_INDEX_SLICE_BLA_W_RADL,
                SC_HEVC_INDEX_SLICE_BLA_N_LP,
                SC_HEVC_INDEX_SLICE_IDR_W_RADL,
                SC_HEVC_INDEX_SLICE_IDR_N_LP,
                SC_HEVC_INDEX_SLICE_TRAIL_CRA,
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface ScIndexMask {}



    private final int mTsIndexMask;
    private final int mScIndexType;
    private final int mScIndexMask;
+3 −0
Original line number Diff line number Diff line
@@ -16,11 +16,14 @@

package android.media.tv.tuner.frontend;

import android.annotation.SystemApi;

/**
 * Capabilities for analog tuners.
 *
 * @hide
 */
@SystemApi
public class AnalogFrontendCapabilities extends FrontendCapabilities {
    @AnalogFrontendSettings.SignalType
    private final int mTypeCap;
Loading