music: use aosp covers by default

Less good, but it's also far more memory efficient.
This commit is contained in:
Alexander Capehart 2024-11-29 10:12:10 -07:00
parent f57ee549f1
commit 3dbe06c0bc
No known key found for this signature in database
GPG key ID: 37DBE3621FE9AD47
3 changed files with 10 additions and 5 deletions

View file

@ -18,19 +18,22 @@
package org.oxycblt.auxio.image.stack.extractor package org.oxycblt.auxio.image.stack.extractor
import android.content.Context
import android.media.MediaMetadataRetriever import android.media.MediaMetadataRetriever
import android.net.Uri import android.net.Uri
import dagger.hilt.android.qualifiers.ApplicationContext
import java.io.InputStream import java.io.InputStream
import javax.inject.Inject import javax.inject.Inject
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
class AOSPCoverSource @Inject constructor() : CoverSource { class AOSPCoverSource @Inject constructor(@ApplicationContext private val context: Context) :
CoverSource {
override suspend fun extract(fileUri: Uri): InputStream? { override suspend fun extract(fileUri: Uri): InputStream? {
val mediaMetadataRetriever = MediaMetadataRetriever() val mediaMetadataRetriever = MediaMetadataRetriever()
val cover = val cover =
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
mediaMetadataRetriever.setDataSource(fileUri.toString()) mediaMetadataRetriever.setDataSource(context, fileUri)
mediaMetadataRetriever.embeddedPicture mediaMetadataRetriever.embeddedPicture
} ?: return null } ?: return null
return cover.inputStream() return cover.inputStream()

View file

@ -35,5 +35,5 @@ interface ExtractorModule {
class CoverSourcesModule { class CoverSourcesModule {
@Provides @Provides
fun coverSources(exoPlayerCoverSource: ExoPlayerCoverSource, aospCoverSource: AOSPCoverSource) = fun coverSources(exoPlayerCoverSource: ExoPlayerCoverSource, aospCoverSource: AOSPCoverSource) =
CoverSources(listOf(exoPlayerCoverSource, aospCoverSource)) CoverSources(listOf(aospCoverSource, exoPlayerCoverSource))
} }

View file

@ -93,7 +93,7 @@ class AlbumImpl(linkedAlbum: LinkedAlbum) : Album {
override val releaseType = preAlbum.releaseType override val releaseType = preAlbum.releaseType
override var durationMs = 0L override var durationMs = 0L
override var dateAdded = 0L override var dateAdded = 0L
override var cover = Cover.nil() override var cover: Cover = Cover.nil()
override var dates: Date.Range? = null override var dates: Date.Range? = null
override val artists = linkedAlbum.artists.resolve(this) override val artists = linkedAlbum.artists.resolve(this)
@ -123,7 +123,9 @@ class AlbumImpl(linkedAlbum: LinkedAlbum) : Album {
} }
} }
fun finalize() {} fun finalize() {
cover = Cover.single(Sort(Sort.Mode.ByTrack, Sort.Direction.ASCENDING).songs(songs).first())
}
} }
/** /**