diff --git a/core/java/android/os/FileUtils.java b/core/java/android/os/FileUtils.java index d151c16061d92..5db4107f02f1b 100644 --- a/core/java/android/os/FileUtils.java +++ b/core/java/android/os/FileUtils.java @@ -1436,7 +1436,10 @@ public final class FileUtils { public static FileDescriptor convertToModernFd(FileDescriptor fd) { try { Context context = AppGlobals.getInitialApplication(); - if (UserHandle.getAppId(Process.myUid()) == getMediaProviderAppId(context)) { + if (!SystemProperties.getBoolean("persist.sys.fuse.transcode", false) + || !SystemProperties.getBoolean("persist.sys.fuse.transcode_optimize", true) + || UserHandle.getAppId(Process.myUid()) == getMediaProviderAppId(context)) { + // If transcode is enabled we optimize by default, unless explicitly disabled. // Never convert modern fd for MediaProvider, because this requires // MediaStore#scanFile and can cause infinite loops when MediaProvider scans return null; diff --git a/media/java/android/media/ExifInterface.java b/media/java/android/media/ExifInterface.java index f216c8cb4ffff..de885f49a1d48 100644 --- a/media/java/android/media/ExifInterface.java +++ b/media/java/android/media/ExifInterface.java @@ -32,7 +32,6 @@ import android.content.res.AssetManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.FileUtils; -import android.os.SystemProperties; import android.system.ErrnoException; import android.system.Os; import android.system.OsConstants; @@ -1528,8 +1527,7 @@ public class ExifInterface { if (fileDescriptor == null) { throw new NullPointerException("fileDescriptor cannot be null"); } - boolean optimize = SystemProperties.getBoolean("fuse.sys.transcode_exif_optimize", false); - FileDescriptor modernFd = optimize ? FileUtils.convertToModernFd(fileDescriptor) : null; + FileDescriptor modernFd = FileUtils.convertToModernFd(fileDescriptor); if (modernFd != null) { fileDescriptor = modernFd; } @@ -2549,9 +2547,7 @@ public class ExifInterface { mIsInputStream = false; try { in = new FileInputStream(filename); - boolean optimize = SystemProperties.getBoolean("fuse.sys.transcode_exif_optimize", - false); - FileDescriptor modernFd = optimize ? FileUtils.convertToModernFd(in.getFD()) : null; + FileDescriptor modernFd = FileUtils.convertToModernFd(in.getFD()); if (modernFd != null) { legacyInputStream = in; in = new FileInputStream(modernFd); diff --git a/media/java/android/media/MediaMetadataRetriever.java b/media/java/android/media/MediaMetadataRetriever.java index ca8b9b936e99c..86d1d15c8b749 100644 --- a/media/java/android/media/MediaMetadataRetriever.java +++ b/media/java/android/media/MediaMetadataRetriever.java @@ -300,9 +300,7 @@ public class MediaMetadataRetriever implements AutoCloseable { */ public void setDataSource(FileDescriptor fd, long offset, long length) throws IllegalArgumentException { - boolean optimize = SystemProperties.getBoolean("fuse.sys.transcode_retriever_optimize", - false); - FileDescriptor modernFd = optimize ? FileUtils.convertToModernFd(fd) : null; + FileDescriptor modernFd = FileUtils.convertToModernFd(fd); if (modernFd == null) { _setDataSource(fd, offset, length); } else { diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java index 655454466b3d1..973c2a82c549c 100644 --- a/media/java/android/media/MediaPlayer.java +++ b/media/java/android/media/MediaPlayer.java @@ -1258,8 +1258,7 @@ public class MediaPlayer extends PlayerBase */ public void setDataSource(FileDescriptor fd, long offset, long length) throws IOException, IllegalArgumentException, IllegalStateException { - boolean optimize = SystemProperties.getBoolean("fuse.sys.transcode_player_optimize", false); - FileDescriptor modernFd = optimize ? FileUtils.convertToModernFd(fd) : null; + FileDescriptor modernFd = FileUtils.convertToModernFd(fd); if (modernFd == null) { _setDataSource(fd, offset, length); } else {