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.
|
|
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)
}
|