diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 2f9d7d0c38232..ff8068d4dfba6 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -7688,6 +7688,7 @@ package android.media.tv.tuner.frontend { public class FrontendStatus { method public int getAgc(); + method @NonNull public android.media.tv.tuner.frontend.Atsc3PlpInfo[] getAllAtsc3PlpInfo(); method @NonNull public android.media.tv.tuner.frontend.FrontendStatus.Atsc3PlpTuningInfo[] getAtsc3PlpTuningInfo(); method public int getBandwidth(); method public int getBer(); @@ -7730,6 +7731,7 @@ package android.media.tv.tuner.frontend { method public boolean isRfLocked(); method public boolean isShortFramesEnabled(); field public static final int FRONTEND_STATUS_TYPE_AGC = 14; // 0xe + field public static final int FRONTEND_STATUS_TYPE_ATSC3_ALL_PLP_INFO = 41; // 0x29 field public static final int FRONTEND_STATUS_TYPE_ATSC3_PLP_INFO = 21; // 0x15 field public static final int FRONTEND_STATUS_TYPE_BANDWIDTH = 25; // 0x19 field public static final int FRONTEND_STATUS_TYPE_BER = 2; // 0x2 diff --git a/media/java/android/media/tv/tuner/frontend/FrontendStatus.java b/media/java/android/media/tv/tuner/frontend/FrontendStatus.java index 8cedd04a8b893..c1e9b38a13b00 100644 --- a/media/java/android/media/tv/tuner/frontend/FrontendStatus.java +++ b/media/java/android/media/tv/tuner/frontend/FrontendStatus.java @@ -54,7 +54,7 @@ public class FrontendStatus { FRONTEND_STATUS_TYPE_IS_MISO_ENABLED, FRONTEND_STATUS_TYPE_IS_LINEAR, FRONTEND_STATUS_TYPE_IS_SHORT_FRAMES_ENABLED, FRONTEND_STATUS_TYPE_ISDBT_MODE, FRONTEND_STATUS_TYPE_ISDBT_PARTIAL_RECEPTION_FLAG, FRONTEND_STATUS_TYPE_STREAM_IDS, - FRONTEND_STATUS_TYPE_DVBT_CELL_IDS}) + FRONTEND_STATUS_TYPE_DVBT_CELL_IDS, FRONTEND_STATUS_TYPE_ATSC3_ALL_PLP_INFO}) @Retention(RetentionPolicy.SOURCE) public @interface FrontendStatusType {} @@ -165,7 +165,7 @@ public class FrontendStatus { public static final int FRONTEND_STATUS_TYPE_RF_LOCK = android.hardware.tv.tuner.FrontendStatusType.RF_LOCK; /** - * PLP information in a frequency band for ATSC-3.0 frontend. + * Current tuned PLP information in a frequency band for ATSC-3.0 frontend. */ public static final int FRONTEND_STATUS_TYPE_ATSC3_PLP_INFO = android.hardware.tv.tuner.FrontendStatusType.ATSC3_PLP_INFO; @@ -267,6 +267,13 @@ public class FrontendStatus { public static final int FRONTEND_STATUS_TYPE_DVBT_CELL_IDS = android.hardware.tv.tuner.FrontendStatusType.DVBT_CELL_IDS; + /** + * All PLP information in a frequency band for ATSC-3.0 frontend, which includes both tuned and + * not tuned PLPs for currently watching service. + */ + public static final int FRONTEND_STATUS_TYPE_ATSC3_ALL_PLP_INFO = + android.hardware.tv.tuner.FrontendStatusType.ATSC3_ALL_PLP_INFO; + /** @hide */ @IntDef(value = { AtscFrontendSettings.MODULATION_UNDEFINED, @@ -508,6 +515,7 @@ public class FrontendStatus { private Integer mIsdbtPartialReceptionFlag; private int[] mStreamIds; private int[] mDvbtCellIds; + private Atsc3PlpInfo[] mAllPlpInfo; // Constructed and fields set by JNI code. private FrontendStatus() { @@ -1077,6 +1085,25 @@ public class FrontendStatus { return mDvbtCellIds; } + /** + * Gets an array of all PLPs information of ATSC3 frontend, which includes both tuned and not + * tuned PLPs for currently watching service. + * + *
This query is only supported by Tuner HAL 2.0 or higher. Unsupported version or if HAL
+ * doesn't return all PLPs information will throw IllegalStateException. Use
+ * {@link TunerVersionChecker#getTunerVersion()} to check the version.
+ */
+ @SuppressLint("ArrayReturn")
+ @NonNull
+ public Atsc3PlpInfo[] getAllAtsc3PlpInfo() {
+ TunerVersionChecker.checkHigherOrEqualVersionTo(
+ TunerVersionChecker.TUNER_VERSION_2_0, "Atsc3PlpInfo all status");
+ if (mAllPlpInfo == null) {
+ throw new IllegalStateException("Atsc3PlpInfo all status is empty");
+ }
+ return mAllPlpInfo;
+ }
+
/**
* Information of each tuning Physical Layer Pipes.
*/
diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp
index 1b41494814b7a..e6a79796bef38 100644
--- a/media/jni/android_media_tv_Tuner.cpp
+++ b/media/jni/android_media_tv_Tuner.cpp
@@ -2607,6 +2607,24 @@ jobject JTuner::getFrontendStatus(jintArray types) {
jintArray valObj = env->NewIntArray(v.size());
env->SetIntArrayRegion(valObj, 0, v.size(), reinterpret_cast