-
Notifications
You must be signed in to change notification settings - Fork 34
Expand file tree
/
Copy pathVideoEditorModule.kt
More file actions
114 lines (102 loc) · 3.98 KB
/
Copy pathVideoEditorModule.kt
File metadata and controls
114 lines (102 loc) · 3.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
package com.banuba.example.integrationapp
import android.content.Context
import android.net.Uri
import android.os.Bundle
import android.util.Size
import androidx.core.net.toFile
import androidx.fragment.app.Fragment
import com.banuba.sdk.arcloud.data.source.ArEffectsRepositoryProvider
import com.banuba.sdk.arcloud.di.ArCloudKoinModule
import com.banuba.sdk.audiobrowser.di.AudioBrowserKoinModule
import com.banuba.sdk.audiobrowser.domain.AudioBrowserMusicProvider
import com.banuba.sdk.core.AspectRatio
import com.banuba.sdk.core.VideoResolution
import com.banuba.sdk.core.data.TrackData
import com.banuba.sdk.core.ui.ContentFeatureProvider
import com.banuba.sdk.effectplayer.adapter.BanubaEffectPlayerKoinModule
import com.banuba.sdk.export.data.ExportParams
import com.banuba.sdk.export.data.ExportParamsProvider
import com.banuba.sdk.export.di.VeExportKoinModule
import com.banuba.sdk.gallery.di.GalleryKoinModule
import com.banuba.sdk.playback.di.VePlaybackSdkKoinModule
import com.banuba.sdk.ve.data.EditorAspectSettings
import com.banuba.sdk.ve.data.EditorAspectSettings.`16_9`.aspectRatio
import com.banuba.sdk.ve.data.aspect.AspectSettings
import com.banuba.sdk.ve.data.aspect.AspectsProvider
import com.banuba.sdk.ve.di.VeSdkKoinModule
import com.banuba.sdk.ve.domain.VideoRangeList
import com.banuba.sdk.ve.effects.Effects
import com.banuba.sdk.ve.effects.music.MusicEffect
import com.banuba.sdk.ve.effects.watermark.WatermarkBuilder
import com.banuba.sdk.ve.flow.di.VeFlowKoinModule
import com.banuba.sdk.veui.data.EditorConfig
import com.banuba.sdk.veui.di.VeUiSdkKoinModule
import org.koin.android.ext.koin.androidContext
import org.koin.core.context.startKoin
import org.koin.core.qualifier.named
import org.koin.dsl.module
class VideoEditorModule {
fun initialize(applicationContext: Context) {
startKoin {
androidContext(applicationContext)
allowOverride(true)
// pass the customized Koin modules that implements required dependencies. Keep order of modules
modules(
VeSdkKoinModule().module,
VeExportKoinModule().module,
VePlaybackSdkKoinModule().module,
AudioBrowserKoinModule().module,
ArCloudKoinModule().module,
VeUiSdkKoinModule().module,
VeFlowKoinModule().module,
GalleryKoinModule().module,
BanubaEffectPlayerKoinModule().module,
SampleIntegrationKoinModule().module,
)
}
}
}
/**
* All dependencies mentioned in this module will override default
* implementations provided from SDK.
*/
private class SampleIntegrationKoinModule {
val module = module {
single<ArEffectsRepositoryProvider>(createdAtStart = true) {
ArEffectsRepositoryProvider(
arEffectsRepository = get(named("backendArEffectsRepository")),
ioDispatcher = get(named("ioDispatcher"))
)
}
single<ContentFeatureProvider<TrackData, Fragment>>(
named("musicTrackProvider")
) {
AudioBrowserMusicProvider()
}
single {
object : AspectsProvider {
override var availableAspects: List<AspectSettings> = listOf(
EditorAspectSettings.`16_9`
)
override fun provide(): AspectsProvider.AspectsData {
return AspectsProvider.AspectsData(
allAspects = availableAspects,
default = availableAspects.first()
)
}
override fun setBundle(bundle: Bundle) {}
}
}
single {
EditorConfig(
aspectSettings = EditorAspectSettings.`16_9`
)
}
factory<ExportParamsProvider> {
CustomExportParamsProvider(
exportDir = get(named("exportDir")),
watermarkBuilder = get()
)
}
}
}