summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--api/system-current.txt33
-rw-r--r--media/java/android/media/tv/tuner/filter/AvSettings.java208
-rw-r--r--non-updatable-api/system-current.txt33
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 {