diff options
| -rw-r--r-- | api/system-current.txt | 33 | ||||
| -rw-r--r-- | media/java/android/media/tv/tuner/filter/AvSettings.java | 208 | ||||
| -rw-r--r-- | non-updatable-api/system-current.txt | 33 |
3 files changed, 272 insertions, 2 deletions
diff --git a/api/system-current.txt b/api/system-current.txt index ff84613dd75e..ede10e531ed3 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -5210,12 +5210,45 @@ package android.media.tv.tuner.filter { public class AvSettings extends android.media.tv.tuner.filter.Settings { method @NonNull public static android.media.tv.tuner.filter.AvSettings.Builder builder(int, boolean); + method public int getAudioStreamType(); + method public int getVideoStreamType(); method public boolean isPassthrough(); + field public static final int AUDIO_STREAM_TYPE_AAC = 6; // 0x6 + field public static final int AUDIO_STREAM_TYPE_AC3 = 7; // 0x7 + field public static final int AUDIO_STREAM_TYPE_AC4 = 9; // 0x9 + field public static final int AUDIO_STREAM_TYPE_DRA = 15; // 0xf + field public static final int AUDIO_STREAM_TYPE_DTS = 10; // 0xa + field public static final int AUDIO_STREAM_TYPE_DTS_HD = 11; // 0xb + field public static final int AUDIO_STREAM_TYPE_EAC3 = 8; // 0x8 + field public static final int AUDIO_STREAM_TYPE_MP3 = 2; // 0x2 + field public static final int AUDIO_STREAM_TYPE_MPEG1 = 3; // 0x3 + field public static final int AUDIO_STREAM_TYPE_MPEG2 = 4; // 0x4 + field public static final int AUDIO_STREAM_TYPE_MPEGH = 5; // 0x5 + field public static final int AUDIO_STREAM_TYPE_OPUS = 13; // 0xd + field public static final int AUDIO_STREAM_TYPE_PCM = 1; // 0x1 + field public static final int AUDIO_STREAM_TYPE_UNDEFINED = 0; // 0x0 + field public static final int AUDIO_STREAM_TYPE_VORBIS = 14; // 0xe + field public static final int AUDIO_STREAM_TYPE_WMA = 12; // 0xc + field public static final int VIDEO_STREAM_TYPE_AV1 = 10; // 0xa + field public static final int VIDEO_STREAM_TYPE_AVC = 5; // 0x5 + field public static final int VIDEO_STREAM_TYPE_AVS = 11; // 0xb + field public static final int VIDEO_STREAM_TYPE_AVS2 = 12; // 0xc + field public static final int VIDEO_STREAM_TYPE_HEVC = 6; // 0x6 + field public static final int VIDEO_STREAM_TYPE_MPEG1 = 2; // 0x2 + field public static final int VIDEO_STREAM_TYPE_MPEG2 = 3; // 0x3 + field public static final int VIDEO_STREAM_TYPE_MPEG4P2 = 4; // 0x4 + field public static final int VIDEO_STREAM_TYPE_RESERVED = 1; // 0x1 + field public static final int VIDEO_STREAM_TYPE_UNDEFINED = 0; // 0x0 + field public static final int VIDEO_STREAM_TYPE_VC1 = 7; // 0x7 + field public static final int VIDEO_STREAM_TYPE_VP8 = 8; // 0x8 + field public static final int VIDEO_STREAM_TYPE_VP9 = 9; // 0x9 } public static class AvSettings.Builder { method @NonNull public android.media.tv.tuner.filter.AvSettings build(); + method @NonNull public android.media.tv.tuner.filter.AvSettings.Builder setAudioStreamType(int); method @NonNull public android.media.tv.tuner.filter.AvSettings.Builder setPassthrough(boolean); + method @NonNull public android.media.tv.tuner.filter.AvSettings.Builder setVideoStreamType(int); } public class DownloadEvent extends android.media.tv.tuner.filter.FilterEvent { diff --git a/media/java/android/media/tv/tuner/filter/AvSettings.java b/media/java/android/media/tv/tuner/filter/AvSettings.java index e9b3660ab12f..5d9d53174b3e 100644 --- a/media/java/android/media/tv/tuner/filter/AvSettings.java +++ b/media/java/android/media/tv/tuner/filter/AvSettings.java @@ -16,9 +16,15 @@ package android.media.tv.tuner.filter; +import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.SystemApi; +import android.hardware.tv.tuner.V1_1.Constants; import android.media.tv.tuner.TunerUtils; +import android.media.tv.tuner.TunerVersionChecker; + +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; /** * Filter Settings for a Video and Audio. @@ -27,15 +33,160 @@ import android.media.tv.tuner.TunerUtils; */ @SystemApi public class AvSettings extends Settings { + /** @hide */ + @IntDef(prefix = "VIDEO_STREAM_TYPE_", + value = {VIDEO_STREAM_TYPE_UNDEFINED, VIDEO_STREAM_TYPE_RESERVED, + VIDEO_STREAM_TYPE_MPEG1, VIDEO_STREAM_TYPE_MPEG2, + VIDEO_STREAM_TYPE_MPEG4P2, VIDEO_STREAM_TYPE_AVC, VIDEO_STREAM_TYPE_HEVC, + VIDEO_STREAM_TYPE_VC1, VIDEO_STREAM_TYPE_VP8, VIDEO_STREAM_TYPE_VP9, + VIDEO_STREAM_TYPE_AV1, VIDEO_STREAM_TYPE_AVS, VIDEO_STREAM_TYPE_AVS2}) + @Retention(RetentionPolicy.SOURCE) + public @interface VideoStreamType {} + + /* + * Undefined Video stream type + */ + public static final int VIDEO_STREAM_TYPE_UNDEFINED = Constants.VideoStreamType.UNDEFINED; + /* + * ITU-T | ISO/IEC Reserved + */ + public static final int VIDEO_STREAM_TYPE_RESERVED = Constants.VideoStreamType.RESERVED; + /* + * ISO/IEC 11172 + */ + public static final int VIDEO_STREAM_TYPE_MPEG1 = Constants.VideoStreamType.MPEG1; + /* + * ITU-T Rec.H.262 and ISO/IEC 13818-2 + */ + public static final int VIDEO_STREAM_TYPE_MPEG2 = Constants.VideoStreamType.MPEG2; + /* + * ISO/IEC 14496-2 (MPEG-4 H.263 based video) + */ + public static final int VIDEO_STREAM_TYPE_MPEG4P2 = Constants.VideoStreamType.MPEG4P2; + /* + * ITU-T Rec.H.264 and ISO/IEC 14496-10 + */ + public static final int VIDEO_STREAM_TYPE_AVC = Constants.VideoStreamType.AVC; + /* + * ITU-T Rec. H.265 and ISO/IEC 23008-2 + */ + public static final int VIDEO_STREAM_TYPE_HEVC = Constants.VideoStreamType.HEVC; + /* + * Microsoft VC.1 + */ + public static final int VIDEO_STREAM_TYPE_VC1 = Constants.VideoStreamType.VC1; + /* + * Google VP8 + */ + public static final int VIDEO_STREAM_TYPE_VP8 = Constants.VideoStreamType.VP8; + /* + * Google VP9 + */ + public static final int VIDEO_STREAM_TYPE_VP9 = Constants.VideoStreamType.VP9; + /* + * AOMedia Video 1 + */ + public static final int VIDEO_STREAM_TYPE_AV1 = Constants.VideoStreamType.AV1; + /* + * Chinese Standard + */ + public static final int VIDEO_STREAM_TYPE_AVS = Constants.VideoStreamType.AVS; + /* + * New Chinese Standard + */ + public static final int VIDEO_STREAM_TYPE_AVS2 = Constants.VideoStreamType.AVS2; + + /** @hide */ + @IntDef(prefix = "AUDIO_STREAM_TYPE_", + value = {AUDIO_STREAM_TYPE_UNDEFINED, AUDIO_STREAM_TYPE_PCM, AUDIO_STREAM_TYPE_MP3, + AUDIO_STREAM_TYPE_MPEG1, AUDIO_STREAM_TYPE_MPEG2, AUDIO_STREAM_TYPE_MPEGH, + AUDIO_STREAM_TYPE_AAC, AUDIO_STREAM_TYPE_AC3, AUDIO_STREAM_TYPE_EAC3, + AUDIO_STREAM_TYPE_AC4, AUDIO_STREAM_TYPE_DTS, AUDIO_STREAM_TYPE_DTS_HD, + AUDIO_STREAM_TYPE_WMA, AUDIO_STREAM_TYPE_OPUS, AUDIO_STREAM_TYPE_VORBIS, + AUDIO_STREAM_TYPE_DRA}) + @Retention(RetentionPolicy.SOURCE) + public @interface AudioStreamType {} + + /* + * Undefined Audio stream type + */ + public static final int AUDIO_STREAM_TYPE_UNDEFINED = Constants.AudioStreamType.UNDEFINED; + /* + * Uncompressed Audio + */ + public static final int AUDIO_STREAM_TYPE_PCM = Constants.AudioStreamType.PCM; + /* + * MPEG Audio Layer III versions + */ + public static final int AUDIO_STREAM_TYPE_MP3 = Constants.AudioStreamType.MP3; + /* + * ISO/IEC 11172 Audio + */ + public static final int AUDIO_STREAM_TYPE_MPEG1 = Constants.AudioStreamType.MPEG1; + /* + * ISO/IEC 13818-3 + */ + public static final int AUDIO_STREAM_TYPE_MPEG2 = Constants.AudioStreamType.MPEG2; + /* + * ISO/IEC 23008-3 (MPEG-H Part 3) + */ + public static final int AUDIO_STREAM_TYPE_MPEGH = Constants.AudioStreamType.MPEGH; + /* + * ISO/IEC 14496-3 + */ + public static final int AUDIO_STREAM_TYPE_AAC = Constants.AudioStreamType.AAC; + /* + * Dolby Digital + */ + public static final int AUDIO_STREAM_TYPE_AC3 = Constants.AudioStreamType.AC3; + /* + * Dolby Digital Plus + */ + public static final int AUDIO_STREAM_TYPE_EAC3 = Constants.AudioStreamType.EAC3; + /* + * Dolby AC-4 + */ + public static final int AUDIO_STREAM_TYPE_AC4 = Constants.AudioStreamType.AC4; + /* + * Basic DTS + */ + public static final int AUDIO_STREAM_TYPE_DTS = Constants.AudioStreamType.DTS; + /* + * High Resolution DTS + */ + public static final int AUDIO_STREAM_TYPE_DTS_HD = Constants.AudioStreamType.DTS_HD; + /* + * Windows Media Audio + */ + public static final int AUDIO_STREAM_TYPE_WMA = Constants.AudioStreamType.WMA; + /* + * Opus Interactive Audio Codec + */ + public static final int AUDIO_STREAM_TYPE_OPUS = Constants.AudioStreamType.OPUS; + /* + * VORBIS Interactive Audio Codec + */ + public static final int AUDIO_STREAM_TYPE_VORBIS = Constants.AudioStreamType.VORBIS; + /* + * SJ/T 11368-2006 + */ + public static final int AUDIO_STREAM_TYPE_DRA = Constants.AudioStreamType.DRA; + + private final boolean mIsPassthrough; + private int mAudioStreamType = AUDIO_STREAM_TYPE_UNDEFINED; + private int mVideoStreamType = VIDEO_STREAM_TYPE_UNDEFINED; - private AvSettings(int mainType, boolean isAudio, boolean isPassthrough) { + private AvSettings(int mainType, boolean isAudio, boolean isPassthrough, + int audioStreamType, int videoStreamType) { super(TunerUtils.getFilterSubtype( mainType, isAudio ? Filter.SUBTYPE_AUDIO : Filter.SUBTYPE_VIDEO)); mIsPassthrough = isPassthrough; + mAudioStreamType = audioStreamType; + mVideoStreamType = videoStreamType; } /** @@ -46,6 +197,20 @@ public class AvSettings extends Settings { } /** + * Get the Audio Stream Type. + */ + public int getAudioStreamType() { + return mAudioStreamType; + } + + /** + * Get the Video Stream Type. + */ + public int getVideoStreamType() { + return mVideoStreamType; + } + + /** * Creates a builder for {@link AvSettings}. * * @param mainType the filter main type. @@ -63,6 +228,8 @@ public class AvSettings extends Settings { private final int mMainType; private final boolean mIsAudio; private boolean mIsPassthrough; + private int mAudioStreamType = AUDIO_STREAM_TYPE_UNDEFINED; + private int mVideoStreamType = VIDEO_STREAM_TYPE_UNDEFINED; private Builder(int mainType, boolean isAudio) { mMainType = mainType; @@ -79,11 +246,48 @@ public class AvSettings extends Settings { } /** + * Sets the Audio Stream Type. + * + * <p>This API is only supported by Tuner HAL 1.1 or higher. Unsupported version would cause + * no-op. Use {@link TunerVersionChecker.getTunerVersion()} to check the version. + * + * @param audioStreamType the {@link AudioStreamType} to set. + */ + @NonNull + public Builder setAudioStreamType(@AudioStreamType int audioStreamType) { + if (TunerVersionChecker.checkHigherOrEqualVersionTo( + TunerVersionChecker.TUNER_VERSION_1_1, "setAudioStreamType") && mIsAudio) { + mAudioStreamType = audioStreamType; + mVideoStreamType = VIDEO_STREAM_TYPE_UNDEFINED; + } + return this; + } + + /** + * Sets the Video Stream Type. + * + * <p>This API is only supported by Tuner HAL 1.1 or higher. Unsupported version would cause + * no-op. Use {@link TunerVersionChecker.getTunerVersion()} to check the version. + * + * @param videoStreamType the {@link VideoStreamType} to set. + */ + @NonNull + public Builder setVideoStreamType(@VideoStreamType int videoStreamType) { + if (TunerVersionChecker.checkHigherOrEqualVersionTo( + TunerVersionChecker.TUNER_VERSION_1_1, "setVideoStreamType") && !mIsAudio) { + mVideoStreamType = videoStreamType; + mAudioStreamType = AUDIO_STREAM_TYPE_UNDEFINED; + } + return this; + } + + /** * Builds a {@link AvSettings} object. */ @NonNull public AvSettings build() { - return new AvSettings(mMainType, mIsAudio, mIsPassthrough); + return new AvSettings(mMainType, mIsAudio, mIsPassthrough, + mAudioStreamType, mVideoStreamType); } } } diff --git a/non-updatable-api/system-current.txt b/non-updatable-api/system-current.txt index 93fdfba276db..3b6673509f36 100644 --- a/non-updatable-api/system-current.txt +++ b/non-updatable-api/system-current.txt @@ -5150,12 +5150,45 @@ package android.media.tv.tuner.filter { public class AvSettings extends android.media.tv.tuner.filter.Settings { method @NonNull public static android.media.tv.tuner.filter.AvSettings.Builder builder(int, boolean); + method public int getAudioStreamType(); + method public int getVideoStreamType(); method public boolean isPassthrough(); + field public static final int AUDIO_STREAM_TYPE_AAC = 6; // 0x6 + field public static final int AUDIO_STREAM_TYPE_AC3 = 7; // 0x7 + field public static final int AUDIO_STREAM_TYPE_AC4 = 9; // 0x9 + field public static final int AUDIO_STREAM_TYPE_DRA = 15; // 0xf + field public static final int AUDIO_STREAM_TYPE_DTS = 10; // 0xa + field public static final int AUDIO_STREAM_TYPE_DTS_HD = 11; // 0xb + field public static final int AUDIO_STREAM_TYPE_EAC3 = 8; // 0x8 + field public static final int AUDIO_STREAM_TYPE_MP3 = 2; // 0x2 + field public static final int AUDIO_STREAM_TYPE_MPEG1 = 3; // 0x3 + field public static final int AUDIO_STREAM_TYPE_MPEG2 = 4; // 0x4 + field public static final int AUDIO_STREAM_TYPE_MPEGH = 5; // 0x5 + field public static final int AUDIO_STREAM_TYPE_OPUS = 13; // 0xd + field public static final int AUDIO_STREAM_TYPE_PCM = 1; // 0x1 + field public static final int AUDIO_STREAM_TYPE_UNDEFINED = 0; // 0x0 + field public static final int AUDIO_STREAM_TYPE_VORBIS = 14; // 0xe + field public static final int AUDIO_STREAM_TYPE_WMA = 12; // 0xc + field public static final int VIDEO_STREAM_TYPE_AV1 = 10; // 0xa + field public static final int VIDEO_STREAM_TYPE_AVC = 5; // 0x5 + field public static final int VIDEO_STREAM_TYPE_AVS = 11; // 0xb + field public static final int VIDEO_STREAM_TYPE_AVS2 = 12; // 0xc + field public static final int VIDEO_STREAM_TYPE_HEVC = 6; // 0x6 + field public static final int VIDEO_STREAM_TYPE_MPEG1 = 2; // 0x2 + field public static final int VIDEO_STREAM_TYPE_MPEG2 = 3; // 0x3 + field public static final int VIDEO_STREAM_TYPE_MPEG4P2 = 4; // 0x4 + field public static final int VIDEO_STREAM_TYPE_RESERVED = 1; // 0x1 + field public static final int VIDEO_STREAM_TYPE_UNDEFINED = 0; // 0x0 + field public static final int VIDEO_STREAM_TYPE_VC1 = 7; // 0x7 + field public static final int VIDEO_STREAM_TYPE_VP8 = 8; // 0x8 + field public static final int VIDEO_STREAM_TYPE_VP9 = 9; // 0x9 } public static class AvSettings.Builder { method @NonNull public android.media.tv.tuner.filter.AvSettings build(); + method @NonNull public android.media.tv.tuner.filter.AvSettings.Builder setAudioStreamType(int); method @NonNull public android.media.tv.tuner.filter.AvSettings.Builder setPassthrough(boolean); + method @NonNull public android.media.tv.tuner.filter.AvSettings.Builder setVideoStreamType(int); } public class DownloadEvent extends android.media.tv.tuner.filter.FilterEvent { |