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

Commit f5320502 authored by Eric Laurent's avatar Eric Laurent Committed by Android (Google) Code Review
Browse files

Merge "AudioEffect: make effect descriptor parcelable"

parents 89ebdecf 76740526
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -26320,9 +26320,12 @@ package android.media.audiofx {
    field public static final int SUCCESS = 0; // 0x0
  }
  public static class AudioEffect.Descriptor {
  public static final class AudioEffect.Descriptor implements android.os.Parcelable {
    ctor public AudioEffect.Descriptor();
    ctor public AudioEffect.Descriptor(java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String);
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.media.audiofx.AudioEffect.Descriptor> CREATOR;
    field public java.lang.String connectMode;
    field public java.lang.String implementor;
    field public java.lang.String name;
+86 −26
Original line number Diff line number Diff line
@@ -25,10 +25,14 @@ import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.Log;

import java.lang.ref.WeakReference;
import java.nio.ByteOrder;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.Objects;
import java.util.UUID;

/**
@@ -225,34 +229,11 @@ public class AudioEffect {
     * The method {@link #queryEffects()} returns an array of Descriptors to facilitate effects
     * enumeration.
     */
    public static class Descriptor {
    public static final class Descriptor implements Parcelable {

        public Descriptor() {
        }

        /**
         * @param type          UUID identifying the effect type. May be one of:
         * {@link AudioEffect#EFFECT_TYPE_AEC}, {@link AudioEffect#EFFECT_TYPE_AGC},
         * {@link AudioEffect#EFFECT_TYPE_BASS_BOOST}, {@link AudioEffect#EFFECT_TYPE_ENV_REVERB},
         * {@link AudioEffect#EFFECT_TYPE_EQUALIZER}, {@link AudioEffect#EFFECT_TYPE_NS},
         * {@link AudioEffect#EFFECT_TYPE_PRESET_REVERB},
         * {@link AudioEffect#EFFECT_TYPE_VIRTUALIZER},
         * {@link AudioEffect#EFFECT_TYPE_DYNAMICS_PROCESSING}.
         * @param uuid         UUID for this particular implementation
         * @param connectMode  {@link #EFFECT_INSERT} or {@link #EFFECT_AUXILIARY}
         * @param name         human readable effect name
         * @param implementor  human readable effect implementor name
        *
        */
        public Descriptor(String type, String uuid, String connectMode,
                String name, String implementor) {
            this.type = UUID.fromString(type);
            this.uuid = UUID.fromString(uuid);
            this.connectMode = connectMode;
            this.name = name;
            this.implementor = implementor;
        }

        /**
         *  Indicates the generic type of the effect (Equalizer, Bass boost ...).
         *  One of {@link AudioEffect#EFFECT_TYPE_AEC},
@@ -289,8 +270,87 @@ public class AudioEffect {
         * Human readable effect implementor name
         */
        public String implementor;

        /**
         * @param type          UUID identifying the effect type. May be one of:
         * {@link AudioEffect#EFFECT_TYPE_AEC}, {@link AudioEffect#EFFECT_TYPE_AGC},
         * {@link AudioEffect#EFFECT_TYPE_BASS_BOOST}, {@link AudioEffect#EFFECT_TYPE_ENV_REVERB},
         * {@link AudioEffect#EFFECT_TYPE_EQUALIZER}, {@link AudioEffect#EFFECT_TYPE_NS},
         * {@link AudioEffect#EFFECT_TYPE_PRESET_REVERB},
         * {@link AudioEffect#EFFECT_TYPE_VIRTUALIZER},
         * {@link AudioEffect#EFFECT_TYPE_DYNAMICS_PROCESSING}.
         * @param uuid         UUID for this particular implementation
         * @param connectMode  {@link #EFFECT_INSERT} or {@link #EFFECT_AUXILIARY}
         * @param name         human readable effect name
         * @param implementor  human readable effect implementor name
        *
        */
        public Descriptor(String type, String uuid, String connectMode,
                String name, String implementor) {
            this.type = UUID.fromString(type);
            this.uuid = UUID.fromString(uuid);
            this.connectMode = connectMode;
            this.name = name;
            this.implementor = implementor;
        }

        private Descriptor(Parcel in) {
            type = UUID.fromString(in.readString());
            uuid = UUID.fromString(in.readString());
            connectMode = in.readString();
            name = in.readString();
            implementor = in.readString();
        }

        public static final Parcelable.Creator<Descriptor> CREATOR =
                new Parcelable.Creator<Descriptor>() {
                    /**
                     * Rebuilds a Descriptor previously stored with writeToParcel().
                     * @param p Parcel object to read the Descriptor from
                     * @return a new Descriptor created from the data in the parcel
                     */
                    public Descriptor createFromParcel(Parcel p) {
                        return new Descriptor(p);
                    }
                    public Descriptor[] newArray(int size) {
                        return new Descriptor[size];
                    }
        };

        @Override
        public int hashCode() {
            return Objects.hash(type, uuid, connectMode, name, implementor);
        }

        @Override
        public int describeContents() {
            return 0;
        }

        @Override
        public void writeToParcel(Parcel dest, int flags) {
            dest.writeString(type.toString());
            dest.writeString(uuid.toString());
            dest.writeString(connectMode);
            dest.writeString(name);
            dest.writeString(implementor);
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || !(o instanceof Descriptor)) return false;

            Descriptor that = (Descriptor) o;

            return (type.equals(that.type)
                    && uuid.equals(that.uuid)
                    && connectMode.equals(that.connectMode)
                    && name.equals(that.name)
                    && implementor.equals(that.implementor));
        }
    }

    /**
     * Effect connection mode is insert. Specifying an audio session ID when creating the effect
     * will insert this effect after all players in the same audio session.