Merge "Make Filter @SystemApi"

This commit is contained in:
TreeHugger Robot
2020-01-21 01:03:29 +00:00
committed by Android (Google) Code Review
24 changed files with 119 additions and 172 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -20,8 +20,8 @@ import android.annotation.BytesLong;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.hardware.tv.tuner.V1_0.Constants;
import android.media.tv.tuner.Tuner.Filter;
import android.media.tv.tuner.TunerConstants.Result;
import android.media.tv.tuner.filter.Filter;
import android.os.ParcelFileDescriptor;
import java.lang.annotation.Retention;

View File

@@ -16,8 +16,8 @@
package android.media.tv.tuner.dvr;
import android.media.tv.tuner.TunerConstants.FilterStatus;
import android.media.tv.tuner.dvr.Dvr.PlaybackStatus;
import android.media.tv.tuner.filter.Filter;
/**
* Callback interface for receiving information from DVR interfaces.
@@ -28,7 +28,7 @@ public interface DvrCallback {
/**
* Invoked when record status changed.
*/
void onRecordStatusChanged(@FilterStatus int status);
void onRecordStatusChanged(@Filter.Status int status);
/**
* Invoked when playback status changed.
*/

View File

@@ -22,8 +22,8 @@ import android.annotation.NonNull;
import android.annotation.RequiresPermission;
import android.content.Context;
import android.hardware.tv.tuner.V1_0.Constants;
import android.media.tv.tuner.TunerConstants.FilterStatus;
import android.media.tv.tuner.TunerUtils;
import android.media.tv.tuner.filter.Filter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -124,7 +124,7 @@ public class DvrSettings {
* Sets status mask.
*/
@NonNull
public Builder setStatusMask(@FilterStatus int statusMask) {
public Builder setStatusMask(@Filter.Status int statusMask) {
this.mStatusMask = statusMask;
return this;
}

View File

@@ -65,7 +65,7 @@ public class AlpFilterConfiguration extends FilterConfiguration {
@Override
public int getType() {
return FilterConfiguration.FILTER_TYPE_ALP;
return Filter.TYPE_ALP;
}
/**

View File

@@ -16,8 +16,6 @@
package android.media.tv.tuner.filter;
import android.media.tv.tuner.Tuner.Filter;
/**
* Filter event sent from {@link Filter} objects with download type.
*

View File

@@ -20,8 +20,8 @@ import android.annotation.BytesLong;
import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.hardware.tv.tuner.V1_0.Constants;
import android.media.tv.tuner.Tuner.FilterCallback;
import android.media.tv.tuner.TunerConstants.Result;
import java.lang.annotation.Retention;
@@ -34,6 +34,7 @@ import java.lang.annotation.RetentionPolicy;
*
* @hide
*/
@SystemApi
public class Filter implements AutoCloseable {
/** @hide */
@IntDef(prefix = "TYPE_",
@@ -72,91 +73,107 @@ public class Filter implements AutoCloseable {
public @interface Subtype {}
/**
* Filter subtype undefined.
* @hide
*/
public static final int SUBTYPE_UNDEFINED = 0;
/**
* Section filter subtype.
* @hide
*/
public static final int SUBTYPE_SECTION = 1;
/**
* PES filter subtype.
* @hide
*/
public static final int SUBTYPE_PES = 2;
/**
* Audio filter subtype.
* @hide
*/
public static final int SUBTYPE_AUDIO = 3;
/**
* Video filter subtype.
* @hide
*/
public static final int SUBTYPE_VIDEO = 4;
/**
* Download filter subtype.
* @hide
*/
public static final int SUBTYPE_DOWNLOAD = 5;
/**
* Record filter subtype.
* @hide
*/
public static final int SUBTYPE_RECORD = 6;
/**
* TS filter subtype.
* @hide
*/
public static final int SUBTYPE_TS = 7;
/**
* PCR filter subtype.
* @hide
*/
public static final int SUBTYPE_PCR = 8;
/**
* TEMI filter subtype.
* @hide
*/
public static final int SUBTYPE_TEMI = 9;
/**
* MMTP filter subtype.
* @hide
*/
public static final int SUBTYPE_MMTP = 10;
/**
* NTP filter subtype.
* @hide
*/
public static final int SUBTYPE_NTP = 11;
/**
* Payload filter subtype.
* @hide
*/
public static final int SUBTYPE_IP_PAYLOAD = 12;
/**
* IP filter subtype.
* @hide
*/
public static final int SUBTYPE_IP = 13;
/**
* Payload through filter subtype.
* @hide
*/
public static final int SUBTYPE_PAYLOAD_THROUGH = 14;
/**
* TLV filter subtype.
* @hide
*/
public static final int SUBTYPE_TLV = 15;
/**
* PTP filter subtype.
* @hide
*/
public static final int SUBTYPE_PTP = 16;
/** @hide */
@IntDef(flag = true, prefix = "STATUS_", value = {STATUS_DATA_READY, STATUS_LOW_WATER,
STATUS_HIGH_WATER, STATUS_OVERFLOW})
@Retention(RetentionPolicy.SOURCE)
public @interface Status {}
/**
* The status of a filter that the data in the filter buffer is ready to be read.
*/
public static final int 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 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 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 STATUS_OVERFLOW = Constants.DemuxFilterStatus.OVERFLOW;
private long mNativeContext;
private FilterCallback mCallback;
private final int mId;
@@ -171,6 +188,7 @@ public class Filter implements AutoCloseable {
private native int nativeRead(byte[] buffer, long offset, long size);
private native int nativeClose();
// Called by JNI
private Filter(int id) {
mId = id;
}
@@ -178,6 +196,15 @@ public class Filter implements AutoCloseable {
private void onFilterStatus(int status) {
}
/** @hide */
public void setCallback(FilterCallback cb) {
mCallback = cb;
}
/** @hide */
public FilterCallback getCallback() {
return mCallback;
}
/**
* Configures the filter.
*
@@ -241,7 +268,10 @@ public class Filter implements AutoCloseable {
}
/**
* Flushes the filter. Data in filter buffer is cleared.
* Flushes the filter.
*
* <p>The data which is already produced by filter but not consumed yet will
* be cleared.
*
* @return result status of the operation.
*/
@@ -251,7 +281,7 @@ public class Filter implements AutoCloseable {
}
/**
* Copies filtered data from filter buffer to the given byte array.
* Copies filtered data from filter output to the given byte array.
*
* @param buffer the buffer to store the filtered data.
* @param offset the index of the first byte in {@code buffer} to write.

View File

@@ -17,13 +17,14 @@
package android.media.tv.tuner.filter;
import android.annotation.NonNull;
import android.media.tv.tuner.TunerConstants.FilterStatus;
import android.annotation.SystemApi;
/**
* Callback interface for receiving information from the corresponding filters.
*
* @hide
*/
@SystemApi
public interface FilterCallback {
/**
* Invoked when there are filter events.
@@ -38,5 +39,5 @@ public interface FilterCallback {
* @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);
void onFilterStatusChanged(@NonNull Filter filter, @Filter.Status int status);
}

View File

@@ -19,7 +19,6 @@ package android.media.tv.tuner.filter;
import android.annotation.IntDef;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.hardware.tv.tuner.V1_0.Constants;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -32,37 +31,6 @@ import java.lang.annotation.RetentionPolicy;
@SystemApi
public abstract class FilterConfiguration {
/**
* TODO: moved to Filter. Remove it here.
* @hide
*/
@IntDef(prefix = "FILTER_TYPE_", value =
{FILTER_TYPE_TS, FILTER_TYPE_MMTP, FILTER_TYPE_IP, FILTER_TYPE_TLV, FILTER_TYPE_ALP})
@Retention(RetentionPolicy.SOURCE)
public @interface FilterType {}
/**
* TS filter type.
*/
public static final int FILTER_TYPE_TS = Constants.DemuxFilterMainType.TS;
/**
* MMTP filter type.
*/
public static final int FILTER_TYPE_MMTP = Constants.DemuxFilterMainType.MMTP;
/**
* IP filter type.
*/
public static final int FILTER_TYPE_IP = Constants.DemuxFilterMainType.IP;
/**
* TLV filter type.
*/
public static final int FILTER_TYPE_TLV = Constants.DemuxFilterMainType.TLV;
/**
* ALP filter type.
*/
public static final int FILTER_TYPE_ALP = Constants.DemuxFilterMainType.ALP;
/** @hide */
@IntDef(prefix = "PACKET_TYPE_", value =
{PACKET_TYPE_IPV4, PACKET_TYPE_COMPRESSED, PACKET_TYPE_SIGNALING})
@@ -97,7 +65,7 @@ public abstract class FilterConfiguration {
* Gets filter configuration type.
* @hide
*/
@FilterType
@Filter.Type
public abstract int getType();
/** @hide */

View File

@@ -45,7 +45,7 @@ public class IpFilterConfiguration extends FilterConfiguration {
@Override
public int getType() {
return FilterConfiguration.FILTER_TYPE_IP;
return Filter.TYPE_IP;
}
/**

View File

@@ -16,8 +16,6 @@
package android.media.tv.tuner.filter;
import android.media.tv.tuner.Tuner.Filter;
/**
* Filter event sent from {@link Filter} objects with IP payload type.
*

View File

@@ -18,7 +18,6 @@ package android.media.tv.tuner.filter;
import android.annotation.BytesLong;
import android.annotation.Nullable;
import android.media.tv.tuner.Tuner.Filter;
/**
* Filter event sent from {@link Filter} objects with media type.

View File

@@ -35,7 +35,7 @@ public class MmtpFilterConfiguration extends FilterConfiguration {
@Override
public int getType() {
return FilterConfiguration.FILTER_TYPE_MMTP;
return Filter.TYPE_MMTP;
}
/**

View File

@@ -16,8 +16,6 @@
package android.media.tv.tuner.filter;
import android.media.tv.tuner.Tuner.Filter;
/**
* Filter event sent from {@link Filter} objects with MMTP type.
*

View File

@@ -16,8 +16,6 @@
package android.media.tv.tuner.filter;
import android.media.tv.tuner.Tuner.Filter;
/**
* Filter event sent from {@link Filter} objects with PES type.
*

View File

@@ -17,7 +17,6 @@
package android.media.tv.tuner.filter;
import android.annotation.SystemApi;
import android.media.tv.tuner.Tuner.Filter;
/**
* Filter event sent from {@link Filter} objects with section type.

View File

@@ -17,7 +17,6 @@
package android.media.tv.tuner.filter;
import android.annotation.NonNull;
import android.media.tv.tuner.Tuner.Filter;
/**
* Filter event sent from {@link Filter} objects for Timed External Media Information (TEMI) data.

View File

@@ -40,7 +40,7 @@ public class TlvFilterConfiguration extends FilterConfiguration {
@Override
public int getType() {
return FilterConfiguration.FILTER_TYPE_TLV;
return Filter.TYPE_TLV;
}
/**

View File

@@ -39,7 +39,7 @@ public class TsFilterConfiguration extends FilterConfiguration {
@Override
public int getType() {
return FilterConfiguration.FILTER_TYPE_TS;
return Filter.TYPE_TS;
}
/**

View File

@@ -16,8 +16,6 @@
package android.media.tv.tuner.filter;
import android.media.tv.tuner.Tuner.Filter;
/**
* Filter event sent from {@link Filter} objects for TS record data.