Merge "Add hearingImpaired information to TvTrackInfo"

This commit is contained in:
nchalko
2020-01-08 18:27:36 +00:00
committed by Gerrit Code Review
2 changed files with 54 additions and 5 deletions

View File

@@ -28329,6 +28329,7 @@ package android.media.tv {
method public int getVideoWidth(); method public int getVideoWidth();
method public boolean isAudioDescription(); method public boolean isAudioDescription();
method public boolean isEncrypted(); method public boolean isEncrypted();
method public boolean isHardOfHearing();
method public void writeToParcel(android.os.Parcel, int); method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.TvTrackInfo> CREATOR; field @NonNull public static final android.os.Parcelable.Creator<android.media.tv.TvTrackInfo> CREATOR;
field public static final int TYPE_AUDIO = 0; // 0x0 field public static final int TYPE_AUDIO = 0; // 0x0
@@ -28345,6 +28346,7 @@ package android.media.tv {
method public android.media.tv.TvTrackInfo.Builder setDescription(CharSequence); method public android.media.tv.TvTrackInfo.Builder setDescription(CharSequence);
method @NonNull public android.media.tv.TvTrackInfo.Builder setEncrypted(boolean); method @NonNull public android.media.tv.TvTrackInfo.Builder setEncrypted(boolean);
method public android.media.tv.TvTrackInfo.Builder setExtra(android.os.Bundle); method public android.media.tv.TvTrackInfo.Builder setExtra(android.os.Bundle);
method @NonNull public android.media.tv.TvTrackInfo.Builder setHardOfHearing(boolean);
method public android.media.tv.TvTrackInfo.Builder setLanguage(String); method public android.media.tv.TvTrackInfo.Builder setLanguage(String);
method public android.media.tv.TvTrackInfo.Builder setVideoActiveFormatDescription(byte); method public android.media.tv.TvTrackInfo.Builder setVideoActiveFormatDescription(byte);
method public android.media.tv.TvTrackInfo.Builder setVideoFrameRate(float); method public android.media.tv.TvTrackInfo.Builder setVideoFrameRate(float);

View File

@@ -62,6 +62,7 @@ public final class TvTrackInfo implements Parcelable {
private final int mAudioChannelCount; private final int mAudioChannelCount;
private final int mAudioSampleRate; private final int mAudioSampleRate;
private final boolean mAudioDescription; private final boolean mAudioDescription;
private final boolean mHardOfHearing;
private final int mVideoWidth; private final int mVideoWidth;
private final int mVideoHeight; private final int mVideoHeight;
private final float mVideoFrameRate; private final float mVideoFrameRate;
@@ -72,8 +73,8 @@ public final class TvTrackInfo implements Parcelable {
private TvTrackInfo(int type, String id, String language, CharSequence description, private TvTrackInfo(int type, String id, String language, CharSequence description,
boolean encrypted, int audioChannelCount, int audioSampleRate, boolean audioDescription, boolean encrypted, int audioChannelCount, int audioSampleRate, boolean audioDescription,
int videoWidth, int videoHeight, float videoFrameRate, float videoPixelAspectRatio, boolean hardOfHearing, int videoWidth, int videoHeight, float videoFrameRate,
byte videoActiveFormatDescription, Bundle extra) { float videoPixelAspectRatio, byte videoActiveFormatDescription, Bundle extra) {
mType = type; mType = type;
mId = id; mId = id;
mLanguage = language; mLanguage = language;
@@ -82,6 +83,7 @@ public final class TvTrackInfo implements Parcelable {
mAudioChannelCount = audioChannelCount; mAudioChannelCount = audioChannelCount;
mAudioSampleRate = audioSampleRate; mAudioSampleRate = audioSampleRate;
mAudioDescription = audioDescription; mAudioDescription = audioDescription;
mHardOfHearing = hardOfHearing;
mVideoWidth = videoWidth; mVideoWidth = videoWidth;
mVideoHeight = videoHeight; mVideoHeight = videoHeight;
mVideoFrameRate = videoFrameRate; mVideoFrameRate = videoFrameRate;
@@ -99,6 +101,7 @@ public final class TvTrackInfo implements Parcelable {
mAudioChannelCount = in.readInt(); mAudioChannelCount = in.readInt();
mAudioSampleRate = in.readInt(); mAudioSampleRate = in.readInt();
mAudioDescription = in.readInt() != 0; mAudioDescription = in.readInt() != 0;
mHardOfHearing = in.readInt() != 0;
mVideoWidth = in.readInt(); mVideoWidth = in.readInt();
mVideoHeight = in.readInt(); mVideoHeight = in.readInt();
mVideoFrameRate = in.readFloat(); mVideoFrameRate = in.readFloat();
@@ -191,6 +194,23 @@ public final class TvTrackInfo implements Parcelable {
return mAudioDescription; return mAudioDescription;
} }
/**
* Returns {@code true} if the track is intended for people with hearing impairment, {@code
* false} otherwise. Valid only for {@link #TYPE_AUDIO} and {@link #TYPE_SUBTITLE} tracks.
*
* <p>For example of broadcast, hard of hearing information may be referred to broadcast
* standard (e.g. ISO 639 Language Descriptor of ISO/IEC 13818-1, Supplementary Audio Language
* Descriptor, AC-3 Descriptor, Enhanced AC-3 Descriptor, AAC Descriptor of ETSI EN 300 468).
*
* @throws IllegalStateException if not called on an audio track or a subtitle track
*/
public boolean isHardOfHearing() {
if (mType != TYPE_AUDIO && mType != TYPE_SUBTITLE) {
throw new IllegalStateException("Not an audio or a subtitle track");
}
return mHardOfHearing;
}
/** /**
* Returns the width of the video, in the unit of pixels. Valid only for {@link #TYPE_VIDEO} * Returns the width of the video, in the unit of pixels. Valid only for {@link #TYPE_VIDEO}
* tracks. * tracks.
@@ -287,6 +307,7 @@ public final class TvTrackInfo implements Parcelable {
dest.writeInt(mAudioChannelCount); dest.writeInt(mAudioChannelCount);
dest.writeInt(mAudioSampleRate); dest.writeInt(mAudioSampleRate);
dest.writeInt(mAudioDescription ? 1 : 0); dest.writeInt(mAudioDescription ? 1 : 0);
dest.writeInt(mHardOfHearing ? 1 : 0);
dest.writeInt(mVideoWidth); dest.writeInt(mVideoWidth);
dest.writeInt(mVideoHeight); dest.writeInt(mVideoHeight);
dest.writeFloat(mVideoFrameRate); dest.writeFloat(mVideoFrameRate);
@@ -318,7 +339,8 @@ public final class TvTrackInfo implements Parcelable {
case TYPE_AUDIO: case TYPE_AUDIO:
return mAudioChannelCount == obj.mAudioChannelCount return mAudioChannelCount == obj.mAudioChannelCount
&& mAudioSampleRate == obj.mAudioSampleRate && mAudioSampleRate == obj.mAudioSampleRate
&& mAudioDescription == obj.mAudioDescription; && mAudioDescription == obj.mAudioDescription
&& mHardOfHearing == obj.mHardOfHearing;
case TYPE_VIDEO: case TYPE_VIDEO:
return mVideoWidth == obj.mVideoWidth return mVideoWidth == obj.mVideoWidth
@@ -326,6 +348,9 @@ public final class TvTrackInfo implements Parcelable {
&& mVideoFrameRate == obj.mVideoFrameRate && mVideoFrameRate == obj.mVideoFrameRate
&& mVideoPixelAspectRatio == obj.mVideoPixelAspectRatio && mVideoPixelAspectRatio == obj.mVideoPixelAspectRatio
&& mVideoActiveFormatDescription == obj.mVideoActiveFormatDescription; && mVideoActiveFormatDescription == obj.mVideoActiveFormatDescription;
case TYPE_SUBTITLE:
return mHardOfHearing == obj.mHardOfHearing;
} }
return true; return true;
@@ -361,6 +386,7 @@ public final class TvTrackInfo implements Parcelable {
private int mAudioChannelCount; private int mAudioChannelCount;
private int mAudioSampleRate; private int mAudioSampleRate;
private boolean mAudioDescription; private boolean mAudioDescription;
private boolean mHardOfHearing;
private int mVideoWidth; private int mVideoWidth;
private int mVideoHeight; private int mVideoHeight;
private float mVideoFrameRate; private float mVideoFrameRate;
@@ -473,6 +499,27 @@ public final class TvTrackInfo implements Parcelable {
return this; return this;
} }
/**
* Sets the hard of hearing attribute of the track. Valid only for {@link #TYPE_AUDIO} and
* {@link #TYPE_SUBTITLE} tracks.
*
* <p>For example of broadcast, hard of hearing information may be referred to broadcast
* standard (e.g. ISO 639 Language Descriptor of ISO/IEC 13818-1, Supplementary Audio
* Language Descriptor, AC-3 Descriptor, Enhanced AC-3 Descriptor, AAC Descriptor of ETSI EN
* 300 468).
*
* @param hardOfHearing The hard of hearing attribute of the track.
* @throws IllegalStateException if not called on an audio track or a subtitle track
*/
@NonNull
public Builder setHardOfHearing(boolean hardOfHearing) {
if (mType != TYPE_AUDIO && mType != TYPE_SUBTITLE) {
throw new IllegalStateException("Not an audio track or a subtitle track");
}
mHardOfHearing = hardOfHearing;
return this;
}
/** /**
* Sets the width of the video, in the unit of pixels. Valid only for {@link #TYPE_VIDEO} * Sets the width of the video, in the unit of pixels. Valid only for {@link #TYPE_VIDEO}
* tracks. * tracks.
@@ -575,8 +622,8 @@ public final class TvTrackInfo implements Parcelable {
*/ */
public TvTrackInfo build() { public TvTrackInfo build() {
return new TvTrackInfo(mType, mId, mLanguage, mDescription, mEncrypted, return new TvTrackInfo(mType, mId, mLanguage, mDescription, mEncrypted,
mAudioChannelCount, mAudioSampleRate, mAudioDescription, mVideoWidth, mAudioChannelCount, mAudioSampleRate, mAudioDescription, mHardOfHearing,
mVideoHeight, mVideoFrameRate, mVideoPixelAspectRatio, mVideoWidth, mVideoHeight, mVideoFrameRate, mVideoPixelAspectRatio,
mVideoActiveFormatDescription, mExtra); mVideoActiveFormatDescription, mExtra);
} }
} }