summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author David Zhao <qingxun@google.com> 2024-02-14 02:55:06 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-02-14 02:55:06 +0000
commitad48b3098e6fdd7b30fb2ee0e178368f95a49767 (patch)
tree716e26367726b7de79eb4a3abf9b4a1504ebe65c
parent83f0f8c3f7987643e9eb16be4e26e76d36091b2b (diff)
parent74509f898275d6db8204a31a2ddc66fe1747f647 (diff)
Merge "Add SignalingDataRequest-Info-Response" into main
-rw-r--r--core/api/current.txt61
-rw-r--r--media/java/android/media/tv/BroadcastInfoRequest.java2
-rw-r--r--media/java/android/media/tv/BroadcastInfoResponse.java2
-rw-r--r--media/java/android/media/tv/SignalingDataInfo.java132
-rw-r--r--media/java/android/media/tv/SignalingDataRequest.java220
-rw-r--r--media/java/android/media/tv/SignalingDataResponse.java64
6 files changed, 374 insertions, 107 deletions
diff --git a/core/api/current.txt b/core/api/current.txt
index 36063288b538..044499492a9a 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -26915,6 +26915,67 @@ package android.media.tv {
field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.SectionResponse> CREATOR;
}
+ @FlaggedApi("android.media.tv.flags.tiaf_v_apis") public final class SignalingDataInfo implements android.os.Parcelable {
+ ctor public SignalingDataInfo(@NonNull String, @NonNull String, int, int);
+ ctor public SignalingDataInfo(@NonNull String, @NonNull String, int, int, @NonNull String);
+ method public int describeContents();
+ method @NonNull public String getEncoding();
+ method public int getGroup();
+ method @NonNull public String getSignalingDataType();
+ method @NonNull public String getTable();
+ method public int getVersion();
+ method public void writeToParcel(@NonNull android.os.Parcel, int);
+ field public static final String CONTENT_ENCODING_BASE64 = "Base64";
+ field public static final String CONTENT_ENCODING_UTF_8 = "UTF-8";
+ field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.SignalingDataInfo> CREATOR;
+ field public static final int LLS_NO_GROUP_ID = -1; // 0xffffffff
+ }
+
+ @FlaggedApi("android.media.tv.flags.tiaf_v_apis") public final class SignalingDataRequest extends android.media.tv.BroadcastInfoRequest implements android.os.Parcelable {
+ ctor public SignalingDataRequest(int, int, int, @NonNull java.util.List<java.lang.String>);
+ method public int getGroup();
+ method @NonNull public java.util.List<java.lang.String> getSignalingDataTypes();
+ field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.SignalingDataRequest> CREATOR;
+ field public static final int SIGNALING_DATA_NO_GROUP_ID = -1; // 0xffffffff
+ field public static final String SIGNALING_METADATA_AEAT = "AEAT";
+ field public static final String SIGNALING_METADATA_AEI = "AEI";
+ field public static final String SIGNALING_METADATA_APD = "APD";
+ field public static final String SIGNALING_METADATA_ASD = "ASD";
+ field public static final String SIGNALING_METADATA_ASPD = "ASPD";
+ field public static final String SIGNALING_METADATA_CAD = "CAD";
+ field public static final String SIGNALING_METADATA_CDT = "CDT";
+ field public static final String SIGNALING_METADATA_CRIT = "CRIT";
+ field public static final String SIGNALING_METADATA_DCIT = "DCIT";
+ field public static final String SIGNALING_METADATA_DWD = "DWD";
+ field public static final String SIGNALING_METADATA_EMSG = "EMSG";
+ field public static final String SIGNALING_METADATA_EVTI = "EVTI";
+ field public static final String SIGNALING_METADATA_HELD = "HELD";
+ field public static final String SIGNALING_METADATA_IED = "IED";
+ field public static final String SIGNALING_METADATA_MPD = "MPD";
+ field public static final String SIGNALING_METADATA_MPIT = "MPIT";
+ field public static final String SIGNALING_METADATA_MPT = "MPT";
+ field public static final String SIGNALING_METADATA_OSN = "OSN";
+ field public static final String SIGNALING_METADATA_PAT = "PAT";
+ field public static final String SIGNALING_METADATA_RDT = "RDT";
+ field public static final String SIGNALING_METADATA_RRT = "RRT";
+ field public static final String SIGNALING_METADATA_RSAT = "RSAT";
+ field public static final String SIGNALING_METADATA_SLT = "SLT";
+ field public static final String SIGNALING_METADATA_SMT = "SMT";
+ field public static final String SIGNALING_METADATA_SSD = "SSD";
+ field public static final String SIGNALING_METADATA_STSID = "STSID";
+ field public static final String SIGNALING_METADATA_STT = "STT";
+ field public static final String SIGNALING_METADATA_USBD = "USBD";
+ field public static final String SIGNALING_METADATA_USD = "USD";
+ field public static final String SIGNALING_METADATA_VSPD = "VSPD";
+ }
+
+ @FlaggedApi("android.media.tv.flags.tiaf_v_apis") public final class SignalingDataResponse extends android.media.tv.BroadcastInfoResponse implements android.os.Parcelable {
+ ctor public SignalingDataResponse(int, int, int, @NonNull java.util.List<java.lang.String>, @NonNull java.util.List<android.media.tv.SignalingDataInfo>);
+ method @NonNull public java.util.List<android.media.tv.SignalingDataInfo> getSignalingDataInfoList();
+ method @NonNull public java.util.List<java.lang.String> getSignalingDataTypes();
+ field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.SignalingDataResponse> CREATOR;
+ }
+
public final class StreamEventRequest extends android.media.tv.BroadcastInfoRequest implements android.os.Parcelable {
ctor public StreamEventRequest(int, int, @NonNull android.net.Uri, @NonNull String);
method @NonNull public String getEventName();
diff --git a/media/java/android/media/tv/BroadcastInfoRequest.java b/media/java/android/media/tv/BroadcastInfoRequest.java
index eb980a385cd3..9035cb78f132 100644
--- a/media/java/android/media/tv/BroadcastInfoRequest.java
+++ b/media/java/android/media/tv/BroadcastInfoRequest.java
@@ -85,6 +85,8 @@ public abstract class BroadcastInfoRequest implements Parcelable {
return CommandRequest.createFromParcelBody(source);
case TvInputManager.BROADCAST_INFO_TYPE_TIMELINE:
return TimelineRequest.createFromParcelBody(source);
+ case TvInputManager.BROADCAST_INFO_TYPE_SIGNALING_DATA:
+ return SignalingDataRequest.createFromParcelBody(source);
default:
throw new IllegalStateException(
"Unexpected broadcast info request type (value "
diff --git a/media/java/android/media/tv/BroadcastInfoResponse.java b/media/java/android/media/tv/BroadcastInfoResponse.java
index 4ba2b2c2ff7b..f589244c1da1 100644
--- a/media/java/android/media/tv/BroadcastInfoResponse.java
+++ b/media/java/android/media/tv/BroadcastInfoResponse.java
@@ -71,6 +71,8 @@ public abstract class BroadcastInfoResponse implements Parcelable {
return CommandResponse.createFromParcelBody(source);
case TvInputManager.BROADCAST_INFO_TYPE_TIMELINE:
return TimelineResponse.createFromParcelBody(source);
+ case TvInputManager.BROADCAST_INFO_TYPE_SIGNALING_DATA:
+ return SignalingDataResponse.createFromParcelBody(source);
default:
throw new IllegalStateException(
"Unexpected broadcast info response type (value "
diff --git a/media/java/android/media/tv/SignalingDataInfo.java b/media/java/android/media/tv/SignalingDataInfo.java
index b29ea5c905ec..e5231fcc704f 100644
--- a/media/java/android/media/tv/SignalingDataInfo.java
+++ b/media/java/android/media/tv/SignalingDataInfo.java
@@ -16,11 +16,19 @@
package android.media.tv;
+import android.annotation.FlaggedApi;
import android.annotation.NonNull;
+import android.media.tv.flags.Flags;
import android.os.Parcelable;
-/** @hide */
-public class SignalingDataInfo implements Parcelable {
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Describes a metadata object of a {@link SignalingDataResponse}.
+ */
+@FlaggedApi(Flags.FLAG_TIAF_V_APIS)
+public final class SignalingDataInfo implements Parcelable {
public static final @NonNull Parcelable.Creator<SignalingDataInfo> CREATOR =
new Parcelable.Creator<SignalingDataInfo>() {
@Override
@@ -34,59 +42,131 @@ public class SignalingDataInfo implements Parcelable {
}
};
- private int mTableId;
- private @NonNull String mTable;
- private int mMetadataType;
- private int mVersion;
- private int mGroup;
- private @NonNull String mEncoding;
+ private final @NonNull String mTable;
+ private final @NonNull @SignalingDataRequest.SignalingMetadata String mSignalingDataType;
+ private final int mVersion;
+ private final int mGroup;
+ private final @NonNull String mEncoding;
+
+ /**
+ * This value for {@link #getGroup()} denotes that there's no group associated with this
+ * metadata.
+ */
+ public static final int LLS_NO_GROUP_ID = -1;
+
+ /**
+ * The encoding of the content is UTF-8. This is the default value.
+ */
+ public static final String CONTENT_ENCODING_UTF_8 = "UTF-8";
+
+ /**
+ * A/344:2023-5 9.2.10 compliant string for when the encoding of the content is Base64.
+ */
+ public static final String CONTENT_ENCODING_BASE64 = "Base64";
+
+ /**
+ * @hide
+ */
+ @android.annotation.StringDef(prefix = "CONTENT_ENCODING_", value = {
+ CONTENT_ENCODING_UTF_8,
+ CONTENT_ENCODING_BASE64
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface ContentEncoding {}
public SignalingDataInfo(
- int tableId,
@NonNull String table,
- int metadataType,
+ @NonNull String signalingDataType,
+ int version,
+ int group) {
+ this.mTable = table;
+ com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mTable);
+ this.mSignalingDataType = signalingDataType;
+ this.mVersion = version;
+ this.mGroup = group;
+ this.mEncoding = CONTENT_ENCODING_UTF_8;
+ }
+
+ public SignalingDataInfo(
+ @NonNull String table,
+ @NonNull String signalingDataType,
int version,
int group,
@NonNull String encoding) {
- this.mTableId = tableId;
this.mTable = table;
com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mTable);
- this.mMetadataType = metadataType;
+ this.mSignalingDataType = signalingDataType;
this.mVersion = version;
this.mGroup = group;
this.mEncoding = encoding;
com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mEncoding);
}
- public int getTableId() {
- return mTableId;
- }
-
- public @NonNull String getTable() {
+ /**
+ * The signaling table data, represented as a XML, JSON or BASE64 string.
+ *
+ * <p> For more details on how this data is formatted refer to the ATSC standard
+ * A/344:2023-5 9.2.10 - Query Signaling Data API.
+ *
+ * @return The signaling table data.
+ */
+ @NonNull
+ public String getTable() {
return mTable;
}
- public int getMetadataType() {
- return mMetadataType;
+ /**
+ * Gets the signaling data type contained in this metadata object. This may be either a
+ * LLS Metadata Object or a SLS Metadata Object name.
+ *
+ * <p>For more details on each type of metadata that can be requested, refer to the ATSC
+ * standard A/344:2023-5 9.2.10 - Query Signaling Data API.
+ *
+ * @return the type of metadata in this metadata object
+ */
+ @NonNull
+ public @SignalingDataRequest.SignalingMetadata String getSignalingDataType() {
+ return mSignalingDataType;
}
+ /**
+ * Gets the version of the signalling element. For LLS, this should be the
+ * LLS_table_version. For SLS Metadata Objects, this should be metadataEnvelope@version.
+ *
+ * For more details on where this version comes from, refer to the ATSC 3.0
+ * standard A/344:2023-5 9.2.10 - Query Signaling Data API.
+ *
+ * @return The version of the signalling element.
+ */
public int getVersion() {
return mVersion;
}
+ /**
+ * Gets the LLS group ID. Required for LLS Tables. For SLS Metadata Objects, this should be
+ * {@link #LLS_NO_GROUP_ID}.
+ *
+ * @return the LLS group ID.
+ */
public int getGroup() {
return mGroup;
}
- public @NonNull String getEncoding() {
+ /**
+ * The content encoding of the data. This value defaults to {@link #CONTENT_ENCODING_UTF_8}.
+ *
+ * <p> Can be either {@link #CONTENT_ENCODING_BASE64} or {@link #CONTENT_ENCODING_UTF_8}.
+ * @return The content encoding of the data.
+ */
+ @NonNull
+ public @ContentEncoding String getEncoding() {
return mEncoding;
}
@Override
public void writeToParcel(@NonNull android.os.Parcel dest, int flags) {
- dest.writeInt(mTableId);
dest.writeString(mTable);
- dest.writeInt(mMetadataType);
+ dest.writeString(mSignalingDataType);
dest.writeInt(mVersion);
dest.writeInt(mGroup);
dest.writeString(mEncoding);
@@ -98,17 +178,17 @@ public class SignalingDataInfo implements Parcelable {
}
SignalingDataInfo(@NonNull android.os.Parcel in) {
- int tableId = in.readInt();
String table = in.readString();
- int metadataType = in.readInt();
+ String metadataType = in.readString();
int version = in.readInt();
int group = in.readInt();
String encoding = in.readString();
- this.mTableId = tableId;
this.mTable = table;
com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mTable);
- this.mMetadataType = metadataType;
+ this.mSignalingDataType = metadataType;
+ com.android.internal.util.AnnotationValidations
+ .validate(NonNull.class, null, mSignalingDataType);
this.mVersion = version;
this.mGroup = group;
this.mEncoding = encoding;
diff --git a/media/java/android/media/tv/SignalingDataRequest.java b/media/java/android/media/tv/SignalingDataRequest.java
index dcf1d48aaf3a..9874517a9085 100644
--- a/media/java/android/media/tv/SignalingDataRequest.java
+++ b/media/java/android/media/tv/SignalingDataRequest.java
@@ -16,19 +16,27 @@
package android.media.tv;
+import android.annotation.FlaggedApi;
import android.annotation.NonNull;
+import android.media.tv.flags.Flags;
+import android.os.Parcel;
import android.os.Parcelable;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.List;
+
/**
* Request to retrieve the Low-level Signalling Tables (LLS) and Service-layer Signalling (SLS)
* metadata.
*
- * <p>For more details on each type of metadata that can be requested, refer to the ATSC standard
+ * <p> For more details on each type of metadata that can be requested, refer to the ATSC standard
* A/344:2023-5 9.2.10 - Query Signaling Data API.
*
- * @hide
+ * @see SignalingDataResponse
*/
-public class SignalingDataRequest extends BroadcastInfoRequest implements Parcelable {
+@FlaggedApi(Flags.FLAG_TIAF_V_APIS)
+public final class SignalingDataRequest extends BroadcastInfoRequest implements Parcelable {
private static final @TvInputManager.BroadcastInfoType int REQUEST_TYPE =
TvInputManager.BROADCAST_INFO_TYPE_SIGNALING_DATA;
@@ -45,126 +53,220 @@ public class SignalingDataRequest extends BroadcastInfoRequest implements Parcel
}
};
- /** SLS Metadata: All metadata objects for the requested service(s) */
- public static final int SLS_METADATA_ALL = 0x7FFFFFF;
/** SLS Metadata: APD for the requested service(s) */
- public static final int SLS_METADATA_APD = 1;
+ public static final String SIGNALING_METADATA_APD = "APD";
/** SLS Metadata: USBD for the requested service(s) */
- public static final int SLS_METADATA_USBD = 1 << 1;
+ public static final String SIGNALING_METADATA_USBD = "USBD";
/** SLS Metadata: S-TSID for the requested service(s) */
- public static final int SLS_METADATA_STSID = 1 << 2;
+ public static final String SIGNALING_METADATA_STSID = "STSID";
/** SLS Metadata: DASH MPD for the requested service(s) */
- public static final int SLS_METADATA_MPD = 1 << 3;
+ public static final String SIGNALING_METADATA_MPD = "MPD";
/** SLS Metadata: User Service Description for MMTP */
- public static final int SLS_METADATA_USD = 1 << 4;
+ public static final String SIGNALING_METADATA_USD = "USD";
/** SLS Metadata: MMT Package Access Table for the requested service(s) */
- public static final int SLS_METADATA_PAT = 1 << 5;
+ public static final String SIGNALING_METADATA_PAT = "PAT";
/** SLS Metadata: MMT Package Table for the requested service(s) */
- public static final int SLS_METADATA_MPT = 1 << 6;
+ public static final String SIGNALING_METADATA_MPT = "MPT";
/** SLS Metadata: MMT Media Presentation Information Table for the requested service(s) */
- public static final int SLS_METADATA_MPIT = 1 << 7;
+ public static final String SIGNALING_METADATA_MPIT = "MPIT";
/** SLS Metadata: MMT Clock Relation Information for the requested service(s) */
- public static final int SLS_METADATA_CRIT = 1 << 8;
+ public static final String SIGNALING_METADATA_CRIT = "CRIT";
/** SLS Metadata: MMT Device Capabilities Information Table for the requested service(s) */
- public static final int SLS_METADATA_DCIT = 1 << 9;
+ public static final String SIGNALING_METADATA_DCIT = "DCIT";
/** SLS Metadata: HTML Entry Pages Location Description for the requested service(s) */
- public static final int SLS_METADATA_HELD = 1 << 10;
+ public static final String SIGNALING_METADATA_HELD = "HELD";
/** SLS Metadata: Distribution Window Desciription for the requested service(s) */
- public static final int SLS_METADATA_DWD = 1 << 11;
+ public static final String SIGNALING_METADATA_DWD = "DWD";
/** SLS Metadata: MMT Application Event Information for the requested service(s) */
- public static final int SLS_METADATA_AEI = 1 << 12;
+ public static final String SIGNALING_METADATA_AEI = "AEI";
/** SLS Metadata: Video Stream Properties Descriptor */
- public static final int SLS_METADATA_VSPD = 1 << 13;
+ public static final String SIGNALING_METADATA_VSPD = "VSPD";
/** SLS Metadata: ATSC Staggercast Descriptor */
- public static final int SLS_METADATA_ASD = 1 << 14;
+ public static final String SIGNALING_METADATA_ASD = "ASD";
/** SLS Metadata: Inband Event Descriptor */
- public static final int SLS_METADATA_IED = 1 << 15;
+ public static final String SIGNALING_METADATA_IED = "IED";
/** SLS Metadata: Caption Asset Descriptor */
- public static final int SLS_METADATA_CAD = 1 << 16;
+ public static final String SIGNALING_METADATA_CAD = "CAD";
/** SLS Metadata: Audio Stream Properties Descriptor */
- public static final int SLS_METADATA_ASPD = 1 << 17;
+ public static final String SIGNALING_METADATA_ASPD = "ASPD";
/** SLS Metadata: Security Properties Descriptor */
- public static final int SLS_METADATA_SSD = 1 << 18;
+ public static final String SIGNALING_METADATA_SSD = "SSD";
/** SLS Metadata: ROUTE/DASH Application Dynamic Event for the requested service(s) */
- public static final int SLS_METADATA_EMSG = 1 << 19;
+ public static final String SIGNALING_METADATA_EMSG = "EMSG";
/** SLS Metadata: MMT Application Dynamic Event for the requested service(s) */
- public static final int SLS_METADATA_EVTI = 1 << 20;
+ public static final String SIGNALING_METADATA_EVTI = "EVTI";
- /** Regional Service Availability Table for the requested service(s) */
- public static final int SLS_METADATA_RSAT = 1 << 21;
+ /** SLS Metadata: Regional Service Availability Table for the requested service(s) */
+ public static final String SIGNALING_METADATA_RSAT = "RSAT";
- private final int mGroup;
- private @NonNull final int[] mLlsTableIds;
- private final int mSlsMetadataTypes;
+ /** SLS Metadata: Recovery Data Table for the requested service(s) */
+ public static final String SIGNALING_METADATA_RDT = "RDT";
- SignalingDataRequest(
- int requestId,
- int option,
- int group,
- @NonNull int[] llsTableIds,
- int slsMetadataTypes) {
- super(REQUEST_TYPE, requestId, option);
- mGroup = group;
- mLlsTableIds = llsTableIds;
- mSlsMetadataTypes = slsMetadataTypes;
- }
+ /**
+ * Service List Table for the requested service(s), LLS_table_id = 1.
+ */
+ public static final String SIGNALING_METADATA_SLT = "SLT";
- SignalingDataRequest(@NonNull android.os.Parcel in) {
- super(REQUEST_TYPE, in);
+ /**
+ * Region Rating Table for the requested service(s), LLS_table_id = 2.
+ */
+ public static final String SIGNALING_METADATA_RRT = "RRT";
- int group = in.readInt();
- int[] llsTableIds = in.createIntArray();
- int slsMetadataTypes = in.readInt();
+ /**
+ * System Time Table for the requested service(s), LLS_table_id = 3.
+ */
+ public static final String SIGNALING_METADATA_STT = "STT";
+ /**
+ * Advance Emergency Information Table for the requested service(s), LLS_table_id = 4.
+ */
+ public static final String SIGNALING_METADATA_AEAT = "AEAT";
+
+ /**
+ * Onscreen Message Notifications for the requested service(s), LLS_table_id = 5.
+ */
+ public static final String SIGNALING_METADATA_OSN = "OSN";
+
+ /**
+ * Signed Multitable for the requested service(s), LLS_table_id = 0xFE (254).
+ */
+ public static final String SIGNALING_METADATA_SMT = "SMT";
+
+ /**
+ * CertificateData Tablefor the requested service(s), LLS_table_id = 6.
+ */
+ public static final String SIGNALING_METADATA_CDT = "CDT";
+
+ private final int mGroup;
+ private final @NonNull List<String> mSignalingDataTypes;
+
+ /**
+ * Denotes that theres no group associated with this request.
+ */
+ public static final int SIGNALING_DATA_NO_GROUP_ID = -1;
+
+ /**
+ * @hide
+ */
+ @android.annotation.StringDef(prefix = "SIGNALING_METADATA_", value = {
+ SIGNALING_METADATA_APD,
+ SIGNALING_METADATA_USBD,
+ SIGNALING_METADATA_STSID,
+ SIGNALING_METADATA_MPD,
+ SIGNALING_METADATA_USD,
+ SIGNALING_METADATA_PAT,
+ SIGNALING_METADATA_MPT,
+ SIGNALING_METADATA_MPIT,
+ SIGNALING_METADATA_CRIT,
+ SIGNALING_METADATA_DCIT,
+ SIGNALING_METADATA_HELD,
+ SIGNALING_METADATA_DWD,
+ SIGNALING_METADATA_AEI,
+ SIGNALING_METADATA_VSPD,
+ SIGNALING_METADATA_ASD,
+ SIGNALING_METADATA_IED,
+ SIGNALING_METADATA_CAD,
+ SIGNALING_METADATA_ASPD,
+ SIGNALING_METADATA_SSD,
+ SIGNALING_METADATA_EMSG,
+ SIGNALING_METADATA_EVTI,
+ SIGNALING_METADATA_RSAT,
+ SIGNALING_METADATA_RDT,
+ SIGNALING_METADATA_SLT,
+ SIGNALING_METADATA_RRT,
+ SIGNALING_METADATA_STT,
+ SIGNALING_METADATA_AEAT,
+ SIGNALING_METADATA_OSN,
+ SIGNALING_METADATA_SMT,
+ SIGNALING_METADATA_CDT
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface SignalingMetadata {}
+
+ public SignalingDataRequest(int requestId, @RequestOption int option,
+ int group,
+ @NonNull List<String> signalingDataTypes) {
+ super(REQUEST_TYPE, requestId, option);
this.mGroup = group;
- this.mLlsTableIds = llsTableIds;
- com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mLlsTableIds);
- this.mSlsMetadataTypes = slsMetadataTypes;
+ this.mSignalingDataTypes = signalingDataTypes;
+ com.android.internal.util.AnnotationValidations.validate(
+ NonNull.class, null, mSignalingDataTypes);
}
+ static SignalingDataRequest createFromParcelBody(Parcel in) {
+ return new SignalingDataRequest(in);
+ }
+
+ /**
+ * Gets the group with which any signaling returned will be associated.
+ *
+ * <p> Requested metadata objects will only be returned if they are part of the group specified.
+ *
+ * <p> If no group is specified ({@link #SIGNALING_DATA_NO_GROUP_ID}),
+ * the receiver will send all the metadata objects discovered.
+ *
+ * @return The group ID which any signaling returned will be associated.
+ */
public int getGroup() {
return mGroup;
}
- public @NonNull int[] getLlsTableIds() {
- return mLlsTableIds;
+ /**
+ * Gets the signaling data types for which data should be retrieved.
+ *
+ * <p> For more details on each type of metadata that can be requested, refer to the ATSC
+ * standard A/344:2023-5 9.2.10 - Query Signaling Data API.
+ *
+ * @return The signaling data types for which data should be retrieved.
+ */
+ public @NonNull List<String> getSignalingDataTypes() {
+ return mSignalingDataTypes;
}
- public int getSlsMetadataTypes() {
- return mSlsMetadataTypes;
+ @Override
+ public int describeContents() {
+ return 0;
}
@Override
public void writeToParcel(@NonNull android.os.Parcel dest, int flags) {
super.writeToParcel(dest, flags);
dest.writeInt(mGroup);
- dest.writeIntArray(mLlsTableIds);
- dest.writeInt(mSlsMetadataTypes);
+ dest.writeStringList(mSignalingDataTypes);
}
- @Override
- public int describeContents() {
- return 0;
+ SignalingDataRequest(@NonNull android.os.Parcel in) {
+ super(REQUEST_TYPE, in);
+
+ int group = in.readInt();
+ List<String> signalingDataTypes = new java.util.ArrayList<>();
+ in.readStringList(signalingDataTypes);
+
+ this.mGroup = group;
+ this.mSignalingDataTypes = signalingDataTypes;
+ com.android.internal.util.AnnotationValidations.validate(
+ NonNull.class, null, mSignalingDataTypes);
}
+
}
diff --git a/media/java/android/media/tv/SignalingDataResponse.java b/media/java/android/media/tv/SignalingDataResponse.java
index 3e4c790f6c70..be172ec62773 100644
--- a/media/java/android/media/tv/SignalingDataResponse.java
+++ b/media/java/android/media/tv/SignalingDataResponse.java
@@ -16,13 +16,24 @@
package android.media.tv;
+import android.annotation.FlaggedApi;
import android.annotation.NonNull;
+import android.media.tv.flags.Flags;
+import android.os.Parcel;
import android.os.Parcelable;
+import java.util.ArrayList;
import java.util.List;
-/** @hide */
-public class SignalingDataResponse extends BroadcastInfoResponse implements Parcelable {
+
+/**
+ * A response for the signaling data from the broadcast signal.
+ *
+ * @see SignalingDataRequest
+ * @see SignalingDataInfo
+ */
+@FlaggedApi(Flags.FLAG_TIAF_V_APIS)
+public final class SignalingDataResponse extends BroadcastInfoResponse implements Parcelable {
public static final @NonNull Parcelable.Creator<SignalingDataResponse> CREATOR =
new Parcelable.Creator<SignalingDataResponse>() {
@Override
@@ -37,34 +48,44 @@ public class SignalingDataResponse extends BroadcastInfoResponse implements Parc
};
private static final @TvInputManager.BroadcastInfoType int RESPONSE_TYPE =
TvInputManager.BROADCAST_INFO_TYPE_SIGNALING_DATA;
- private final @NonNull int[] mTableIds;
- private final int mMetadataTypes;
+ private final @NonNull List<String> mSignalingDataTypes;
private final @NonNull List<SignalingDataInfo> mSignalingDataInfoList;
+ static SignalingDataResponse createFromParcelBody(Parcel in) {
+ return new SignalingDataResponse(in);
+ }
+
public SignalingDataResponse(
int requestId,
int sequence,
@ResponseResult int responseResult,
- @NonNull int[] tableIds,
- int metadataTypes,
+ @NonNull List<String> signalingDataTypes,
@NonNull List<SignalingDataInfo> signalingDataInfoList) {
super(RESPONSE_TYPE, requestId, sequence, responseResult);
- this.mTableIds = tableIds;
- com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mTableIds);
- this.mMetadataTypes = metadataTypes;
+ mSignalingDataTypes = signalingDataTypes;
+ com.android.internal.util.AnnotationValidations.validate(
+ NonNull.class, null, mSignalingDataTypes);
this.mSignalingDataInfoList = signalingDataInfoList;
com.android.internal.util.AnnotationValidations.validate(
NonNull.class, null, mSignalingDataInfoList);
}
- public @NonNull int[] getTableIds() {
- return mTableIds;
- }
-
- public int getMetadataTypes() {
- return mMetadataTypes;
+ /**
+ * Gets a list of types of metadata that are contained in this response.
+ *
+ * <p> A list of types available are defined in {@link SignalingDataRequest}.
+ * For more information about these types, see A/344:2023-5 9.2.10 - Query Signaling Data API.
+ *
+ * @return A list of types of metadata that are contained in this response.
+ */
+ public @NonNull List<String> getSignalingDataTypes() {
+ return mSignalingDataTypes;
}
+ /**
+ * Gets a list of {@link SignalingDataInfo} contained in this response.
+ * @return A list of {@link SignalingDataInfo} contained in this response.
+ */
public @NonNull List<SignalingDataInfo> getSignalingDataInfoList() {
return mSignalingDataInfoList;
}
@@ -72,8 +93,7 @@ public class SignalingDataResponse extends BroadcastInfoResponse implements Parc
@Override
public void writeToParcel(@NonNull android.os.Parcel dest, int flags) {
super.writeToParcel(dest, flags);
- dest.writeIntArray(mTableIds);
- dest.writeInt(mMetadataTypes);
+ dest.writeStringList(mSignalingDataTypes);
dest.writeParcelableList(mSignalingDataInfoList, flags);
}
@@ -85,14 +105,14 @@ public class SignalingDataResponse extends BroadcastInfoResponse implements Parc
SignalingDataResponse(@NonNull android.os.Parcel in) {
super(RESPONSE_TYPE, in);
- int[] tableIds = in.createIntArray();
- int metadataTypes = in.readInt();
+ List<String> types = new ArrayList<String>();
+ in.readStringList(types);
List<SignalingDataInfo> signalingDataInfoList = new java.util.ArrayList<>();
in.readParcelableList(signalingDataInfoList, SignalingDataInfo.class.getClassLoader());
- this.mTableIds = tableIds;
- com.android.internal.util.AnnotationValidations.validate(NonNull.class, null, mTableIds);
- this.mMetadataTypes = metadataTypes;
+ this.mSignalingDataTypes = types;
+ com.android.internal.util.AnnotationValidations.validate(
+ NonNull.class, null, mSignalingDataTypes);
this.mSignalingDataInfoList = signalingDataInfoList;
com.android.internal.util.AnnotationValidations.validate(
NonNull.class, null, mSignalingDataInfoList);