diff options
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 }, |