summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--media/java/android/media/tv/tuner/DemuxCapabilities.java114
-rw-r--r--media/java/android/media/tv/tuner/Tuner.java7
-rw-r--r--media/jni/android_media_tv_Tuner.cpp6
3 files changed, 127 insertions, 0 deletions
diff --git a/media/java/android/media/tv/tuner/DemuxCapabilities.java b/media/java/android/media/tv/tuner/DemuxCapabilities.java
new file mode 100644
index 000000000000..bda166ec9d14
--- /dev/null
+++ b/media/java/android/media/tv/tuner/DemuxCapabilities.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2019 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;
+
+/**
+ * Capabilities info for Demux.
+ * @hide
+ */
+public class DemuxCapabilities {
+ private final int mNumDemux;
+ private final int mNumRecord;
+ private final int mNumPlayback;
+ private final int mNumTsFilter;
+ private final int mNumSectionFilter;
+ private final int mNumAudioFilter;
+ private final int mNumVideoFilter;
+ private final int mNumPesFilter;
+ private final int mNumPcrFilter;
+ private final int mNumBytesInSectionFilter;
+ private final int mFilterCaps;
+ private final int[] mLinkCaps;
+
+ DemuxCapabilities(int numDemux, int numRecord, int numPlayback, int numTsFilter,
+ int numSectionFilter, int numAudioFilter, int numVideoFilter, int numPesFilter,
+ int numPcrFilter, int numBytesInSectionFilter, int filterCaps, int[] linkCaps) {
+ mNumDemux = numDemux;
+ mNumRecord = numRecord;
+ mNumPlayback = numPlayback;
+ mNumTsFilter = numTsFilter;
+ mNumSectionFilter = numSectionFilter;
+ mNumAudioFilter = numAudioFilter;
+ mNumVideoFilter = numVideoFilter;
+ mNumPesFilter = numPesFilter;
+ mNumPcrFilter = numPcrFilter;
+ mNumBytesInSectionFilter = numBytesInSectionFilter;
+ mFilterCaps = filterCaps;
+ mLinkCaps = linkCaps;
+ }
+
+ /** Gets total number of demuxes. */
+ public int getNumDemux() {
+ return mNumDemux;
+ }
+ /** Gets max number of recordings at a time. */
+ public int getNumRecord() {
+ return mNumRecord;
+ }
+ /** Gets max number of playbacks at a time. */
+ public int getNumPlayback() {
+ return mNumPlayback;
+ }
+ /** Gets number of TS filters. */
+ public int getNumTsFilter() {
+ return mNumTsFilter;
+ }
+ /** Gets number of section filters. */
+ public int getNumSectionFilter() {
+ return mNumSectionFilter;
+ }
+ /** Gets number of audio filters. */
+ public int getNumAudioFilter() {
+ return mNumAudioFilter;
+ }
+ /** Gets number of video filters. */
+ public int getNumVideoFilter() {
+ return mNumVideoFilter;
+ }
+ /** Gets number of PES filters. */
+ public int getNumPesFilter() {
+ return mNumPesFilter;
+ }
+ /** Gets number of PCR filters. */
+ public int getNumPcrFilter() {
+ return mNumPcrFilter;
+ }
+ /** Gets number of bytes in the mask of a section filter. */
+ public int getNumBytesInSectionFilter() {
+ return mNumBytesInSectionFilter;
+ }
+ /**
+ * Gets filter capabilities in bit field.
+ *
+ * The bits of the returned value is corresponding to the types in
+ * {@link TunerConstants.FilterType}.
+ */
+ public int getFilterCapabilities() {
+ return mFilterCaps;
+ }
+
+ /**
+ * Gets link capabilities.
+ *
+ * The returned array contains the same elements as the number of types in
+ * {@link TunerConstants.FilterType}.
+ * The ith element represents the filter's capability as the source for the ith type
+ */
+ public int[] getLinkCapabilities() {
+ return mLinkCaps;
+ }
+}
diff --git a/media/java/android/media/tv/tuner/Tuner.java b/media/java/android/media/tv/tuner/Tuner.java
index 63ef4b8c178b..464712bca7d1 100644
--- a/media/java/android/media/tv/tuner/Tuner.java
+++ b/media/java/android/media/tv/tuner/Tuner.java
@@ -127,6 +127,8 @@ public final class Tuner implements AutoCloseable {
private native Dvr nativeOpenDvr(int type, int bufferSize);
+ private static native DemuxCapabilities nativeGetDemuxCapabilities();
+
/**
* Frontend Callback.
*
@@ -434,6 +436,11 @@ public final class Tuner implements AutoCloseable {
return mFrontend.mId;
}
+ /** @hide */
+ private static DemuxCapabilities getDemuxCapabilities() {
+ return nativeGetDemuxCapabilities();
+ }
+
private List<Integer> getFrontendIds() {
mFrontendIds = nativeGetFrontendIds();
return mFrontendIds;
diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp
index c88e2d20ca67..f0f368815d9d 100644
--- a/media/jni/android_media_tv_Tuner.cpp
+++ b/media/jni/android_media_tv_Tuner.cpp
@@ -880,6 +880,10 @@ static jobject android_media_tv_Tuner_open_dvr(JNIEnv *env, jobject thiz, jint t
return tuner->openDvr(static_cast<DvrType>(type), bufferSize);
}
+static jobject android_media_tv_Tuner_get_demux_caps(JNIEnv*, jobject) {
+ return NULL;
+}
+
static int android_media_tv_Tuner_attach_filter(JNIEnv *env, jobject dvr, jobject filter) {
sp<IDvr> dvrSp = getDvr(env, dvr)->getIDvr();
sp<IFilter> filterSp = getFilter(env, filter)->getIFilter();
@@ -1123,6 +1127,8 @@ static const JNINativeMethod gTunerMethods[] = {
(void *)android_media_tv_Tuner_open_descrambler },
{ "nativeOpenDvr", "(II)Landroid/media/tv/tuner/Tuner$Dvr;",
(void *)android_media_tv_Tuner_open_dvr },
+ { "nativeGetDemuxCapabilities", "()Landroid/media/tv/tuner/DemuxCapabilities;",
+ (void *)android_media_tv_Tuner_get_demux_caps },
};
static const JNINativeMethod gFilterMethods[] = {