summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2020-03-17 17:55:17 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-03-17 17:55:17 +0000
commitdb95fd7845a1ff456c5ae1d26fa33e7908f6256b (patch)
treedb1268c504e3c355a86dd88147b675db0d8f22a7
parent0424c5cb6280f92d655d52b7604dd779ab9e6296 (diff)
parent2e6954886d4640c487a5bf5dd4dfba0fe67d7a5a (diff)
Merge "Move tuner constants to Tuner.java" into rvc-dev
-rwxr-xr-xapi/system-current.txt13
-rw-r--r--media/java/android/media/tv/tuner/Descrambler.java2
-rw-r--r--media/java/android/media/tv/tuner/Lnb.java2
-rw-r--r--media/java/android/media/tv/tuner/Tuner.java106
-rw-r--r--media/java/android/media/tv/tuner/TunerConstants.java122
-rw-r--r--media/java/android/media/tv/tuner/TunerUtils.java14
-rw-r--r--media/java/android/media/tv/tuner/dvr/DvrPlayback.java2
-rw-r--r--media/java/android/media/tv/tuner/dvr/DvrRecorder.java2
-rw-r--r--media/java/android/media/tv/tuner/filter/Filter.java2
-rw-r--r--media/java/android/media/tv/tuner/filter/TimeFilter.java27
10 files changed, 125 insertions, 167 deletions
diff --git a/api/system-current.txt b/api/system-current.txt
index 61daa6fc7bfc..e84449054130 100755
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -4885,16 +4885,10 @@ package android.media.tv.tuner {
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void shareFrontendFromTuner(@NonNull android.media.tv.tuner.Tuner);
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int tune(@NonNull android.media.tv.tuner.frontend.FrontendSettings);
method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void updateResourcePriority(int, int);
- }
-
- public static interface Tuner.OnResourceLostListener {
- method public void onResourceLost(@NonNull android.media.tv.tuner.Tuner);
- }
-
- public final class TunerConstants {
field public static final int INVALID_AV_SYNC_ID = -1; // 0xffffffff
field public static final int INVALID_FILTER_ID = -1; // 0xffffffff
field public static final int INVALID_STREAM_ID = 65535; // 0xffff
+ field public static final long INVALID_TIMESTAMP = -1L; // 0xffffffffffffffffL
field public static final int INVALID_TS_PID = 65535; // 0xffff
field public static final int RESULT_INVALID_ARGUMENT = 4; // 0x4
field public static final int RESULT_INVALID_STATE = 3; // 0x3
@@ -4908,6 +4902,10 @@ package android.media.tv.tuner {
field public static final int SCAN_TYPE_UNDEFINED = 0; // 0x0
}
+ public static interface Tuner.OnResourceLostListener {
+ method public void onResourceLost(@NonNull android.media.tv.tuner.Tuner);
+ }
+
}
package android.media.tv.tuner.dvr {
@@ -5268,7 +5266,6 @@ package android.media.tv.tuner.filter {
method public long getSourceTime();
method public long getTimeStamp();
method public int setCurrentTimestamp(long);
- field public static final long TIMESTAMP_UNAVAILABLE = -1L; // 0xffffffffffffffffL
}
public final class TlvFilterConfiguration extends android.media.tv.tuner.filter.FilterConfiguration {
diff --git a/media/java/android/media/tv/tuner/Descrambler.java b/media/java/android/media/tv/tuner/Descrambler.java
index 40add566e858..975604c1c2c7 100644
--- a/media/java/android/media/tv/tuner/Descrambler.java
+++ b/media/java/android/media/tv/tuner/Descrambler.java
@@ -20,7 +20,7 @@ import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
-import android.media.tv.tuner.TunerConstants.Result;
+import android.media.tv.tuner.Tuner.Result;
import android.media.tv.tuner.filter.Filter;
import java.lang.annotation.Retention;
diff --git a/media/java/android/media/tv/tuner/Lnb.java b/media/java/android/media/tv/tuner/Lnb.java
index ea066321f376..525ee4d05ade 100644
--- a/media/java/android/media/tv/tuner/Lnb.java
+++ b/media/java/android/media/tv/tuner/Lnb.java
@@ -23,7 +23,7 @@ import android.annotation.RequiresPermission;
import android.annotation.SystemApi;
import android.content.Context;
import android.hardware.tv.tuner.V1_0.Constants;
-import android.media.tv.tuner.TunerConstants.Result;
+import android.media.tv.tuner.Tuner.Result;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
diff --git a/media/java/android/media/tv/tuner/Tuner.java b/media/java/android/media/tv/tuner/Tuner.java
index 08a33f1f861c..824255995de0 100644
--- a/media/java/android/media/tv/tuner/Tuner.java
+++ b/media/java/android/media/tv/tuner/Tuner.java
@@ -26,7 +26,6 @@ import android.annotation.SystemApi;
import android.content.Context;
import android.hardware.tv.tuner.V1_0.Constants;
import android.media.tv.TvInputService;
-import android.media.tv.tuner.TunerConstants.Result;
import android.media.tv.tuner.dvr.DvrPlayback;
import android.media.tv.tuner.dvr.DvrRecorder;
import android.media.tv.tuner.dvr.OnPlaybackStatusChangedListener;
@@ -50,6 +49,7 @@ import android.os.Handler;
import android.os.HandlerExecutor;
import android.os.Looper;
import android.os.Message;
+import android.util.Log;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -68,6 +68,96 @@ import java.util.concurrent.Executor;
*/
@SystemApi
public class Tuner implements AutoCloseable {
+ /**
+ * Invalid TS packet ID.
+ */
+ public static final int INVALID_TS_PID = Constants.Constant.INVALID_TS_PID;
+ /**
+ * Invalid stream ID.
+ */
+ public static final int INVALID_STREAM_ID = Constants.Constant.INVALID_STREAM_ID;
+ /**
+ * Invalid filter ID.
+ */
+ public static final int INVALID_FILTER_ID = Constants.Constant.INVALID_FILTER_ID;
+ /**
+ * Invalid AV Sync ID.
+ */
+ public static final int INVALID_AV_SYNC_ID = Constants.Constant.INVALID_AV_SYNC_ID;
+ /**
+ * Invalid timestamp.
+ *
+ * <p>Returned by {@link android.media.tv.tuner.filter.TimeFilter#getSourceTime()},
+ * {@link android.media.tv.tuner.filter.TimeFilter#getTimeStamp()}, or
+ * {@link Tuner#getAvSyncTime(int)} when the requested timestamp is not available.
+ *
+ * @see android.media.tv.tuner.filter.TimeFilter#getSourceTime()
+ * @see android.media.tv.tuner.filter.TimeFilter#getTimeStamp()
+ * @see Tuner#getAvSyncTime(int)
+ */
+ public static final long INVALID_TIMESTAMP = -1L;
+
+
+ /** @hide */
+ @IntDef(prefix = "SCAN_TYPE_", value = {SCAN_TYPE_UNDEFINED, SCAN_TYPE_AUTO, SCAN_TYPE_BLIND})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface ScanType {}
+ /**
+ * Scan type undefined.
+ */
+ public static final int SCAN_TYPE_UNDEFINED = Constants.FrontendScanType.SCAN_UNDEFINED;
+ /**
+ * Scan type auto.
+ *
+ * <p> Tuner will send {@link android.media.tv.tuner.frontend.ScanCallback#onLocked}
+ */
+ public static final int SCAN_TYPE_AUTO = Constants.FrontendScanType.SCAN_AUTO;
+ /**
+ * Blind scan.
+ *
+ * <p>Frequency range is not specified. The {@link android.media.tv.tuner.Tuner} will scan an
+ * implementation specific range.
+ */
+ public static final int SCAN_TYPE_BLIND = Constants.FrontendScanType.SCAN_BLIND;
+
+
+ /** @hide */
+ @IntDef({RESULT_SUCCESS, RESULT_UNAVAILABLE, RESULT_NOT_INITIALIZED, RESULT_INVALID_STATE,
+ RESULT_INVALID_ARGUMENT, RESULT_OUT_OF_MEMORY, RESULT_UNKNOWN_ERROR})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface Result {}
+
+ /**
+ * Operation succeeded.
+ */
+ public static final int RESULT_SUCCESS = Constants.Result.SUCCESS;
+ /**
+ * Operation failed because the corresponding resources are not available.
+ */
+ public static final int RESULT_UNAVAILABLE = Constants.Result.UNAVAILABLE;
+ /**
+ * Operation failed because the corresponding resources are not initialized.
+ */
+ public static final int RESULT_NOT_INITIALIZED = Constants.Result.NOT_INITIALIZED;
+ /**
+ * Operation failed because it's not in a valid state.
+ */
+ public static final int RESULT_INVALID_STATE = Constants.Result.INVALID_STATE;
+ /**
+ * Operation failed because there are invalid arguments.
+ */
+ public static final int RESULT_INVALID_ARGUMENT = Constants.Result.INVALID_ARGUMENT;
+ /**
+ * Memory allocation failed.
+ */
+ public static final int RESULT_OUT_OF_MEMORY = Constants.Result.OUT_OF_MEMORY;
+ /**
+ * Operation failed due to unknown errors.
+ */
+ public static final int RESULT_UNKNOWN_ERROR = Constants.Result.UNKNOWN_ERROR;
+
+
+
private static final String TAG = "MediaTvTuner";
private static final boolean DEBUG = false;
@@ -93,8 +183,12 @@ public class Tuner implements AutoCloseable {
public static final int DVR_TYPE_PLAYBACK = Constants.DvrType.PLAYBACK;
static {
- System.loadLibrary("media_tv_tuner");
- nativeInit();
+ try {
+ System.loadLibrary("media_tv_tuner");
+ nativeInit();
+ } catch (UnsatisfiedLinkError e) {
+ Log.d(TAG, "tuner JNI library not found!");
+ }
}
private final Context mContext;
@@ -411,7 +505,7 @@ public class Tuner implements AutoCloseable {
*/
@RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
@Result
- public int scan(@NonNull FrontendSettings settings, @TunerConstants.ScanType int scanType,
+ public int scan(@NonNull FrontendSettings settings, @ScanType int scanType,
@NonNull @CallbackExecutor Executor executor, @NonNull ScanCallback scanCallback) {
TunerUtils.checkTunerPermission(mContext);
if (mScanCallback != null || mScanCallbackExecutor != null) {
@@ -498,7 +592,7 @@ public class Tuner implements AutoCloseable {
public int getAvSyncHwId(@NonNull Filter filter) {
TunerUtils.checkTunerPermission(mContext);
Integer id = nativeGetAvSyncHwId(filter);
- return id == null ? TunerConstants.INVALID_AV_SYNC_ID : id;
+ return id == null ? INVALID_AV_SYNC_ID : id;
}
/**
@@ -514,7 +608,7 @@ public class Tuner implements AutoCloseable {
public long getAvSyncTime(int avSyncHwId) {
TunerUtils.checkTunerPermission(mContext);
Long time = nativeGetAvSyncTime(avSyncHwId);
- return time == null ? TunerConstants.TIMESTAMP_UNAVAILABLE : time;
+ return time == null ? INVALID_TIMESTAMP : time;
}
/**
diff --git a/media/java/android/media/tv/tuner/TunerConstants.java b/media/java/android/media/tv/tuner/TunerConstants.java
deleted file mode 100644
index 6d89962d190f..000000000000
--- a/media/java/android/media/tv/tuner/TunerConstants.java
+++ /dev/null
@@ -1,122 +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;
-
-import android.annotation.IntDef;
-import android.annotation.SystemApi;
-import android.hardware.tv.tuner.V1_0.Constants;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * Constants for tuner framework.
- *
- * @hide
- */
-@SystemApi
-public final class TunerConstants {
- /**
- * Invalid TS packet ID.
- */
- public static final int INVALID_TS_PID = Constants.Constant.INVALID_TS_PID;
- /**
- * Invalid stream ID.
- */
- public static final int INVALID_STREAM_ID = Constants.Constant.INVALID_STREAM_ID;
- /**
- * Invalid filter ID.
- */
- public static final int INVALID_FILTER_ID = Constants.Constant.INVALID_FILTER_ID;
- /**
- * Invalid AV Sync ID.
- */
- public static final int INVALID_AV_SYNC_ID = Constants.Constant.INVALID_AV_SYNC_ID;
- /**
- * Timestamp is unavailable.
- *
- * <p>Returned by {@link android.media.tv.tuner.filter.TimeFilter#getSourceTime()},
- * {@link android.media.tv.tuner.filter.TimeFilter#getTimeStamp()}, or
- * {@link Tuner#getAvSyncTime(int)} when the requested timestamp is not available.
- *
- * @see android.media.tv.tuner.filter.TimeFilter#getSourceTime()
- * @see android.media.tv.tuner.filter.TimeFilter#getTimeStamp()
- * @see Tuner#getAvSyncTime(int)
- * @hide
- */
- public static final long TIMESTAMP_UNAVAILABLE = -1L;
-
- /** @hide */
- @IntDef(prefix = "SCAN_TYPE_", value = {SCAN_TYPE_UNDEFINED, SCAN_TYPE_AUTO, SCAN_TYPE_BLIND})
- @Retention(RetentionPolicy.SOURCE)
- public @interface ScanType {}
- /**
- * Scan type undefined.
- */
- public static final int SCAN_TYPE_UNDEFINED = Constants.FrontendScanType.SCAN_UNDEFINED;
- /**
- * Scan type auto.
- *
- * <p> Tuner will send {@link android.media.tv.tuner.frontend.ScanCallback#onLocked}
- */
- public static final int SCAN_TYPE_AUTO = Constants.FrontendScanType.SCAN_AUTO;
- /**
- * Blind scan.
- *
- * <p>Frequency range is not specified. The {@link android.media.tv.tuner.Tuner} will scan an
- * implementation specific range.
- */
- public static final int SCAN_TYPE_BLIND = Constants.FrontendScanType.SCAN_BLIND;
-
- /** @hide */
- @IntDef({RESULT_SUCCESS, RESULT_UNAVAILABLE, RESULT_NOT_INITIALIZED, RESULT_INVALID_STATE,
- RESULT_INVALID_ARGUMENT, RESULT_OUT_OF_MEMORY, RESULT_UNKNOWN_ERROR})
- @Retention(RetentionPolicy.SOURCE)
- public @interface Result {}
-
- /**
- * Operation succeeded.
- */
- public static final int RESULT_SUCCESS = Constants.Result.SUCCESS;
- /**
- * Operation failed because the corresponding resources are not available.
- */
- public static final int RESULT_UNAVAILABLE = Constants.Result.UNAVAILABLE;
- /**
- * Operation failed because the corresponding resources are not initialized.
- */
- public static final int RESULT_NOT_INITIALIZED = Constants.Result.NOT_INITIALIZED;
- /**
- * Operation failed because it's not in a valid state.
- */
- public static final int RESULT_INVALID_STATE = Constants.Result.INVALID_STATE;
- /**
- * Operation failed because there are invalid arguments.
- */
- public static final int RESULT_INVALID_ARGUMENT = Constants.Result.INVALID_ARGUMENT;
- /**
- * Memory allocation failed.
- */
- public static final int RESULT_OUT_OF_MEMORY = Constants.Result.OUT_OF_MEMORY;
- /**
- * Operation failed due to unknown errors.
- */
- public static final int RESULT_UNKNOWN_ERROR = Constants.Result.UNKNOWN_ERROR;
-
- private TunerConstants() {
- }
-}
diff --git a/media/java/android/media/tv/tuner/TunerUtils.java b/media/java/android/media/tv/tuner/TunerUtils.java
index 2258ee559ea0..c3be12a0bf5e 100644
--- a/media/java/android/media/tv/tuner/TunerUtils.java
+++ b/media/java/android/media/tv/tuner/TunerUtils.java
@@ -171,22 +171,22 @@ public final class TunerUtils {
*/
@Nullable
public static void throwExceptionForResult(
- @TunerConstants.Result int r, @Nullable String msg) {
+ @Tuner.Result int r, @Nullable String msg) {
if (msg == null) {
msg = "";
}
switch (r) {
- case TunerConstants.RESULT_INVALID_ARGUMENT:
+ case Tuner.RESULT_INVALID_ARGUMENT:
throw new IllegalArgumentException(msg);
- case TunerConstants.RESULT_INVALID_STATE:
+ case Tuner.RESULT_INVALID_STATE:
throw new IllegalStateException(msg);
- case TunerConstants.RESULT_NOT_INITIALIZED:
+ case Tuner.RESULT_NOT_INITIALIZED:
throw new IllegalStateException("Invalid state: not initialized. " + msg);
- case TunerConstants.RESULT_OUT_OF_MEMORY:
+ case Tuner.RESULT_OUT_OF_MEMORY:
throw new OutOfMemoryError(msg);
- case TunerConstants.RESULT_UNAVAILABLE:
+ case Tuner.RESULT_UNAVAILABLE:
throw new IllegalStateException("Invalid state: resource unavailable. " + msg);
- case TunerConstants.RESULT_UNKNOWN_ERROR:
+ case Tuner.RESULT_UNKNOWN_ERROR:
throw new RuntimeException("Unknown error" + msg);
default:
break;
diff --git a/media/java/android/media/tv/tuner/dvr/DvrPlayback.java b/media/java/android/media/tv/tuner/dvr/DvrPlayback.java
index 37a016ecb4ce..0d10d941a15d 100644
--- a/media/java/android/media/tv/tuner/dvr/DvrPlayback.java
+++ b/media/java/android/media/tv/tuner/dvr/DvrPlayback.java
@@ -21,7 +21,7 @@ import android.annotation.IntDef;
import android.annotation.NonNull;
import android.annotation.SystemApi;
import android.hardware.tv.tuner.V1_0.Constants;
-import android.media.tv.tuner.TunerConstants.Result;
+import android.media.tv.tuner.Tuner.Result;
import android.media.tv.tuner.filter.Filter;
import android.os.ParcelFileDescriptor;
diff --git a/media/java/android/media/tv/tuner/dvr/DvrRecorder.java b/media/java/android/media/tv/tuner/dvr/DvrRecorder.java
index d06356cfb6de..dbda7bbad5f2 100644
--- a/media/java/android/media/tv/tuner/dvr/DvrRecorder.java
+++ b/media/java/android/media/tv/tuner/dvr/DvrRecorder.java
@@ -19,7 +19,7 @@ package android.media.tv.tuner.dvr;
import android.annotation.BytesLong;
import android.annotation.NonNull;
import android.annotation.SystemApi;
-import android.media.tv.tuner.TunerConstants.Result;
+import android.media.tv.tuner.Tuner.Result;
import android.media.tv.tuner.filter.Filter;
import android.os.ParcelFileDescriptor;
diff --git a/media/java/android/media/tv/tuner/filter/Filter.java b/media/java/android/media/tv/tuner/filter/Filter.java
index 4777fe861420..8dc062274641 100644
--- a/media/java/android/media/tv/tuner/filter/Filter.java
+++ b/media/java/android/media/tv/tuner/filter/Filter.java
@@ -22,7 +22,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.hardware.tv.tuner.V1_0.Constants;
-import android.media.tv.tuner.TunerConstants.Result;
+import android.media.tv.tuner.Tuner.Result;
import android.media.tv.tuner.TunerUtils;
import java.lang.annotation.Retention;
diff --git a/media/java/android/media/tv/tuner/filter/TimeFilter.java b/media/java/android/media/tv/tuner/filter/TimeFilter.java
index 371ccc44337a..be0a055b41ef 100644
--- a/media/java/android/media/tv/tuner/filter/TimeFilter.java
+++ b/media/java/android/media/tv/tuner/filter/TimeFilter.java
@@ -17,8 +17,8 @@
package android.media.tv.tuner.filter;
import android.annotation.SystemApi;
-import android.media.tv.tuner.TunerConstants;
-import android.media.tv.tuner.TunerConstants.Result;
+import android.media.tv.tuner.Tuner;
+import android.media.tv.tuner.Tuner.Result;
import android.media.tv.tuner.TunerUtils;
/**
@@ -35,17 +35,6 @@ import android.media.tv.tuner.TunerUtils;
@SystemApi
public class TimeFilter implements AutoCloseable {
- /**
- * Timestamp is unavailable.
- *
- * <p>Returned by {@link #getSourceTime()} or {@link #getTimeStamp()} when the requested
- * timestamp is not available.
- *
- * @see #getSourceTime()
- * @see #getTimeStamp()
- */
- public static final long TIMESTAMP_UNAVAILABLE = -1L;
-
private native int nativeSetTimestamp(long timestamp);
private native int nativeClearTimestamp();
@@ -108,12 +97,12 @@ public class TimeFilter implements AutoCloseable {
*
* @return current timestamp in the time filter. It's based on the 90KHz counter, and it's
* the same format as PTS (Presentation Time Stamp) defined in ISO/IEC 13818-1:2019. The
- * timestamps may or may not be related to PTS or DTS. Returns {@link #TIMESTAMP_UNAVAILABLE}
- * if the timestamp is never set.
+ * timestamps may or may not be related to PTS or DTS. Returns
+ * {@link Tuner#INVALID_TIMESTAMP} if the timestamp is never set.
*/
public long getTimeStamp() {
if (!mEnable) {
- return TIMESTAMP_UNAVAILABLE;
+ return Tuner.INVALID_TIMESTAMP;
}
return nativeGetTimestamp();
}
@@ -126,11 +115,11 @@ public class TimeFilter implements AutoCloseable {
* @return first timestamp of incoming data stream. It's based on the 90KHz counter, and
* it's the same format as PTS (Presentation Time Stamp) defined in ISO/IEC 13818-1:2019.
* The timestamps may or may not be related to PTS or DTS. Returns
- * {@link #TIMESTAMP_UNAVAILABLE} if the timestamp is not available.
+ * {@link Tuner#INVALID_TIMESTAMP} if the timestamp is not available.
*/
public long getSourceTime() {
if (!mEnable) {
- return TIMESTAMP_UNAVAILABLE;
+ return Tuner.INVALID_TIMESTAMP;
}
return nativeGetSourceTime();
}
@@ -144,7 +133,7 @@ public class TimeFilter implements AutoCloseable {
@Override
public void close() {
int res = nativeClose();
- if (res != TunerConstants.RESULT_SUCCESS) {
+ if (res != Tuner.RESULT_SUCCESS) {
TunerUtils.throwExceptionForResult(res, "Failed to close time filter.");
}
}