From a6c094bed2b955c05df250382572136a8068db38 Mon Sep 17 00:00:00 2001 From: Amy Zhang Date: Thu, 12 Nov 2020 17:37:51 -0800 Subject: [PATCH] Add Ip Cid Change Event for Filter Merge the configuration of scrambling status change and ip cid change into one API - configureMonitorEvent Previously we only report scrambling status change on configured status, now we change it to report any status change along with the initial status Test: atest TunerTets Bug: 153595125 Change-Id: Ie6e26774dd3f3ab5753746795188a258e1a55393 --- core/api/system-current.txt | 8 +- .../android/media/tv/tuner/filter/Filter.java | 49 ++++++--- .../tv/tuner/filter/IpCidChangeEvent.java | 46 ++++++++ .../tuner/filter/ScramblingStatusEvent.java | 9 +- media/jni/android_media_tv_Tuner.cpp | 103 ++++++++++++------ media/jni/android_media_tv_Tuner.h | 5 +- 6 files changed, 167 insertions(+), 53 deletions(-) create mode 100644 media/java/android/media/tv/tuner/filter/IpCidChangeEvent.java diff --git a/core/api/system-current.txt b/core/api/system-current.txt index f9519f845d5c5..0e6007c8049ec 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -5253,7 +5253,7 @@ 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 configureScramblingStatusEvent(int); + method public int configureMonitorEvent(int); method public int flush(); method public int getId(); method public long getId64Bit(); @@ -5261,6 +5261,8 @@ package android.media.tv.tuner.filter { method public int setDataSource(@Nullable android.media.tv.tuner.filter.Filter); method public int start(); method public int stop(); + field public static final int MONITOR_EVENT_IP_CID_CHANGE = 2; // 0x2 + field public static final int MONITOR_EVENT_SCRAMBLING_STATUS = 1; // 0x1 field public static final int SCRAMBLING_STATUS_NOT_SCRAMBLED = 2; // 0x2 field public static final int SCRAMBLING_STATUS_SCRAMBLED = 4; // 0x4 field public static final int SCRAMBLING_STATUS_UNKNOWN = 1; // 0x1 @@ -5307,6 +5309,10 @@ package android.media.tv.tuner.filter { ctor public FilterEvent(); } + public final class IpCidChangeEvent extends android.media.tv.tuner.filter.FilterEvent { + method public int getIpCid(); + } + public final class IpFilterConfiguration extends android.media.tv.tuner.filter.FilterConfiguration { method @NonNull public static android.media.tv.tuner.filter.IpFilterConfiguration.Builder builder(); method @NonNull @Size(min=4, max=16) public byte[] getDstIpAddress(); diff --git a/media/java/android/media/tv/tuner/filter/Filter.java b/media/java/android/media/tv/tuner/filter/Filter.java index 82cc78d7e47d8..451f54caf7f96 100644 --- a/media/java/android/media/tv/tuner/filter/Filter.java +++ b/media/java/android/media/tv/tuner/filter/Filter.java @@ -186,7 +186,7 @@ public class Filter implements AutoCloseable { value = {SCRAMBLING_STATUS_UNKNOWN, SCRAMBLING_STATUS_NOT_SCRAMBLED, SCRAMBLING_STATUS_SCRAMBLED}) @Retention(RetentionPolicy.SOURCE) - public @interface ScramblingStatusMask {} + public @interface ScramblingStatus {} /** * Content’s scrambling status is unknown @@ -204,6 +204,23 @@ public class Filter implements AutoCloseable { public static final int SCRAMBLING_STATUS_SCRAMBLED = android.hardware.tv.tuner.V1_1.Constants.ScramblingStatus.SCRAMBLED; + /** @hide */ + @IntDef(flag = true, + prefix = "MONITOR_EVENT_", + value = {MONITOR_EVENT_SCRAMBLING_STATUS, MONITOR_EVENT_IP_CID_CHANGE}) + @Retention(RetentionPolicy.SOURCE) + public @interface MonitorEventTypeMask {} + + /** + * Monitor scrambling status change. + */ + public static final int MONITOR_EVENT_SCRAMBLING_STATUS = + android.hardware.tv.tuner.V1_1.Constants.DemuxFilterMonitorEventType.SCRAMBLING_STATUS; + /** + * Monitor ip cid change. + */ + public static final int MONITOR_EVENT_IP_CID_CHANGE = + android.hardware.tv.tuner.V1_1.Constants.DemuxFilterMonitorEventType.IP_CID_CHANGE; private static final String TAG = "Filter"; @@ -222,7 +239,7 @@ public class Filter implements AutoCloseable { int type, int subType, FilterConfiguration settings); private native int nativeGetId(); private native long nativeGetId64Bit(); - private native int nativeconfigureScramblingEvent(int scramblingStatusMask); + private native int nativeConfigureMonitorEvent(int monitorEventTypesMask); private native int nativeSetDataSource(Filter source); private native int nativeStartFilter(); private native int nativeStopFilter(); @@ -306,34 +323,40 @@ public class Filter implements AutoCloseable { } /** - * Configure the Filter to monitor specific Scrambling Status through - * {@link ScramblingStatusEvent}. + * Configure the Filter to monitor scrambling status and ip cid change. Set corresponding bit of + * {@link MonitorEventTypeMask} to monitor the change. Reset to stop monitoring. * *

{@link ScramblingStatusEvent} should be sent at the following two scenarios: - * *