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 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;
}

View File

@@ -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);
}

View File

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

View File

@@ -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;

View File

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