Skip to content

Commit 4f2cbac

Browse files
TheEssemfreyacodes
andauthored
Allow adding new MediaContainerProbes via plugins (#631)
* Allow adding new MediaContainerProbes via plugins * Document custom MediaContainerProbe bean support * Changes plugin decoumentation wording Co-authored-by: Freya Arbjerg <[email protected]>
1 parent 21a4d1e commit 4f2cbac

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

LavalinkServer/src/main/java/lavalink/server/config/AudioPlayerConfiguration.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package lavalink.server.config
22

3+
import com.sedmelluq.discord.lavaplayer.container.MediaContainerProbe
4+
import com.sedmelluq.discord.lavaplayer.container.MediaContainerRegistry
35
import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager
46
import com.sedmelluq.discord.lavaplayer.player.DefaultAudioPlayerManager
57
import com.sedmelluq.discord.lavaplayer.source.AudioSourceManager
@@ -42,7 +44,8 @@ class AudioPlayerConfiguration {
4244
serverConfig: ServerConfig,
4345
routePlanner: AbstractRoutePlanner?,
4446
audioSourceManagers: Collection<AudioSourceManager>,
45-
audioPlayerManagerConfigurations: Collection<AudioPlayerManagerConfiguration>
47+
audioPlayerManagerConfigurations: Collection<AudioPlayerManagerConfiguration>,
48+
mediaContainerProbes: Collection<MediaContainerProbe>
4649
): AudioPlayerManager {
4750
val audioPlayerManager = DefaultAudioPlayerManager()
4851

@@ -61,6 +64,8 @@ class AudioPlayerConfiguration {
6164
audioPlayerManager.frameBufferDuration = bufferDuration
6265
}
6366

67+
val mcr: MediaContainerRegistry = MediaContainerRegistry.extended(*mediaContainerProbes.toTypedArray())
68+
6469
if (sources.isYoutube) {
6570
val youtube = YoutubeAudioSourceManager(serverConfig.isYoutubeSearchEnabled)
6671
if (routePlanner != null) {
@@ -109,7 +114,7 @@ class AudioPlayerConfiguration {
109114
if (sources.isTwitch) audioPlayerManager.registerSourceManager(TwitchStreamAudioSourceManager())
110115
if (sources.isVimeo) audioPlayerManager.registerSourceManager(VimeoAudioSourceManager())
111116
if (sources.isMixer) audioPlayerManager.registerSourceManager(BeamAudioSourceManager())
112-
if (sources.isLocal) audioPlayerManager.registerSourceManager(LocalAudioSourceManager())
117+
if (sources.isLocal) audioPlayerManager.registerSourceManager(LocalAudioSourceManager(mcr))
113118

114119
audioSourceManagers.forEach {
115120
audioPlayerManager.registerSourceManager(it)
@@ -126,7 +131,7 @@ class AudioPlayerConfiguration {
126131

127132
// This must be loaded last
128133
if (sources.isHttp) {
129-
val httpAudioSourceManager = HttpAudioSourceManager()
134+
val httpAudioSourceManager = HttpAudioSourceManager(mcr)
130135

131136
serverConfig.httpConfig?.let { httpConfig ->
132137
httpAudioSourceManager.configureBuilder {

PLUGINS.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,3 +59,14 @@ class MyAudioSourceManager implements AudioSourceManager {
5959
// ...
6060
}
6161
```
62+
63+
Likewise, you can also add new MediaContainerProbe this way, to be used with the HTTP and local sources:
64+
65+
```java
66+
import org.springframework.stereotype.Service;
67+
68+
@Service
69+
class MyMediaContainerProbe implements MediaContainerProbe {
70+
// ...
71+
}
72+
```

0 commit comments

Comments
 (0)