Merge "Tuner API: cleanup. Resolve TODOs." into rvc-dev

This commit is contained in:
TreeHugger Robot
2020-03-20 07:18:37 +00:00
committed by Android (Google) Code Review
6 changed files with 26 additions and 43 deletions

View File

@@ -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 {
}

View File

@@ -222,6 +222,7 @@ public class Tuner implements AutoCloseable {
private Integer mDemuxHandle; private Integer mDemuxHandle;
private Integer mDescramblerHandle; private Integer mDescramblerHandle;
private Descrambler mDescrambler;
private final TunerResourceManager.ResourcesReclaimListener mResourceListener = private final TunerResourceManager.ResourcesReclaimListener mResourceListener =
new TunerResourceManager.ResourcesReclaimListener() { new TunerResourceManager.ResourcesReclaimListener() {
@@ -249,6 +250,7 @@ public class Tuner implements AutoCloseable {
mHandler = createEventHandler(); mHandler = createEventHandler();
} }
mHandler = createEventHandler();
int[] clientId = new int[1]; int[] clientId = new int[1];
ResourceClientProfile profile = new ResourceClientProfile(tvInputSessionId, useCase); ResourceClientProfile profile = new ResourceClientProfile(tvInputSessionId, useCase);
mTunerResourceManager.registerClientProfile( mTunerResourceManager.registerClientProfile(
@@ -286,7 +288,7 @@ public class Tuner implements AutoCloseable {
public void shareFrontendFromTuner(@NonNull Tuner tuner) { public void shareFrontendFromTuner(@NonNull Tuner tuner) {
mTunerResourceManager.shareFrontend(mClientId, tuner.mClientId); mTunerResourceManager.shareFrontend(mClientId, tuner.mClientId);
mFrontendHandle = tuner.mFrontendHandle; mFrontendHandle = tuner.mFrontendHandle;
nativeOpenFrontendByHandle(mFrontendHandle); mFrontend = nativeOpenFrontendByHandle(mFrontendHandle);
} }
/** /**
@@ -319,6 +321,7 @@ public class Tuner implements AutoCloseable {
mTunerResourceManager.releaseLnb(mLnbHandle); mTunerResourceManager.releaseLnb(mLnbHandle);
mLnb = null; mLnb = null;
} }
nativeClose();
} }
/** /**
@@ -359,13 +362,16 @@ public class Tuner implements AutoCloseable {
private native Lnb nativeOpenLnbByHandle(int handle); private native Lnb nativeOpenLnbByHandle(int handle);
private native Lnb nativeOpenLnbByName(String name); 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 DvrRecorder nativeOpenDvrRecorder(long bufferSize);
private native DvrPlayback nativeOpenDvrPlayback(long bufferSize); private native DvrPlayback nativeOpenDvrPlayback(long bufferSize);
private static native DemuxCapabilities nativeGetDemuxCapabilities(); private static native DemuxCapabilities nativeGetDemuxCapabilities();
private native int nativeClose();
/** /**
* Listener for resource lost. * Listener for resource lost.
@@ -554,6 +560,7 @@ public class Tuner implements AutoCloseable {
boolean granted = mTunerResourceManager.requestFrontend(request, feHandle); boolean granted = mTunerResourceManager.requestFrontend(request, feHandle);
if (granted) { if (granted) {
mFrontendHandle = feHandle[0]; mFrontendHandle = feHandle[0];
mFrontend = nativeOpenFrontendByHandle(mFrontendHandle);
} }
return granted; return granted;
} }
@@ -819,7 +826,7 @@ public class Tuner implements AutoCloseable {
Objects.requireNonNull(executor, "executor must not be null"); Objects.requireNonNull(executor, "executor must not be null");
Objects.requireNonNull(cb, "LnbCallback must not be null"); Objects.requireNonNull(cb, "LnbCallback must not be null");
checkResource(TunerResourceManager.TUNER_RESOURCE_TYPE_LNB); 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(name, "LNB name must not be null");
Objects.requireNonNull(executor, "executor must not be null"); Objects.requireNonNull(executor, "executor must not be null");
Objects.requireNonNull(cb, "LnbCallback must not be null"); Objects.requireNonNull(cb, "LnbCallback must not be null");
checkResource(TunerResourceManager.TUNER_RESOURCE_TYPE_LNB);
return nativeOpenLnbByName(name); return nativeOpenLnbByName(name);
} }
@@ -847,6 +853,7 @@ public class Tuner implements AutoCloseable {
boolean granted = mTunerResourceManager.requestLnb(request, lnbHandle); boolean granted = mTunerResourceManager.requestLnb(request, lnbHandle);
if (granted) { if (granted) {
mLnbHandle = lnbHandle[0]; mLnbHandle = lnbHandle[0];
mLnb = nativeOpenLnbByHandle(mLnbHandle);
} }
return granted; return granted;
} }
@@ -877,7 +884,7 @@ public class Tuner implements AutoCloseable {
@Nullable @Nullable
public Descrambler openDescrambler() { public Descrambler openDescrambler() {
checkResource(TunerResourceManager.TUNER_RESOURCE_TYPE_DESCRAMBLER); 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); boolean granted = mTunerResourceManager.requestDemux(request, demuxHandle);
if (granted) { if (granted) {
mDemuxHandle = demuxHandle[0]; mDemuxHandle = demuxHandle[0];
nativeOpenDemuxByhandle(mDemuxHandle);
} }
return granted; return granted;
} }
@@ -940,6 +948,7 @@ public class Tuner implements AutoCloseable {
boolean granted = mTunerResourceManager.requestDescrambler(request, descramblerHandle); boolean granted = mTunerResourceManager.requestDescrambler(request, descramblerHandle);
if (granted) { if (granted) {
mDescramblerHandle = descramblerHandle[0]; mDescramblerHandle = descramblerHandle[0];
nativeOpenDescramblerByHandle(mDescramblerHandle);
} }
return granted; return granted;
} }

View File

@@ -23,7 +23,6 @@ import android.annotation.Nullable;
import android.annotation.SystemApi; import android.annotation.SystemApi;
import android.hardware.tv.tuner.V1_0.Constants; import android.hardware.tv.tuner.V1_0.Constants;
import android.media.tv.tuner.Tuner.Result; import android.media.tv.tuner.Tuner.Result;
import android.media.tv.tuner.TunerUtils;
import java.lang.annotation.Retention; import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy; import java.lang.annotation.RetentionPolicy;
@@ -239,13 +238,12 @@ public class Filter implements AutoCloseable {
*/ */
@Result @Result
public int configure(@NonNull FilterConfiguration config) { public int configure(@NonNull FilterConfiguration config) {
// TODO: validate main type, subtype, config, settings
int subType;
Settings s = config.getSettings(); Settings s = config.getSettings();
if (s != null) { int subType = (s == null) ? mSubtype : s.getType();
subType = s.getType(); if (mMainType != config.getType() || mSubtype != subType) {
} else { throw new IllegalArgumentException("Invalid filter config. filter main type="
subType = TunerUtils.getFilterSubtype(mMainType, mSubtype); + mMainType + ", filter subtype=" + mSubtype + ". config main type="
+ config.getType() + ", config subtype=" + subType);
} }
return nativeConfigureFilter(config.getType(), subType, config); return nativeConfigureFilter(config.getType(), subType, config);
} }

View File

@@ -27,7 +27,9 @@ import android.media.MediaCodec.LinearBlock;
* @hide * @hide
*/ */
@SystemApi @SystemApi
public class MediaEvent extends FilterEvent{ public class MediaEvent extends FilterEvent {
private native int nativeGetAudioHandle();
private final int mStreamId; private final int mStreamId;
private final boolean mIsPtsPresent; private final boolean mIsPtsPresent;
private final long mPts; private final long mPts;
@@ -134,7 +136,7 @@ public class MediaEvent extends FilterEvent{
* @see android.media.AudioTrack#ENCAPSULATION_MODE_HANDLE * @see android.media.AudioTrack#ENCAPSULATION_MODE_HANDLE
*/ */
public long getAudioHandle() { public long getAudioHandle() {
// TODO: implement nativeGetAudioHandle();
return mDataId; return mDataId;
} }

View File

@@ -67,8 +67,7 @@ public class TimeFilter implements AutoCloseable {
@Result @Result
public int setCurrentTimestamp(long timestamp) { public int setCurrentTimestamp(long timestamp) {
int res = nativeSetTimestamp(timestamp); int res = nativeSetTimestamp(timestamp);
// TODO: use a constant for SUCCESS if (res == Tuner.RESULT_SUCCESS) {
if (res == 0) {
mEnable = true; mEnable = true;
} }
return res; return res;

View File

@@ -2649,7 +2649,7 @@ static int android_media_tv_Tuner_time_filter_close(JNIEnv *env, jobject filter)
return (int) r; 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); sp<JTuner> tuner = getTuner(env, thiz);
return tuner->openDescrambler(); return tuner->openDescrambler();
} }
@@ -2961,7 +2961,7 @@ static const JNINativeMethod gTunerMethods[] = {
(void *)android_media_tv_Tuner_open_lnb_by_handle }, (void *)android_media_tv_Tuner_open_lnb_by_handle },
{ "nativeOpenLnbByName", "(Ljava/lang/String;)Landroid/media/tv/tuner/Lnb;", { "nativeOpenLnbByName", "(Ljava/lang/String;)Landroid/media/tv/tuner/Lnb;",
(void *)android_media_tv_Tuner_open_lnb_by_name }, (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 }, (void *)android_media_tv_Tuner_open_descrambler },
{ "nativeOpenDvrRecorder", "(J)Landroid/media/tv/tuner/dvr/DvrRecorder;", { "nativeOpenDvrRecorder", "(J)Landroid/media/tv/tuner/dvr/DvrRecorder;",
(void *)android_media_tv_Tuner_open_dvr_recorder }, (void *)android_media_tv_Tuner_open_dvr_recorder },