diff --git a/lib/src/main/java/com/otaliastudios/transcoder/internal/thumbnails/DefaultThumbnailsEngine.kt b/lib/src/main/java/com/otaliastudios/transcoder/internal/thumbnails/DefaultThumbnailsEngine.kt index bead87b0..c2ae7066 100644 --- a/lib/src/main/java/com/otaliastudios/transcoder/internal/thumbnails/DefaultThumbnailsEngine.kt +++ b/lib/src/main/java/com/otaliastudios/transcoder/internal/thumbnails/DefaultThumbnailsEngine.kt @@ -75,7 +75,7 @@ class DefaultThumbnailsEngine( ) { var actualLocalizedUs: Long = localizedUs override fun toString(): String { - return positionUs.toString() + return request.sourceId() + ":" + positionUs.toString() } } @@ -91,6 +91,8 @@ class DefaultThumbnailsEngine( override fun getSeekThreshold() = source.seekThreshold + override fun mediaId() = source.mediaId() + override fun isDrained(): Boolean { if (source.isDrained) { source.seekTo(stubs.firstOrNull()?.positionUs ?: -1) diff --git a/lib/src/main/java/com/otaliastudios/transcoder/source/UriDataSource.java b/lib/src/main/java/com/otaliastudios/transcoder/source/UriDataSource.java index 82562773..65c8fc7d 100644 --- a/lib/src/main/java/com/otaliastudios/transcoder/source/UriDataSource.java +++ b/lib/src/main/java/com/otaliastudios/transcoder/source/UriDataSource.java @@ -32,4 +32,9 @@ protected void initializeExtractor(@NonNull MediaExtractor extractor) throws IOE protected void initializeRetriever(@NonNull MediaMetadataRetriever retriever) { retriever.setDataSource(context, uri); } + + @Override + public String mediaId() { + return uri.toString(); + } } diff --git a/lib/src/main/java/com/otaliastudios/transcoder/thumbnail/ThumbnailRequest.kt b/lib/src/main/java/com/otaliastudios/transcoder/thumbnail/ThumbnailRequest.kt index 8724b7ba..89a669ff 100644 --- a/lib/src/main/java/com/otaliastudios/transcoder/thumbnail/ThumbnailRequest.kt +++ b/lib/src/main/java/com/otaliastudios/transcoder/thumbnail/ThumbnailRequest.kt @@ -4,6 +4,8 @@ interface ThumbnailRequest { fun locate(durationUs: Long): List fun threshold(): Long = 0 + + fun sourceId() : String = "" // Could make it so that if locate() is empty, accept is called for each frame (no seeking). // But this only makes sense if accept signature has more information (segment, ...), and // it should also have a way to say - we're done, stop transcoding.