From fb27158a877f1b30ca781929a0756e0b8c068aa1 Mon Sep 17 00:00:00 2001 From: Akshar Bhatnagar Date: Tue, 28 Jun 2022 12:51:16 +0530 Subject: [PATCH 1/2] adds updateDataSources functions to thumbnail engine --- .../thumbnails/DefaultThumbnailsEngine.kt | 21 +++++++++++++++++++ .../internal/thumbnails/ThumbnailsEngine.kt | 2 ++ 2 files changed, 23 insertions(+) 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 91e3fc66..13889155 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 @@ -240,6 +240,27 @@ class DefaultThumbnailsEngine( tracks.updateTracksInfo() } + override fun updateDataSources(dataSourcesNew: List) { + val currentVideoIds = dataSources.videoOrNull()?.map { it.mediaId() } + val newSourceIds = dataSourcesNew.map { it.mediaId() }.distinct() + val toAdd = newSourceIds - currentVideoIds + val toRemove = currentVideoIds?.minus(newSourceIds) + toAdd.forEach { id -> + val source = dataSourcesNew.first { it.mediaId() == id } + dataSources.addVideoDataSource( + source + ) + tracks.updateTracksInfo() + if (tracks.active.has(TrackType.VIDEO)) { + source.selectTrack(TrackType.VIDEO) + } + } + toRemove?.forEach { id -> + dataSources.removeVideoDataSource(id) + segments.releaseSegment(id) + } + } + override suspend fun queueThumbnails(list: List) { val map = list.groupBy { it.sourceId() } diff --git a/lib/src/main/java/com/otaliastudios/transcoder/internal/thumbnails/ThumbnailsEngine.kt b/lib/src/main/java/com/otaliastudios/transcoder/internal/thumbnails/ThumbnailsEngine.kt index dea669df..326d8012 100644 --- a/lib/src/main/java/com/otaliastudios/transcoder/internal/thumbnails/ThumbnailsEngine.kt +++ b/lib/src/main/java/com/otaliastudios/transcoder/internal/thumbnails/ThumbnailsEngine.kt @@ -18,6 +18,8 @@ abstract class ThumbnailsEngine { abstract fun removeDataSource(dataSourceId: String) + abstract fun updateDataSources(dataSources: List) + abstract suspend fun queueThumbnails(list: List) abstract suspend fun removePosition(source: String, positionUs: Long) From 9ed6411cd40fb36d515bd275c6f5202c23ade343 Mon Sep 17 00:00:00 2001 From: Akshar Bhatnagar Date: Tue, 28 Jun 2022 16:59:25 +0530 Subject: [PATCH 2/2] uses existing add and removeDataSource to simplify adding/removing --- .../internal/thumbnails/DefaultThumbnailsEngine.kt | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) 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 13889155..90f90189 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 @@ -247,17 +247,10 @@ class DefaultThumbnailsEngine( val toRemove = currentVideoIds?.minus(newSourceIds) toAdd.forEach { id -> val source = dataSourcesNew.first { it.mediaId() == id } - dataSources.addVideoDataSource( - source - ) - tracks.updateTracksInfo() - if (tracks.active.has(TrackType.VIDEO)) { - source.selectTrack(TrackType.VIDEO) - } + addDataSource(source) } toRemove?.forEach { id -> - dataSources.removeVideoDataSource(id) - segments.releaseSegment(id) + removeDataSource(id) } }