From 7a89e9fb3b9b1fb3ce42df00b87fb2650a75671a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Gaffie?= Date: Fri, 25 Mar 2022 16:19:25 +0100 Subject: [PATCH] [BUG] audio: Misalignement of Native/Java AudioAttributes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Native audio attributes are initialized with a default source, whereas JAVA AudioAttributes are initialized with an INVALID source. It leads to equality failure, thus preventing to identify the right strategy / volume group. This CL fixes this misalignement by using the builder constructor from AudioAttributes, thus cleaning the input source. Test: AudioVolumeGroupTest Bug: 238058094 Signed-off-by: Francois Gaffie Change-Id: I1dca99cf60c8b3a6291743dc299324374e5752a6 Signed-off-by: François Gaffie Change-Id: I13d216814db66369ae72b496f4c9ae724cc40561 --- media/java/android/media/AudioAttributes.java | 2 ++ .../media/audiopolicy/AudioProductStrategy.java | 13 ++++--------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/media/java/android/media/AudioAttributes.java b/media/java/android/media/AudioAttributes.java index ded9597b68ef9..a59a006e0a12b 100644 --- a/media/java/android/media/AudioAttributes.java +++ b/media/java/android/media/AudioAttributes.java @@ -1431,6 +1431,8 @@ public final class AudioAttributes implements Parcelable { return new String("AudioAttributes:" + " usage=" + usageToString() + " content=" + contentTypeToString() + + (mSource != MediaRecorder.AudioSource.AUDIO_SOURCE_INVALID + ? " source=" + MediaRecorder.toLogFriendlyAudioSource(mSource) : "") + " flags=0x" + Integer.toHexString(mFlags).toUpperCase() + " tags=" + mFormattedTags + " bundle=" + (mBundle == null ? "null" : mBundle.toString())); diff --git a/media/java/android/media/audiopolicy/AudioProductStrategy.java b/media/java/android/media/audiopolicy/AudioProductStrategy.java index 31d596765bccb..14d5f356c6331 100644 --- a/media/java/android/media/audiopolicy/AudioProductStrategy.java +++ b/media/java/android/media/audiopolicy/AudioProductStrategy.java @@ -22,7 +22,6 @@ import android.annotation.SystemApi; import android.annotation.TestApi; import android.media.AudioAttributes; import android.media.AudioSystem; -import android.media.MediaRecorder; import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; @@ -129,9 +128,7 @@ public final class AudioProductStrategy implements Parcelable { return aa; } } - return new AudioAttributes.Builder() - .setContentType(AudioAttributes.CONTENT_TYPE_UNKNOWN) - .setUsage(AudioAttributes.USAGE_UNKNOWN).build(); + return DEFAULT_ATTRIBUTES; } /** @@ -216,7 +213,7 @@ public final class AudioProductStrategy implements Parcelable { @SystemApi public @NonNull AudioAttributes getAudioAttributes() { // We need a choice, so take the first one - return mAudioAttributesGroups.length == 0 ? (new AudioAttributes.Builder().build()) + return mAudioAttributesGroups.length == 0 ? DEFAULT_ATTRIBUTES : mAudioAttributesGroups[0].getAudioAttributes(); } @@ -357,8 +354,7 @@ public final class AudioProductStrategy implements Parcelable { * Default attributes, with default source to be aligned with native. */ private static final @NonNull AudioAttributes DEFAULT_ATTRIBUTES = - new AudioAttributes.Builder().setCapturePreset(MediaRecorder.AudioSource.DEFAULT) - .build(); + new AudioAttributes.Builder().build(); /** * @hide @@ -428,8 +424,7 @@ public final class AudioProductStrategy implements Parcelable { public @NonNull AudioAttributes getAudioAttributes() { // We need a choice, so take the first one - return mAudioAttributes.length == 0 ? (new AudioAttributes.Builder().build()) - : mAudioAttributes[0]; + return mAudioAttributes.length == 0 ? DEFAULT_ATTRIBUTES : mAudioAttributes[0]; } /**