Loading core/api/system-current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -6701,6 +6701,8 @@ package android.media.tv.tuner.filter { method @Nullable public String acquireSharedFilterToken(); method public void close(); method public int configure(@NonNull android.media.tv.tuner.filter.FilterConfiguration); method public int delayCallbackUntilBufferFilled(int); method public int delayCallbackUntilTimeMillis(long); method public int flush(); method public void freeSharedFilterToken(@NonNull String); method @Deprecated public int getId(); media/java/android/media/tv/tuner/filter/Filter.java +50 −0 Original line number Diff line number Diff line Loading @@ -254,6 +254,8 @@ public class Filter implements AutoCloseable { private native int nativeClose(); private native String nativeAcquireSharedFilterToken(); private native void nativeFreeSharedFilterToken(String token); private native int nativeSetTimeDelayHint(int timeDelayInMs); private native int nativeSetDataSizeDelayHint(int dataSizeDelayInBytes); // Called by JNI private Filter(long id) { Loading Loading @@ -599,4 +601,52 @@ public class Filter implements AutoCloseable { mIsShared = false; } } /** * Set filter time delay. * * <p> Setting a time delay instructs the filter to delay its event callback invocation until * the specified amount of time has passed. The default value (delay disabled) is {@code 0}. * * <p>This functionality is only available in Tuner version 2.0 and higher and will otherwise * be a no-op. Use {@link TunerVersionChecker#getTunerVersion()} to get the version information. * * @param delayInMs specifies the duration of the delay in milliseconds. */ public int delayCallbackUntilTimeMillis(long delayInMs) { if (!TunerVersionChecker.checkHigherOrEqualVersionTo( TunerVersionChecker.TUNER_VERSION_2_0, "setTimeDelayHint")) { return Tuner.RESULT_UNAVAILABLE; } if (delayInMs >= 0 && delayInMs <= Integer.MAX_VALUE) { synchronized (mLock) { return nativeSetTimeDelayHint((int) delayInMs); } } return Tuner.RESULT_INVALID_ARGUMENT; } /** * Set filter data size delay. * * <p> Setting a data size delay instructs the filter to delay its event callback invocation * until a specified amount of data has accumulated. The default value (delay disabled) is * {@code 0}. * * <p>This functionality is only available in Tuner version 2.0 and higher and will otherwise * be a no-op. Use {@link TunerVersionChecker#getTunerVersion()} to get the version information. * * @param delayInBytes specifies the duration of the delay in bytes. */ public int delayCallbackUntilBufferFilled(int delayInBytes) { if (!TunerVersionChecker.checkHigherOrEqualVersionTo( TunerVersionChecker.TUNER_VERSION_2_0, "setTimeDelayHint")) { return Tuner.RESULT_UNAVAILABLE; } synchronized (mLock) { return nativeSetDataSizeDelayHint(delayInBytes); } } } media/jni/android_media_tv_Tuner.cpp +38 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,8 @@ #include <aidl/android/hardware/tv/tuner/DemuxTsFilterType.h> #include <aidl/android/hardware/tv/tuner/DemuxTsIndex.h> #include <aidl/android/hardware/tv/tuner/DvrSettings.h> #include <aidl/android/hardware/tv/tuner/FilterDelayHint.h> #include <aidl/android/hardware/tv/tuner/FilterDelayHintType.h> #include <aidl/android/hardware/tv/tuner/FrontendAnalogAftFlag.h> #include <aidl/android/hardware/tv/tuner/FrontendAnalogSettings.h> #include <aidl/android/hardware/tv/tuner/FrontendAnalogSifStandard.h> Loading Loading @@ -210,6 +212,8 @@ using ::aidl::android::hardware::tv::tuner::DemuxTsFilterSettingsFilterSettings; using ::aidl::android::hardware::tv::tuner::DemuxTsFilterType; using ::aidl::android::hardware::tv::tuner::DemuxTsIndex; using ::aidl::android::hardware::tv::tuner::DvrSettings; using ::aidl::android::hardware::tv::tuner::FilterDelayHint; using ::aidl::android::hardware::tv::tuner::FilterDelayHintType; using ::aidl::android::hardware::tv::tuner::FrontendAnalogAftFlag; using ::aidl::android::hardware::tv::tuner::FrontendAnalogSettings; using ::aidl::android::hardware::tv::tuner::FrontendAnalogSifStandard; Loading Loading @@ -4058,6 +4062,36 @@ static void android_media_tv_Tuner_free_shared_filter_token( filterClient->freeSharedFilterToken(filterToken); } static jint android_media_tv_Tuner_set_filter_time_delay_hint( JNIEnv *env, jobject filter, int timeDelayInMs) { sp<FilterClient> filterClient = getFilterClient(env, filter); if (filterClient == nullptr) { jniThrowException(env, "java/lang/IllegalStateException", "Failed to set filter delay: filter client not found"); } FilterDelayHint delayHint { .hintType = FilterDelayHintType::TIME_DELAY_IN_MS, .hintValue = timeDelayInMs, }; return static_cast<jint>(filterClient->setDelayHint(delayHint)); } static jint android_media_tv_Tuner_set_filter_data_size_delay_hint( JNIEnv *env, jobject filter, int dataSizeDelayInBytes) { sp<FilterClient> filterClient = getFilterClient(env, filter); if (filterClient == nullptr) { jniThrowException(env, "java/lang/IllegalStateException", "Failed to set filter delay: filter client not found"); } FilterDelayHint delayHint { .hintType = FilterDelayHintType::DATA_SIZE_DELAY_IN_BYTES, .hintValue = dataSizeDelayInBytes, }; return static_cast<jint>(filterClient->setDelayHint(delayHint)); } static sp<TimeFilterClient> getTimeFilterClient(JNIEnv *env, jobject filter) { return (TimeFilterClient *)env->GetLongField(filter, gFields.timeFilterContext); } Loading Loading @@ -4578,6 +4612,10 @@ static const JNINativeMethod gFilterMethods[] = { (void *)android_media_tv_Tuner_acquire_shared_filter_token}, { "nativeFreeSharedFilterToken", "(Ljava/lang/String;)V", (void *)android_media_tv_Tuner_free_shared_filter_token}, {"nativeSetTimeDelayHint", "(I)I", (void *)android_media_tv_Tuner_set_filter_time_delay_hint}, {"nativeSetDataSizeDelayHint", "(I)I", (void *)android_media_tv_Tuner_set_filter_data_size_delay_hint}, }; static const JNINativeMethod gSharedFilterMethods[] = { Loading Loading
core/api/system-current.txt +2 −0 Original line number Diff line number Diff line Loading @@ -6701,6 +6701,8 @@ package android.media.tv.tuner.filter { method @Nullable public String acquireSharedFilterToken(); method public void close(); method public int configure(@NonNull android.media.tv.tuner.filter.FilterConfiguration); method public int delayCallbackUntilBufferFilled(int); method public int delayCallbackUntilTimeMillis(long); method public int flush(); method public void freeSharedFilterToken(@NonNull String); method @Deprecated public int getId();
media/java/android/media/tv/tuner/filter/Filter.java +50 −0 Original line number Diff line number Diff line Loading @@ -254,6 +254,8 @@ public class Filter implements AutoCloseable { private native int nativeClose(); private native String nativeAcquireSharedFilterToken(); private native void nativeFreeSharedFilterToken(String token); private native int nativeSetTimeDelayHint(int timeDelayInMs); private native int nativeSetDataSizeDelayHint(int dataSizeDelayInBytes); // Called by JNI private Filter(long id) { Loading Loading @@ -599,4 +601,52 @@ public class Filter implements AutoCloseable { mIsShared = false; } } /** * Set filter time delay. * * <p> Setting a time delay instructs the filter to delay its event callback invocation until * the specified amount of time has passed. The default value (delay disabled) is {@code 0}. * * <p>This functionality is only available in Tuner version 2.0 and higher and will otherwise * be a no-op. Use {@link TunerVersionChecker#getTunerVersion()} to get the version information. * * @param delayInMs specifies the duration of the delay in milliseconds. */ public int delayCallbackUntilTimeMillis(long delayInMs) { if (!TunerVersionChecker.checkHigherOrEqualVersionTo( TunerVersionChecker.TUNER_VERSION_2_0, "setTimeDelayHint")) { return Tuner.RESULT_UNAVAILABLE; } if (delayInMs >= 0 && delayInMs <= Integer.MAX_VALUE) { synchronized (mLock) { return nativeSetTimeDelayHint((int) delayInMs); } } return Tuner.RESULT_INVALID_ARGUMENT; } /** * Set filter data size delay. * * <p> Setting a data size delay instructs the filter to delay its event callback invocation * until a specified amount of data has accumulated. The default value (delay disabled) is * {@code 0}. * * <p>This functionality is only available in Tuner version 2.0 and higher and will otherwise * be a no-op. Use {@link TunerVersionChecker#getTunerVersion()} to get the version information. * * @param delayInBytes specifies the duration of the delay in bytes. */ public int delayCallbackUntilBufferFilled(int delayInBytes) { if (!TunerVersionChecker.checkHigherOrEqualVersionTo( TunerVersionChecker.TUNER_VERSION_2_0, "setTimeDelayHint")) { return Tuner.RESULT_UNAVAILABLE; } synchronized (mLock) { return nativeSetDataSizeDelayHint(delayInBytes); } } }
media/jni/android_media_tv_Tuner.cpp +38 −0 Original line number Diff line number Diff line Loading @@ -62,6 +62,8 @@ #include <aidl/android/hardware/tv/tuner/DemuxTsFilterType.h> #include <aidl/android/hardware/tv/tuner/DemuxTsIndex.h> #include <aidl/android/hardware/tv/tuner/DvrSettings.h> #include <aidl/android/hardware/tv/tuner/FilterDelayHint.h> #include <aidl/android/hardware/tv/tuner/FilterDelayHintType.h> #include <aidl/android/hardware/tv/tuner/FrontendAnalogAftFlag.h> #include <aidl/android/hardware/tv/tuner/FrontendAnalogSettings.h> #include <aidl/android/hardware/tv/tuner/FrontendAnalogSifStandard.h> Loading Loading @@ -210,6 +212,8 @@ using ::aidl::android::hardware::tv::tuner::DemuxTsFilterSettingsFilterSettings; using ::aidl::android::hardware::tv::tuner::DemuxTsFilterType; using ::aidl::android::hardware::tv::tuner::DemuxTsIndex; using ::aidl::android::hardware::tv::tuner::DvrSettings; using ::aidl::android::hardware::tv::tuner::FilterDelayHint; using ::aidl::android::hardware::tv::tuner::FilterDelayHintType; using ::aidl::android::hardware::tv::tuner::FrontendAnalogAftFlag; using ::aidl::android::hardware::tv::tuner::FrontendAnalogSettings; using ::aidl::android::hardware::tv::tuner::FrontendAnalogSifStandard; Loading Loading @@ -4058,6 +4062,36 @@ static void android_media_tv_Tuner_free_shared_filter_token( filterClient->freeSharedFilterToken(filterToken); } static jint android_media_tv_Tuner_set_filter_time_delay_hint( JNIEnv *env, jobject filter, int timeDelayInMs) { sp<FilterClient> filterClient = getFilterClient(env, filter); if (filterClient == nullptr) { jniThrowException(env, "java/lang/IllegalStateException", "Failed to set filter delay: filter client not found"); } FilterDelayHint delayHint { .hintType = FilterDelayHintType::TIME_DELAY_IN_MS, .hintValue = timeDelayInMs, }; return static_cast<jint>(filterClient->setDelayHint(delayHint)); } static jint android_media_tv_Tuner_set_filter_data_size_delay_hint( JNIEnv *env, jobject filter, int dataSizeDelayInBytes) { sp<FilterClient> filterClient = getFilterClient(env, filter); if (filterClient == nullptr) { jniThrowException(env, "java/lang/IllegalStateException", "Failed to set filter delay: filter client not found"); } FilterDelayHint delayHint { .hintType = FilterDelayHintType::DATA_SIZE_DELAY_IN_BYTES, .hintValue = dataSizeDelayInBytes, }; return static_cast<jint>(filterClient->setDelayHint(delayHint)); } static sp<TimeFilterClient> getTimeFilterClient(JNIEnv *env, jobject filter) { return (TimeFilterClient *)env->GetLongField(filter, gFields.timeFilterContext); } Loading Loading @@ -4578,6 +4612,10 @@ static const JNINativeMethod gFilterMethods[] = { (void *)android_media_tv_Tuner_acquire_shared_filter_token}, { "nativeFreeSharedFilterToken", "(Ljava/lang/String;)V", (void *)android_media_tv_Tuner_free_shared_filter_token}, {"nativeSetTimeDelayHint", "(I)I", (void *)android_media_tv_Tuner_set_filter_time_delay_hint}, {"nativeSetDataSizeDelayHint", "(I)I", (void *)android_media_tv_Tuner_set_filter_data_size_delay_hint}, }; static const JNINativeMethod gSharedFilterMethods[] = { Loading