From a41cde1c53860a8d7b532fa4844581d900ada80e Mon Sep 17 00:00:00 2001 From: Hardcore Sushi Date: Thu, 28 Sep 2023 19:36:55 +0200 Subject: [PATCH] DroidFS v2.1.3 --- README.md | 2 +- app/build.gradle | 6 +++--- .../video/internal/encoder/SucklessEncoderImpl.java | 13 ++++++++++++- .../camera/video/originals/base/EncoderImpl.java | 13 ++++++++++++- .../java/androidx/camera/video/originals/merge.sh | 2 ++ fastlane/metadata/android/en-US/changelogs/36.txt | 2 ++ 6 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 fastlane/metadata/android/en-US/changelogs/36.txt diff --git a/README.md b/README.md index b7f067a..d77bc1b 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ Some available features are considered risky and are therefore disabled by defau Decrypt and open file using external apps. These apps could save and send the files thus opened.
  • Expose open volumes*:

    - Allow open volumes to be browsed in the system file explorer (DocumentProvider API). Encrypted files can then be selected from other applications, potentially with permanent access. + Allow open volumes to be browsed in the system file explorer (DocumentProvider API). Encrypted files can then be selected from other applications, potentially with permanent access. This feature requires "*Keep volume open when the app goes in background*" to be enabled.
  • Grant write access:

    Files opened with another applications can be modified by them. This applies to both previous unsafe features. diff --git a/app/build.gradle b/app/build.gradle index 51ac9b2..2ac7e3d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -37,8 +37,8 @@ android { applicationId "sushi.hardcore.droidfs" minSdkVersion 21 targetSdkVersion 32 - versionCode 35 - versionName "2.1.2" + versionCode 36 + versionName "2.1.3" ndk { abiFilters "x86", "x86_64", "armeabi-v7a", "arm64-v8a" @@ -124,7 +124,7 @@ dependencies { implementation "androidx.concurrent:concurrent-futures:1.1.0" - def camerax_version = "1.3.0-rc01" + def camerax_version = "1.3.0-rc02" implementation "androidx.camera:camera-camera2:$camerax_version" implementation "androidx.camera:camera-lifecycle:$camerax_version" implementation "androidx.camera:camera-view:$camerax_version" diff --git a/app/src/main/java/androidx/camera/video/internal/encoder/SucklessEncoderImpl.java b/app/src/main/java/androidx/camera/video/internal/encoder/SucklessEncoderImpl.java index 2004749..432efe3 100644 --- a/app/src/main/java/androidx/camera/video/internal/encoder/SucklessEncoderImpl.java +++ b/app/src/main/java/androidx/camera/video/internal/encoder/SucklessEncoderImpl.java @@ -35,6 +35,7 @@ import android.media.MediaCodec.BufferInfo; import android.media.MediaCodecInfo; import android.media.MediaFormat; import android.os.Bundle; +import android.os.SystemClock; import android.util.Range; import android.view.Surface; @@ -1054,6 +1055,7 @@ public class SucklessEncoderImpl implements Encoder { if (mIsVideoEncoder) { Timebase inputTimebase; if (DeviceQuirks.get(CameraUseInconsistentTimebaseQuirk.class) != null) { + Logger.w(mTag, "CameraUseInconsistentTimebaseQuirk is enabled"); inputTimebase = null; } else { inputTimebase = mInputTimebase; @@ -1065,7 +1067,7 @@ public class SucklessEncoderImpl implements Encoder { } @Override - public void onInputBufferAvailable(MediaCodec mediaCodec, int index) { + public void onInputBufferAvailable(@NonNull MediaCodec mediaCodec, int index) { mEncoderExecutor.execute(() -> { if (mStopped) { Logger.w(mTag, "Receives input frame after codec is reset."); @@ -1131,6 +1133,15 @@ public class SucklessEncoderImpl implements Encoder { if (checkBufferInfo(bufferInfo)) { if (!mHasFirstData) { mHasFirstData = true; + // Only print the first data to avoid flooding the log. + Logger.d(mTag, + "data timestampUs = " + bufferInfo.presentationTimeUs + + ", data timebase = " + mInputTimebase + + ", current system uptimeMs = " + + SystemClock.uptimeMillis() + + ", current system realtimeMs = " + + SystemClock.elapsedRealtime() + ); } BufferInfo outBufferInfo = resolveOutputBufferInfo(bufferInfo); mLastSentAdjustedTimeUs = outBufferInfo.presentationTimeUs; diff --git a/app/src/main/java/androidx/camera/video/originals/base/EncoderImpl.java b/app/src/main/java/androidx/camera/video/originals/base/EncoderImpl.java index a018630..2469fb4 100644 --- a/app/src/main/java/androidx/camera/video/originals/base/EncoderImpl.java +++ b/app/src/main/java/androidx/camera/video/originals/base/EncoderImpl.java @@ -35,6 +35,7 @@ import android.media.MediaCodec.BufferInfo; import android.media.MediaCodecInfo; import android.media.MediaFormat; import android.os.Bundle; +import android.os.SystemClock; import android.util.Range; import android.view.Surface; @@ -1053,6 +1054,7 @@ public class EncoderImpl implements Encoder { if (mIsVideoEncoder) { Timebase inputTimebase; if (DeviceQuirks.get(CameraUseInconsistentTimebaseQuirk.class) != null) { + Logger.w(mTag, "CameraUseInconsistentTimebaseQuirk is enabled"); inputTimebase = null; } else { inputTimebase = mInputTimebase; @@ -1064,7 +1066,7 @@ public class EncoderImpl implements Encoder { } @Override - public void onInputBufferAvailable(MediaCodec mediaCodec, int index) { + public void onInputBufferAvailable(@NonNull MediaCodec mediaCodec, int index) { mEncoderExecutor.execute(() -> { if (mStopped) { Logger.w(mTag, "Receives input frame after codec is reset."); @@ -1130,6 +1132,15 @@ public class EncoderImpl implements Encoder { if (checkBufferInfo(bufferInfo)) { if (!mHasFirstData) { mHasFirstData = true; + // Only print the first data to avoid flooding the log. + Logger.d(mTag, + "data timestampUs = " + bufferInfo.presentationTimeUs + + ", data timebase = " + mInputTimebase + + ", current system uptimeMs = " + + SystemClock.uptimeMillis() + + ", current system realtimeMs = " + + SystemClock.elapsedRealtime() + ); } BufferInfo outBufferInfo = resolveOutputBufferInfo(bufferInfo); mLastSentAdjustedTimeUs = outBufferInfo.presentationTimeUs; diff --git a/app/src/main/java/androidx/camera/video/originals/merge.sh b/app/src/main/java/androidx/camera/video/originals/merge.sh index fe5e3e4..64f39cc 100755 --- a/app/src/main/java/androidx/camera/video/originals/merge.sh +++ b/app/src/main/java/androidx/camera/video/originals/merge.sh @@ -1,5 +1,7 @@ #!/bin/sh +set -e + for i in "PendingRecording" "Recording" "Recorder"; do diff3 -m ../Suckless$i.java base/$i.java new/$i.java > Suckless$i.java && mv Suckless$i.java .. done diff --git a/fastlane/metadata/android/en-US/changelogs/36.txt b/fastlane/metadata/android/en-US/changelogs/36.txt new file mode 100644 index 0000000..a391bd7 --- /dev/null +++ b/fastlane/metadata/android/en-US/changelogs/36.txt @@ -0,0 +1,2 @@ +- Fix crash on Android 13 +- Upgrade CameraX version