summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--media/java/android/media/tv/tuner/FrontendSettings.java25
-rw-r--r--media/java/android/media/tv/tuner/Tuner.java19
-rw-r--r--media/java/android/media/tv/tuner/filter/Filter.java12
-rw-r--r--media/java/android/media/tv/tuner/filter/MediaEvent.java6
-rw-r--r--media/java/android/media/tv/tuner/filter/TimeFilter.java3
-rw-r--r--media/jni/android_media_tv_Tuner.cpp4
6 files changed, 26 insertions, 43 deletions
diff --git a/media/java/android/media/tv/tuner/FrontendSettings.java b/media/java/android/media/tv/tuner/FrontendSettings.java
deleted file mode 100644
index 7f9b9826c94b..000000000000
--- a/media/java/android/media/tv/tuner/FrontendSettings.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * 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;
-
-/**
- * Frontend settings for tune and scan operations.
- * TODO: remove
- * @hide
- */
-public abstract class FrontendSettings {
-}
diff --git a/media/java/android/media/tv/tuner/Tuner.java b/media/java/android/media/tv/tuner/Tuner.java
index 0ff0d04599db..894882f07b5b 100644
--- a/media/java/android/media/tv/tuner/Tuner.java
+++ b/media/java/android/media/tv/tuner/Tuner.java
@@ -222,6 +222,7 @@ public class Tuner implements AutoCloseable {
private Integer mDemuxHandle;
private Integer mDescramblerHandle;
+ private Descrambler mDescrambler;
private final TunerResourceManager.ResourcesReclaimListener mResourceListener =
new TunerResourceManager.ResourcesReclaimListener() {
@@ -249,6 +250,7 @@ public class Tuner implements AutoCloseable {
mHandler = createEventHandler();
}
+ mHandler = createEventHandler();
int[] clientId = new int[1];
ResourceClientProfile profile = new ResourceClientProfile(tvInputSessionId, useCase);
mTunerResourceManager.registerClientProfile(
@@ -286,7 +288,7 @@ public class Tuner implements AutoCloseable {
public void shareFrontendFromTuner(@NonNull Tuner tuner) {
mTunerResourceManager.shareFrontend(mClientId, tuner.mClientId);
mFrontendHandle = tuner.mFrontendHandle;
- nativeOpenFrontendByHandle(mFrontendHandle);
+ mFrontend = nativeOpenFrontendByHandle(mFrontendHandle);
}
/**
@@ -319,6 +321,7 @@ public class Tuner implements AutoCloseable {
mTunerResourceManager.releaseLnb(mLnbHandle);
mLnb = null;
}
+ nativeClose();
}
/**
@@ -359,13 +362,16 @@ public class Tuner implements AutoCloseable {
private native Lnb nativeOpenLnbByHandle(int handle);
private native Lnb nativeOpenLnbByName(String name);
- private native Descrambler nativeOpenDescrambler();
+ private native Descrambler nativeOpenDescramblerByHandle(int handle);
+ private native Descrambler nativeOpenDemuxByhandle(int handle);
private native DvrRecorder nativeOpenDvrRecorder(long bufferSize);
private native DvrPlayback nativeOpenDvrPlayback(long bufferSize);
private static native DemuxCapabilities nativeGetDemuxCapabilities();
+ private native int nativeClose();
+
/**
* Listener for resource lost.
@@ -554,6 +560,7 @@ public class Tuner implements AutoCloseable {
boolean granted = mTunerResourceManager.requestFrontend(request, feHandle);
if (granted) {
mFrontendHandle = feHandle[0];
+ mFrontend = nativeOpenFrontendByHandle(mFrontendHandle);
}
return granted;
}
@@ -819,7 +826,7 @@ public class Tuner implements AutoCloseable {
Objects.requireNonNull(executor, "executor must not be null");
Objects.requireNonNull(cb, "LnbCallback must not be null");
checkResource(TunerResourceManager.TUNER_RESOURCE_TYPE_LNB);
- return nativeOpenLnbByHandle(mLnbHandle);
+ return mLnb;
}
/**
@@ -837,7 +844,6 @@ public class Tuner implements AutoCloseable {
Objects.requireNonNull(name, "LNB name must not be null");
Objects.requireNonNull(executor, "executor must not be null");
Objects.requireNonNull(cb, "LnbCallback must not be null");
- checkResource(TunerResourceManager.TUNER_RESOURCE_TYPE_LNB);
return nativeOpenLnbByName(name);
}
@@ -847,6 +853,7 @@ public class Tuner implements AutoCloseable {
boolean granted = mTunerResourceManager.requestLnb(request, lnbHandle);
if (granted) {
mLnbHandle = lnbHandle[0];
+ mLnb = nativeOpenLnbByHandle(mLnbHandle);
}
return granted;
}
@@ -877,7 +884,7 @@ public class Tuner implements AutoCloseable {
@Nullable
public Descrambler openDescrambler() {
checkResource(TunerResourceManager.TUNER_RESOURCE_TYPE_DESCRAMBLER);
- return nativeOpenDescrambler();
+ return mDescrambler;
}
/**
@@ -930,6 +937,7 @@ public class Tuner implements AutoCloseable {
boolean granted = mTunerResourceManager.requestDemux(request, demuxHandle);
if (granted) {
mDemuxHandle = demuxHandle[0];
+ nativeOpenDemuxByhandle(mDemuxHandle);
}
return granted;
}
@@ -940,6 +948,7 @@ public class Tuner implements AutoCloseable {
boolean granted = mTunerResourceManager.requestDescrambler(request, descramblerHandle);
if (granted) {
mDescramblerHandle = descramblerHandle[0];
+ nativeOpenDescramblerByHandle(mDescramblerHandle);
}
return granted;
}
diff --git a/media/java/android/media/tv/tuner/filter/Filter.java b/media/java/android/media/tv/tuner/filter/Filter.java
index 8dc062274641..b943fe589270 100644
--- a/media/java/android/media/tv/tuner/filter/Filter.java
+++ b/media/java/android/media/tv/tuner/filter/Filter.java
@@ -23,7 +23,6 @@ import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.hardware.tv.tuner.V1_0.Constants;
import android.media.tv.tuner.Tuner.Result;
-import android.media.tv.tuner.TunerUtils;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -239,13 +238,12 @@ public class Filter implements AutoCloseable {
*/
@Result
public int configure(@NonNull FilterConfiguration config) {
- // TODO: validate main type, subtype, config, settings
- int subType;
Settings s = config.getSettings();
- if (s != null) {
- subType = s.getType();
- } else {
- subType = TunerUtils.getFilterSubtype(mMainType, mSubtype);
+ int subType = (s == null) ? mSubtype : s.getType();
+ if (mMainType != config.getType() || mSubtype != subType) {
+ throw new IllegalArgumentException("Invalid filter config. filter main type="
+ + mMainType + ", filter subtype=" + mSubtype + ". config main type="
+ + config.getType() + ", config subtype=" + subType);
}
return nativeConfigureFilter(config.getType(), subType, config);
}
diff --git a/media/java/android/media/tv/tuner/filter/MediaEvent.java b/media/java/android/media/tv/tuner/filter/MediaEvent.java
index b6bd86befd87..247c1c47560a 100644
--- a/media/java/android/media/tv/tuner/filter/MediaEvent.java
+++ b/media/java/android/media/tv/tuner/filter/MediaEvent.java
@@ -27,7 +27,9 @@ import android.media.MediaCodec.LinearBlock;
* @hide
*/
@SystemApi
-public class MediaEvent extends FilterEvent{
+public class MediaEvent extends FilterEvent {
+ private native int nativeGetAudioHandle();
+
private final int mStreamId;
private final boolean mIsPtsPresent;
private final long mPts;
@@ -134,7 +136,7 @@ public class MediaEvent extends FilterEvent{
* @see android.media.AudioTrack#ENCAPSULATION_MODE_HANDLE
*/
public long getAudioHandle() {
- // TODO: implement
+ nativeGetAudioHandle();
return mDataId;
}
diff --git a/media/java/android/media/tv/tuner/filter/TimeFilter.java b/media/java/android/media/tv/tuner/filter/TimeFilter.java
index be0a055b41ef..da77b50bc3e5 100644
--- a/media/java/android/media/tv/tuner/filter/TimeFilter.java
+++ b/media/java/android/media/tv/tuner/filter/TimeFilter.java
@@ -67,8 +67,7 @@ public class TimeFilter implements AutoCloseable {
@Result
public int setCurrentTimestamp(long timestamp) {
int res = nativeSetTimestamp(timestamp);
- // TODO: use a constant for SUCCESS
- if (res == 0) {
+ if (res == Tuner.RESULT_SUCCESS) {
mEnable = true;
}
return res;
diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp
index bbeb45179c78..95ce07d3c55e 100644
--- a/media/jni/android_media_tv_Tuner.cpp
+++ b/media/jni/android_media_tv_Tuner.cpp
@@ -2649,7 +2649,7 @@ static int android_media_tv_Tuner_time_filter_close(JNIEnv *env, jobject filter)
return (int) r;
}
-static jobject android_media_tv_Tuner_open_descrambler(JNIEnv *env, jobject thiz) {
+static jobject android_media_tv_Tuner_open_descrambler(JNIEnv *env, jobject thiz, jint) {
sp<JTuner> tuner = getTuner(env, thiz);
return tuner->openDescrambler();
}
@@ -2961,7 +2961,7 @@ static const JNINativeMethod gTunerMethods[] = {
(void *)android_media_tv_Tuner_open_lnb_by_handle },
{ "nativeOpenLnbByName", "(Ljava/lang/String;)Landroid/media/tv/tuner/Lnb;",
(void *)android_media_tv_Tuner_open_lnb_by_name },
- { "nativeOpenDescrambler", "()Landroid/media/tv/tuner/Descrambler;",
+ { "nativeOpenDescramblerByHandle", "(I)Landroid/media/tv/tuner/Descrambler;",
(void *)android_media_tv_Tuner_open_descrambler },
{ "nativeOpenDvrRecorder", "(J)Landroid/media/tv/tuner/dvr/DvrRecorder;",
(void *)android_media_tv_Tuner_open_dvr_recorder },