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