Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 99c1cfda authored by Amy Zhang's avatar Amy Zhang
Browse files

Add Audio/Video Stream Type setter in Tuner Framework

Test: atest android.media.tv.tuner.cts
Bug: 170339836
Change-Id: I1227526278708ee9a018acc075b95558ec29a6db
parent a0e22be7
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -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 {
+206 −2
Original line number Diff line number Diff line
@@ -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;
    }

    /**
@@ -45,6 +196,20 @@ public class AvSettings extends Settings {
        return mIsPassthrough;
    }

    /**
     * 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}.
     *
@@ -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;
@@ -78,12 +245,49 @@ public class AvSettings extends Settings {
            return this;
        }

        /**
         * 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);
        }
    }
}
+33 −0
Original line number Diff line number Diff line
@@ -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 {