diff --git a/musikr/src/main/cpp/JVMInputStream.cpp b/musikr/src/main/cpp/JVMInputStream.cpp index 615944f45..bbc69b447 100644 --- a/musikr/src/main/cpp/JVMInputStream.cpp +++ b/musikr/src/main/cpp/JVMInputStream.cpp @@ -30,8 +30,6 @@ JVMInputStream::JVMInputStream(JNIEnv *env, jobject inputStream) : env(env), inp } jclass inputStreamClass = env->FindClass( "org/oxycblt/musikr/metadata/NativeInputStream"); - inputStreamNameMethod = env->GetMethodID(inputStreamClass, "name", - "()Ljava/lang/String;"); inputStreamReadBlockMethod = env->GetMethodID(inputStreamClass, "readBlock", "(J)[B"); inputStreamIsOpenMethod = env->GetMethodID(inputStreamClass, "isOpen", @@ -55,12 +53,8 @@ JVMInputStream::~JVMInputStream() { } TagLib::FileName JVMInputStream::name() const { - auto name = (jstring) env->CallObjectMethod(inputStream, - inputStreamNameMethod); - const char *nameChars = env->GetStringUTFChars(name, nullptr); - auto fileName = TagLib::FileName(nameChars); - env->ReleaseStringUTFChars(name, nameChars); - return fileName; + // Not actually used except in FileRef, can safely ignore. + return ""; } TagLib::ByteVector JVMInputStream::readBlock(size_t length) { diff --git a/musikr/src/main/java/org/oxycblt/musikr/metadata/AndroidInputStream.kt b/musikr/src/main/java/org/oxycblt/musikr/metadata/AndroidInputStream.kt index 1de192024..cb888ed05 100644 --- a/musikr/src/main/java/org/oxycblt/musikr/metadata/AndroidInputStream.kt +++ b/musikr/src/main/java/org/oxycblt/musikr/metadata/AndroidInputStream.kt @@ -19,20 +19,18 @@ package org.oxycblt.musikr.metadata import android.content.Context +import android.net.Uri import java.io.FileInputStream import java.nio.ByteBuffer -internal class AndroidInputStream(context: Context, fileRef: FileRef) : NativeInputStream { - private val fileName = fileRef.fileName +internal class AndroidInputStream(context: Context, uri: Uri) : NativeInputStream { private val fd = - requireNotNull(context.contentResolver.openFileDescriptor(fileRef.uri, "r")) { - "Failed to open file descriptor for ${fileRef.fileName}" + requireNotNull(context.contentResolver.openFileDescriptor(uri, "r")) { + "Failed to open file descriptor for $uri" } private val fis = FileInputStream(fd.fileDescriptor) private val channel = fis.channel - override fun name() = fileName - override fun readBlock(length: Long): ByteArray { val buffer = ByteBuffer.allocate(length.toInt()) channel.read(buffer) diff --git a/musikr/src/main/java/org/oxycblt/musikr/metadata/MetadataExtractor.kt b/musikr/src/main/java/org/oxycblt/musikr/metadata/MetadataExtractor.kt index 59d1b0c7d..a8191683f 100644 --- a/musikr/src/main/java/org/oxycblt/musikr/metadata/MetadataExtractor.kt +++ b/musikr/src/main/java/org/oxycblt/musikr/metadata/MetadataExtractor.kt @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ - + package org.oxycblt.musikr.metadata import android.content.Context @@ -35,6 +35,6 @@ internal interface MetadataExtractor { private class MetadataExtractorImpl(private val context: Context) : MetadataExtractor { override suspend fun extract(file: DeviceFile) = withContext(Dispatchers.IO) { - TagLibJNI.open(context, FileRef(unlikelyToBeNull(file.path.name), file.uri)) + TagLibJNI.open(context, file.uri) } } diff --git a/musikr/src/main/java/org/oxycblt/musikr/metadata/NativeInputStream.kt b/musikr/src/main/java/org/oxycblt/musikr/metadata/NativeInputStream.kt index 1b2382647..26ef1f4b3 100644 --- a/musikr/src/main/java/org/oxycblt/musikr/metadata/NativeInputStream.kt +++ b/musikr/src/main/java/org/oxycblt/musikr/metadata/NativeInputStream.kt @@ -24,8 +24,6 @@ package org.oxycblt.musikr.metadata * The vast majority of IO shim between Taglib/KTaglib should occur here to minimize JNI calls. */ internal interface NativeInputStream { - fun name(): String - fun readBlock(length: Long): ByteArray fun isOpen(): Boolean diff --git a/musikr/src/main/java/org/oxycblt/musikr/metadata/TagLibJNI.kt b/musikr/src/main/java/org/oxycblt/musikr/metadata/TagLibJNI.kt index 12124a65d..e09a98b05 100644 --- a/musikr/src/main/java/org/oxycblt/musikr/metadata/TagLibJNI.kt +++ b/musikr/src/main/java/org/oxycblt/musikr/metadata/TagLibJNI.kt @@ -31,8 +31,8 @@ internal object TagLibJNI { * * Note: This method is blocking and should be handled as such if calling from a coroutine. */ - fun open(context: Context, ref: FileRef): Metadata? { - val inputStream = AndroidInputStream(context, ref) + fun open(context: Context, uri: Uri): Metadata? { + val inputStream = AndroidInputStream(context, uri) val tag = openNative(inputStream) inputStream.close() return tag @@ -40,5 +40,3 @@ internal object TagLibJNI { private external fun openNative(ioStream: AndroidInputStream): Metadata? } - -internal data class FileRef(val fileName: String, val uri: Uri)