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

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

Merge "Make Filter @SystemApi"

parents 30b7a575 7ea69206
Loading
Loading
Loading
Loading
+43 −17
Original line number Diff line number Diff line
@@ -4700,6 +4700,7 @@ package android.media.tv.tuner {
    ctor public Tuner(@NonNull android.content.Context);
    method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void clearOnTuneEventListener();
    method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public android.media.tv.tuner.Tuner.Descrambler openDescrambler();
    method @Nullable @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public android.media.tv.tuner.filter.Filter openFilter(int, int, long, @Nullable java.util.concurrent.Executor, @Nullable android.media.tv.tuner.filter.FilterCallback);
    method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void setOnTuneEventListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.frontend.OnTuneEventListener);
    method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int stopTune();
    method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int tune(@NonNull android.media.tv.tuner.frontend.FrontendSettings);
@@ -4708,19 +4709,7 @@ package android.media.tv.tuner {
  public class Tuner.Descrambler {
  }
  public class Tuner.Filter {
  }
  public static interface Tuner.FilterCallback {
    method public void onFilterEvent(@NonNull android.media.tv.tuner.Tuner.Filter, @NonNull android.media.tv.tuner.filter.FilterEvent[]);
    method public void onFilterStatusChanged(@NonNull android.media.tv.tuner.Tuner.Filter, int);
  }
  public final class TunerConstants {
    field public static final int FILTER_STATUS_DATA_READY = 1; // 0x1
    field public static final int FILTER_STATUS_HIGH_WATER = 4; // 0x4
    field public static final int FILTER_STATUS_LOW_WATER = 2; // 0x2
    field public static final int FILTER_STATUS_OVERFLOW = 8; // 0x8
    field public static final int RESULT_INVALID_ARGUMENT = 4; // 0x4
    field public static final int RESULT_INVALID_STATE = 3; // 0x3
    field public static final int RESULT_NOT_INITIALIZED = 2; // 0x2
@@ -4734,12 +4723,49 @@ package android.media.tv.tuner {
package android.media.tv.tuner.filter {
  public class Filter implements java.lang.AutoCloseable {
    method public void close();
    method public int configure(@NonNull android.media.tv.tuner.filter.FilterConfiguration);
    method public int flush();
    method public int getId();
    method public int read(@NonNull byte[], long, long);
    method public int setDataSource(@Nullable android.media.tv.tuner.filter.Filter);
    method public int start();
    method public int stop();
    field public static final int STATUS_DATA_READY = 1; // 0x1
    field public static final int STATUS_HIGH_WATER = 4; // 0x4
    field public static final int STATUS_LOW_WATER = 2; // 0x2
    field public static final int STATUS_OVERFLOW = 8; // 0x8
    field public static final int SUBTYPE_AUDIO = 3; // 0x3
    field public static final int SUBTYPE_DOWNLOAD = 5; // 0x5
    field public static final int SUBTYPE_IP = 13; // 0xd
    field public static final int SUBTYPE_IP_PAYLOAD = 12; // 0xc
    field public static final int SUBTYPE_MMTP = 10; // 0xa
    field public static final int SUBTYPE_NTP = 11; // 0xb
    field public static final int SUBTYPE_PAYLOAD_THROUGH = 14; // 0xe
    field public static final int SUBTYPE_PCR = 8; // 0x8
    field public static final int SUBTYPE_PES = 2; // 0x2
    field public static final int SUBTYPE_PTP = 16; // 0x10
    field public static final int SUBTYPE_RECORD = 6; // 0x6
    field public static final int SUBTYPE_SECTION = 1; // 0x1
    field public static final int SUBTYPE_TEMI = 9; // 0x9
    field public static final int SUBTYPE_TLV = 15; // 0xf
    field public static final int SUBTYPE_TS = 7; // 0x7
    field public static final int SUBTYPE_UNDEFINED = 0; // 0x0
    field public static final int SUBTYPE_VIDEO = 4; // 0x4
    field public static final int TYPE_ALP = 16; // 0x10
    field public static final int TYPE_IP = 4; // 0x4
    field public static final int TYPE_MMTP = 2; // 0x2
    field public static final int TYPE_TLV = 8; // 0x8
    field public static final int TYPE_TS = 1; // 0x1
  }
  public interface FilterCallback {
    method public void onFilterEvent(@NonNull android.media.tv.tuner.filter.Filter, @NonNull android.media.tv.tuner.filter.FilterEvent[]);
    method public void onFilterStatusChanged(@NonNull android.media.tv.tuner.filter.Filter, int);
  }
  public abstract class FilterConfiguration {
    field public static final int FILTER_TYPE_ALP = 16; // 0x10
    field public static final int FILTER_TYPE_IP = 4; // 0x4
    field public static final int FILTER_TYPE_MMTP = 2; // 0x2
    field public static final int FILTER_TYPE_TLV = 8; // 0x8
    field public static final int FILTER_TYPE_TS = 1; // 0x1
  }
  public abstract class FilterEvent {
+6 −5
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.annotation.IntDef;
import android.annotation.Nullable;
import android.annotation.Size;
import android.annotation.SystemApi;
import android.media.tv.tuner.filter.Filter;
import android.media.tv.tuner.filter.FilterConfiguration;

import java.lang.annotation.Retention;
@@ -36,11 +37,11 @@ public class DemuxCapabilities {

    /** @hide */
    @IntDef(flag = true, value = {
            FilterConfiguration.FILTER_TYPE_TS,
            FilterConfiguration.FILTER_TYPE_MMTP,
            FilterConfiguration.FILTER_TYPE_IP,
            FilterConfiguration.FILTER_TYPE_TLV,
            FilterConfiguration.FILTER_TYPE_ALP
            Filter.TYPE_TS,
            Filter.TYPE_MMTP,
            Filter.TYPE_IP,
            Filter.TYPE_TLV,
            Filter.TYPE_ALP
    })
    @Retention(RetentionPolicy.SOURCE)
    public @interface FilterCapabilities {}
+1 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ package android.media.tv.tuner;

import android.annotation.IntDef;
import android.annotation.Nullable;
import android.media.tv.tuner.Tuner.Filter;
import android.media.tv.tuner.filter.Filter;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+5 −40
Original line number Diff line number Diff line
@@ -23,14 +23,14 @@ import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.content.Context;
import android.media.tv.tuner.TunerConstants.FilterStatus;
import android.media.tv.tuner.TunerConstants.Result;
import android.media.tv.tuner.dvr.Dvr;
import android.media.tv.tuner.dvr.DvrCallback;
import android.media.tv.tuner.dvr.DvrSettings;
import android.media.tv.tuner.filter.Filter;
import android.media.tv.tuner.filter.Filter.Subtype;
import android.media.tv.tuner.filter.Filter.Type;
import android.media.tv.tuner.filter.FilterEvent;
import android.media.tv.tuner.filter.FilterCallback;
import android.media.tv.tuner.filter.TimeFilter;
import android.media.tv.tuner.frontend.FrontendInfo;
import android.media.tv.tuner.frontend.FrontendSettings;
@@ -171,28 +171,6 @@ public final class Tuner implements AutoCloseable {
    private static native DemuxCapabilities nativeGetDemuxCapabilities();


    /**
     * Callback interface for receiving information from the corresponding filters.
     * TODO: remove
     */
    public interface FilterCallback {
        /**
         * Invoked when there are filter events.
         *
         * @param filter the corresponding filter which sent the events.
         * @param events the filter events sent from the filter.
         */
        void onFilterEvent(@NonNull Filter filter, @NonNull FilterEvent[] events);
        /**
         * Invoked when filter status changed.
         *
         * @param filter the corresponding filter whose status is changed.
         * @param status the new status of the filter.
         */
        void onFilterStatusChanged(@NonNull Filter filter, @FilterStatus int status);
    }


    /**
     * Listener for resource lost.
     *
@@ -228,8 +206,8 @@ public final class Tuner implements AutoCloseable {
            switch (msg.what) {
                case MSG_ON_FILTER_STATUS: {
                    Filter filter = (Filter) msg.obj;
                    if (filter.mCallback != null) {
                        filter.mCallback.onFilterStatusChanged(filter, msg.arg1);
                    if (filter.getCallback() != null) {
                        filter.getCallback().onFilterStatusChanged(filter, msg.arg1);
                    }
                    break;
                }
@@ -548,17 +526,6 @@ public final class Tuner implements AutoCloseable {
        }
    }

    /**
     * Tuner data filter.
     *
     * <p> This class is used to filter wanted data according to the filter's configuration.
     * TODO: remove
     */
    public class Filter {
        FilterCallback mCallback;
        private Filter() {}
    }

    /**
     * Opens a filter object based on the given types and buffer size.
     *
@@ -570,8 +537,6 @@ public final class Tuner implements AutoCloseable {
     * executor is used if it's {@code null}.
     * @param cb the callback to receive notifications from filter.
     * @return the opened filter. {@code null} if the operation failed.
     *
     * @hide
     */
    @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
    @Nullable
@@ -582,7 +547,7 @@ public final class Tuner implements AutoCloseable {
        Filter filter = nativeOpenFilter(
                mainType, TunerUtils.getFilterSubtype(mainType, subType), bufferSize);
        if (filter != null) {
            filter.mCallback = cb;
            filter.setCallback(cb);
            if (mHandler == null) {
                mHandler = createEventHandler();
            }
+0 −31
Original line number Diff line number Diff line
@@ -47,37 +47,6 @@ public final class TunerConstants {
     */
    public static final int INVALID_STREAM_ID = Constants.Constant.INVALID_STREAM_ID;

    /** @hide */
    @IntDef(flag = true, prefix = "FILTER_STATUS_", value = {FILTER_STATUS_DATA_READY,
            FILTER_STATUS_LOW_WATER, FILTER_STATUS_HIGH_WATER, FILTER_STATUS_OVERFLOW})
    @Retention(RetentionPolicy.SOURCE)
    public @interface FilterStatus {}

    /**
     * The status of a filter that the data in the filter buffer is ready to be read.
     */
    public static final int FILTER_STATUS_DATA_READY = Constants.DemuxFilterStatus.DATA_READY;
    /**
     * The status of a filter that the amount of available data in the filter buffer is at low
     * level.
     *
     * The value is set to 25 percent of the buffer size by default. It can be changed when
     * configuring the filter.
     */
    public static final int FILTER_STATUS_LOW_WATER = Constants.DemuxFilterStatus.LOW_WATER;
    /**
     * The status of a filter that the amount of available data in the filter buffer is at high
     * level.
     * The value is set to 75 percent of the buffer size by default. It can be changed when
     * configuring the filter.
     */
    public static final int FILTER_STATUS_HIGH_WATER = Constants.DemuxFilterStatus.HIGH_WATER;
    /**
     * The status of a filter that the filter buffer is full and newly filtered data is being
     * discarded.
     */
    public static final int FILTER_STATUS_OVERFLOW = Constants.DemuxFilterStatus.OVERFLOW;


    /** @hide */
    @Retention(RetentionPolicy.SOURCE)
Loading