diff options
| author | 2020-03-17 17:55:17 +0000 | |
|---|---|---|
| committer | 2020-03-17 17:55:17 +0000 | |
| commit | db95fd7845a1ff456c5ae1d26fa33e7908f6256b (patch) | |
| tree | db1268c504e3c355a86dd88147b675db0d8f22a7 | |
| parent | 0424c5cb6280f92d655d52b7604dd779ab9e6296 (diff) | |
| parent | 2e6954886d4640c487a5bf5dd4dfba0fe67d7a5a (diff) | |
Merge "Move tuner constants to Tuner.java" into rvc-dev
| -rwxr-xr-x | api/system-current.txt | 13 | ||||
| -rw-r--r-- | media/java/android/media/tv/tuner/Descrambler.java | 2 | ||||
| -rw-r--r-- | media/java/android/media/tv/tuner/Lnb.java | 2 | ||||
| -rw-r--r-- | media/java/android/media/tv/tuner/Tuner.java | 106 | ||||
| -rw-r--r-- | media/java/android/media/tv/tuner/TunerConstants.java | 122 | ||||
| -rw-r--r-- | media/java/android/media/tv/tuner/TunerUtils.java | 14 | ||||
| -rw-r--r-- | media/java/android/media/tv/tuner/dvr/DvrPlayback.java | 2 | ||||
| -rw-r--r-- | media/java/android/media/tv/tuner/dvr/DvrRecorder.java | 2 | ||||
| -rw-r--r-- | media/java/android/media/tv/tuner/filter/Filter.java | 2 | ||||
| -rw-r--r-- | media/java/android/media/tv/tuner/filter/TimeFilter.java | 27 |
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."); } } |