mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-07-01 03:26:01 +01:00
Use trimmed video start for thumbnail generation.
This commit is contained in:
committed by
Michelle Tang
parent
5e4865be73
commit
d1e2fc0423
@@ -29,12 +29,12 @@ object SignalGlideDependencies {
|
||||
val application: Application
|
||||
get() = _application
|
||||
|
||||
fun getUriInputStreamFactory(uri: Uri): InputStreamFactory = _provider.getUriInputStreamFactory(uri)
|
||||
fun getUriInputStreamFactory(uri: Uri, thumbnailTimeUs: Long = 0): InputStreamFactory = _provider.getUriInputStreamFactory(uri, thumbnailTimeUs)
|
||||
|
||||
interface Provider {
|
||||
/**
|
||||
* A factory which can create an [java.io.InputStream] from a given [Uri]
|
||||
* A factory which can create an [java.io.InputStream] from a given [Uri]. For videos, [thumbnailTimeUs] specifies the frame time to extract.
|
||||
*/
|
||||
fun getUriInputStreamFactory(uri: Uri): InputStreamFactory
|
||||
fun getUriInputStreamFactory(uri: Uri, thumbnailTimeUs: Long = 0): InputStreamFactory
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,7 +17,8 @@ import java.io.InputStream
|
||||
interface InputStreamFactory {
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun build(uri: Uri): InputStreamFactory = SignalGlideDependencies.getUriInputStreamFactory(uri)
|
||||
@JvmOverloads
|
||||
fun build(uri: Uri, thumbnailTimeUs: Long = 0): InputStreamFactory = SignalGlideDependencies.getUriInputStreamFactory(uri, thumbnailTimeUs)
|
||||
|
||||
@JvmStatic
|
||||
fun build(file: File): InputStreamFactory = FileInputStreamFactory(file)
|
||||
|
||||
@@ -9,8 +9,9 @@ import android.net.Uri
|
||||
import com.bumptech.glide.load.Key
|
||||
import java.security.MessageDigest
|
||||
|
||||
data class DecryptableUri(val uri: Uri) : Key {
|
||||
data class DecryptableUri @JvmOverloads constructor(val uri: Uri, val thumbnailTimeUs: Long = 0) : Key {
|
||||
override fun updateDiskCacheKey(messageDigest: MessageDigest) {
|
||||
messageDigest.update(uri.toString().toByteArray())
|
||||
messageDigest.update(thumbnailTimeUs.toString().toByteArray())
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ class DecryptableUriStreamFetcher(
|
||||
|
||||
override fun loadData(priority: Priority, callback: DataFetcher.DataCallback<in InputStreamFactory>) {
|
||||
try {
|
||||
callback.onDataReady(InputStreamFactory.build(decryptableUri.uri))
|
||||
callback.onDataReady(InputStreamFactory.build(decryptableUri.uri, decryptableUri.thumbnailTimeUs))
|
||||
} catch (e: Exception) {
|
||||
callback.onLoadFailed(e)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user