You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

31 lines
879 B

package nova.monadic_sfx.util
import cats.effect.Resource
import monix.bio.Task
import uk.co.caprica.vlcj.factory.MediaPlayerFactory
import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer
class MediaPlayerResource(
val factory: MediaPlayerFactory,
val controller: EmbeddedMediaPlayer
)
object MediaPlayerResource {
val mediaPlayerFactoryResource =
Resource.make(Task(new MediaPlayerFactory()))(factory =>
Task(factory.release())
)
def mediaPlayerControllerResource(factory: MediaPlayerFactory) =
Resource.make(Task {
val players = factory.mediaPlayers()
players.newEmbeddedMediaPlayer()
})(controller => Task(controller.release()))
def apply() =
for {
factory <- mediaPlayerFactoryResource
controller <- mediaPlayerControllerResource(factory)
} yield new MediaPlayerResource(factory, controller)
}