Skip to content

Commit f879b39

Browse files
Merge pull request #3 from dev-diaries41/refactor/processor
Refactor processor package and make BatchProcessor implementations override named parameters correctly
2 parents 74b1d2c + 7111150 commit f879b39

File tree

8 files changed

+27
-33
lines changed

8 files changed

+27
-33
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
/.idea/navEditor.xml
1111
/.idea/assetWizardSettings.xml
1212
.DS_Store
13-
/build
13+
**/build/
1414
/captures
1515
.externalNativeBuild
1616
.cxx

core/src/main/java/com/fpf/smartscansdk/core/processors/BatchProcessor.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package com.fpf.smartscansdk.core.processors
33
import android.app.Application
44
import android.content.Context
55
import android.util.Log
6-
import com.fpf.smartscansdk.core.utils.MemoryUtils
76
import kotlinx.coroutines.CancellationException
87
import kotlinx.coroutines.Dispatchers
98
import kotlinx.coroutines.async

core/src/main/java/com/fpf/smartscansdk/core/processors/ProcessorTypes.kt renamed to core/src/main/java/com/fpf/smartscansdk/core/processors/IProcessorListener.kt

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,6 @@
11
package com.fpf.smartscansdk.core.processors
22

33
import android.content.Context
4-
import com.fpf.smartscansdk.core.utils.MemoryOptions
5-
6-
enum class ProcessorStatus {IDLE, ACTIVE, COMPLETE, FAILED }
7-
8-
sealed class Metrics {
9-
data class Success(val totalProcessed: Int = 0, val timeElapsed: Long = 0L) : Metrics()
10-
data class Failure(val processedBeforeFailure: Int, val timeElapsed: Long, val error: Exception) : Metrics()
11-
}
12-
13-
14-
data class ProcessOptions(
15-
val memory: MemoryOptions = MemoryOptions(),
16-
val batchSize: Int = 10
17-
)
184

195
interface IProcessorListener<Input, Output> {
206
suspend fun onActive(context: Context) = Unit

core/src/main/java/com/fpf/smartscansdk/core/utils/MemoryUtils.kt renamed to core/src/main/java/com/fpf/smartscansdk/core/processors/MemoryUtils.kt

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.fpf.smartscansdk.core.utils
1+
package com.fpf.smartscansdk.core.processors
22

33
import android.app.ActivityManager
44
import android.content.Context
@@ -34,10 +34,3 @@ class MemoryUtils(
3434
}
3535
}
3636
}
37-
38-
data class MemoryOptions(
39-
val lowMemoryThreshold: Long = 800L * 1024 * 1024,
40-
val highMemoryThreshold: Long = 1_600L * 1024 * 1024,
41-
val minConcurrency: Int = 1,
42-
val maxConcurrency: Int = 4
43-
)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.fpf.smartscansdk.core.processors
2+
3+
sealed class Metrics {
4+
data class Success(val totalProcessed: Int = 0, val timeElapsed: Long = 0L) : Metrics()
5+
data class Failure(val processedBeforeFailure: Int, val timeElapsed: Long, val error: Exception) : Metrics()
6+
}
7+
8+
data class MemoryOptions(
9+
val lowMemoryThreshold: Long = 800L * 1024 * 1024,
10+
val highMemoryThreshold: Long = 1_600L * 1024 * 1024,
11+
val minConcurrency: Int = 1,
12+
val maxConcurrency: Int = 4
13+
)
14+
15+
data class ProcessOptions(
16+
val memory: MemoryOptions = MemoryOptions(),
17+
val batchSize: Int = 10
18+
)
19+

core/src/test/kotlin/com/fpf/smartscansdk/core/processors/BatchProcessorTest.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.fpf.smartscansdk.core.processors
22

33
import android.app.Application
44
import android.util.Log
5-
import com.fpf.smartscansdk.core.utils.MemoryUtils
65
import io.mockk.*
76
import kotlinx.coroutines.runBlocking
87
import org.junit.jupiter.api.BeforeEach

extensions/src/main/java/com/fpf/smartscansdk/extensions/indexers/ImageIndexer.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,16 @@ class ImageIndexer(
3636
store.add(batch)
3737
}
3838

39-
override suspend fun onProcess(context: Context, id: Long): Embedding {
39+
override suspend fun onProcess(context: Context, item: Long): Embedding {
4040
val contentUri = ContentUris.withAppendedId(
41-
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, id
41+
MediaStore.Images.Media.EXTERNAL_CONTENT_URI, item
4242
)
4343
val bitmap = getBitmapFromUri(context, contentUri, ClipConfig.IMAGE_SIZE_X)
4444
val embedding = withContext(NonCancellable) {
4545
embedder.embed(bitmap)
4646
}
4747
return Embedding(
48-
id = id,
48+
id = item,
4949
date = System.currentTimeMillis(),
5050
embeddings = embedding
5151
)

extensions/src/main/java/com/fpf/smartscansdk/extensions/indexers/VideoIndexer.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import android.content.Context
66
import android.provider.MediaStore
77
import com.fpf.smartscansdk.core.ml.embeddings.Embedding
88
import com.fpf.smartscansdk.core.ml.embeddings.IEmbeddingStore
9-
import com.fpf.smartscansdk.core.ml.embeddings.clip.ClipConfig.CLIP_EMBEDDING_LENGTH
109
import com.fpf.smartscansdk.core.ml.embeddings.clip.ClipConfig.IMAGE_SIZE_X
1110
import com.fpf.smartscansdk.core.ml.embeddings.clip.ClipConfig.IMAGE_SIZE_Y
1211
import com.fpf.smartscansdk.core.ml.embeddings.clip.ClipImageEmbedder
@@ -15,7 +14,6 @@ import com.fpf.smartscansdk.core.processors.BatchProcessor
1514
import com.fpf.smartscansdk.core.processors.IProcessorListener
1615
import com.fpf.smartscansdk.core.processors.ProcessOptions
1716
import com.fpf.smartscansdk.core.utils.extractFramesFromVideo
18-
import com.fpf.smartscansdk.extensions.embeddings.FileEmbeddingStore
1917

2018
// ** Design Constraint**: For on-device vector search, the full index needs to be loaded in-memory (or make an Android native VectorDB)
2119
// File-based EmbeddingStore is used over a Room version due to significant faster index loading
@@ -42,9 +40,9 @@ class VideoIndexer(
4240
store.add(batch)
4341
}
4442

45-
override suspend fun onProcess(context: Context, id: Long): Embedding {
43+
override suspend fun onProcess(context: Context, item: Long): Embedding {
4644
val contentUri = ContentUris.withAppendedId(
47-
MediaStore.Video.Media.EXTERNAL_CONTENT_URI, id
45+
MediaStore.Video.Media.EXTERNAL_CONTENT_URI, item
4846
)
4947
val frameBitmaps = extractFramesFromVideo(context, contentUri, width = width, height = height, frameCount = frameCount)
5048

@@ -54,7 +52,7 @@ class VideoIndexer(
5452
val embedding: FloatArray = generatePrototypeEmbedding(rawEmbeddings)
5553

5654
return Embedding(
57-
id = id,
55+
id = item,
5856
date = System.currentTimeMillis(),
5957
embeddings = embedding
6058
)

0 commit comments

Comments
 (0)