Skip to content
Snippets Groups Projects
Commit 797d80ee authored by Jernej Virag's avatar Jernej Virag
Browse files

Use ashmem memory to transport MediaDescription to other processes

This follows the pattern used by Icon objects (for e.g. Notifications) where contructing the object creates a shared memory Bitmap so updates and transport to other processes doesn't add extra large memory copies. This is important for things like album art which can be rather large (we see 1000x1000 bitmaps occasionally).

Bug: 288241280
Flag: ACONFIG com.android.media.performance.MEDIA_DESCRIPTION_ASHMEM_BITMAP DISABLED
Test: on cheetah with media applications
Change-Id: I6320b000ed4a3785b67c8574aa3ad3b3195ee273
parent ecabb7d6
No related branches found
No related tags found
No related merge requests found
......@@ -81,6 +81,7 @@ aconfig_declarations_group {
"com.android.internal.pm.pkg.component.flags-aconfig-java",
"com.android.media.flags.bettertogether-aconfig-java",
"com.android.media.flags.editing-aconfig-java",
"com.android.media.flags.performance-aconfig-java",
"com.android.media.flags.projection-aconfig-java",
"com.android.net.thread.platform.flags-aconfig-java",
"com.android.server.flags.services-aconfig-java",
......@@ -533,6 +534,21 @@ java_aconfig_library {
defaults: ["framework-minus-apex-aconfig-java-defaults"],
}
// Media Performance
aconfig_declarations {
name: "com.android.media.flags.performance-aconfig",
package: "com.android.media.performance.flags",
srcs: [
"media/java/android/media/flags/performance.aconfig",
],
}
java_aconfig_library {
name: "com.android.media.flags.performance-aconfig-java",
aconfig_declarations: "com.android.media.flags.performance-aconfig",
defaults: ["framework-minus-apex-aconfig-java-defaults"],
}
// Media TV
aconfig_declarations {
name: "android.media.tv.flags-aconfig",
......
......@@ -397,8 +397,14 @@ public class MediaDescription implements Parcelable {
* @return a new media description.
*/
public MediaDescription build() {
return new MediaDescription(mMediaId, mTitle, mSubtitle, mDescription, mIcon, mIconUri,
mExtras, mMediaUri);
if (com.android.media.performance.flags.Flags.mediaDescriptionAshmemBitmap()) {
Bitmap icon = mIcon != null ? mIcon.asShared() : null;
return new MediaDescription(mMediaId, mTitle, mSubtitle, mDescription, icon,
mIconUri, mExtras, mMediaUri);
} else {
return new MediaDescription(mMediaId, mTitle, mSubtitle, mDescription, mIcon,
mIconUri, mExtras, mMediaUri);
}
}
}
}
package: "com.android.media.performance.flags"
flag {
name: "media_description_ashmem_bitmap"
namespace: "systemui"
description: "Use ashmem to pass bitmaps in MediaDescription to avoid excessive Bitmap copies."
bug: "288241280"
metadata {
purpose: PURPOSE_BUGFIX
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment