From a4fa0a911469998e028f30b49bf5311b44cb1e33 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 Bug: 284010885 Bug: 284020937 Signed-off-by: Francois Gaffie Change-Id: I1dca99cf60c8b3a6291743dc299324374e5752a6 Merged-In: I13d216814db66369ae72b496f4c9ae724cc40561 Change-Id: I13d216814db66369ae72b496f4c9ae724cc40561 Signed-off-by: François Gaffie (cherry picked from commit 7a89e9fb3b9b1fb3ce42df00b87fb2650a75671a) --- 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 546f0c665a986..dea6097ad89ca 100644 --- a/media/java/android/media/AudioAttributes.java +++ b/media/java/android/media/AudioAttributes.java @@ -1433,6 +1433,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 f957498237a87..98819a3582a67 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; @@ -130,9 +129,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; } /** @@ -217,7 +214,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(); } @@ -358,8 +355,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 @@ -429,8 +425,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]; } /**