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: - * *
{@link IpCidChangeEvent} should be sent at the following two scenarios: + *
This configuration is only supported in Tuner 1.1 or higher version. Unsupported version * will cause no-op. Use {@link TunerVersionChecker.getTunerVersion()} to get the version * information. * - * @param scramblingStatusMask Scrambling Statuses to be monitored. Set corresponding bit to - * monitor it. Reset to stop monitoring. + * @param monitorEventTypesMask Types of event to be monitored. Set corresponding bit to + * monitor it. Reset to stop monitoring. * @return result status of the operation. */ @Result - public int configureScramblingStatusEvent(@ScramblingStatusMask int scramblingStatusMask) { + public int configureMonitorEvent(@MonitorEventTypeMask int monitorEventTypesMask) { synchronized (mLock) { TunerUtils.checkResourceState(TAG, mIsClosed); if (!TunerVersionChecker.checkHigherOrEqualVersionTo( - TunerVersionChecker.TUNER_VERSION_1_1, "configureScramblingStatusEvent")) { + TunerVersionChecker.TUNER_VERSION_1_1, "configureMonitorEvent")) { return Tuner.RESULT_UNAVAILABLE; } - return nativeconfigureScramblingEvent(scramblingStatusMask); + return nativeConfigureMonitorEvent(monitorEventTypesMask); } } diff --git a/media/java/android/media/tv/tuner/filter/IpCidChangeEvent.java b/media/java/android/media/tv/tuner/filter/IpCidChangeEvent.java new file mode 100644 index 0000000000000..c0043f3b15cd4 --- /dev/null +++ b/media/java/android/media/tv/tuner/filter/IpCidChangeEvent.java @@ -0,0 +1,46 @@ +/* + * Copyright 2020 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.filter; + +import android.annotation.SystemApi; + +/** + * Ip Cid Change event sent from {@link Filter} objects new ip cid. + * + *
This event is only sent in Tuner 1.1 or higher version. Use + * {@link TunerVersionChecker.getTunerVersion()} to get the version information. + * + * @hide + */ +@SystemApi +public final class IpCidChangeEvent extends FilterEvent { + private final int mCid; + + private IpCidChangeEvent(int cid) { + mCid = cid; + } + + /** + * Gets ip cid. + * + *
This event is only sent in Tuner 1.1 or higher version. Use + * {@link TunerVersionChecker.getTunerVersion()} to get the version information. + */ + public int getIpCid() { + return mCid; + } +} diff --git a/media/java/android/media/tv/tuner/filter/ScramblingStatusEvent.java b/media/java/android/media/tv/tuner/filter/ScramblingStatusEvent.java index a78b96e9cf51b..fef539638db84 100644 --- a/media/java/android/media/tv/tuner/filter/ScramblingStatusEvent.java +++ b/media/java/android/media/tv/tuner/filter/ScramblingStatusEvent.java @@ -30,18 +30,17 @@ import android.annotation.SystemApi; public final class ScramblingStatusEvent extends FilterEvent { private final int mScramblingStatus; - private ScramblingStatusEvent(@Filter.ScramblingStatusMask int scramblingStatus) { + private ScramblingStatusEvent(@Filter.ScramblingStatus int scramblingStatus) { mScramblingStatus = scramblingStatus; } /** * Gets Scrambling Status Type. * - *
This event field is only sent in Tuner 1.1 or higher version. Unsupported version returns - * default value 0. Use {@link TunerVersionChecker.getTunerVersion()} to get the version - * information. + *
This event field is only sent in Tuner 1.1 or higher version. Use
+ * {@link TunerVersionChecker.getTunerVersion()} to get the version information.
*/
- @Filter.ScramblingStatusMask
+ @Filter.ScramblingStatus
public int getScramblingStatus() {
return mScramblingStatus;
}
diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp
index b255a48d34d0e..72dc32e7998fb 100644
--- a/media/jni/android_media_tv_Tuner.cpp
+++ b/media/jni/android_media_tv_Tuner.cpp
@@ -604,11 +604,16 @@ jobjectArray FilterCallback::getTsRecordEvent(
jlong byteNumber = static_cast