module CultomePlayer::Player::Adapter::Mpg123
Public Instance Methods
fb_in_player(secs)
click to toggle source
Fast backward the playback
@contract Adapter
@param secs [Integer] Number of seconds to fast backward.
# File lib/cultome_player/player/adapter/mpg123.rb, line 55 def fb_in_player(secs) send_to_player "jump -#{secs}s" end
ff_in_player(secs)
click to toggle source
Fast forward the playback
@contract Adapter
@param secs [Integer] Number of seconds to fast forward.
# File lib/cultome_player/player/adapter/mpg123.rb, line 47 def ff_in_player(secs) send_to_player "jump +#{secs}s" end
pause_in_player()
click to toggle source
Activate the pause in media player.
@contract Adapter
# File lib/cultome_player/player/adapter/mpg123.rb, line 20 def pause_in_player toggle_pause end
play_in_player(song)
click to toggle source
Start a playback in the media player.
@contract Adapter
@param song [Song] The song to be played.
# File lib/cultome_player/player/adapter/mpg123.rb, line 8 def play_in_player(song) @current_song = song unless player_running? start_player end loadfile(song) end
quit_in_player()
click to toggle source
Turn off the media player
# File lib/cultome_player/player/adapter/mpg123.rb, line 60 def quit_in_player begin send_to_player "quit" rescue Exception => e end end
repeat_in_player()
click to toggle source
Play from the begining the current playback.
# File lib/cultome_player/player/adapter/mpg123.rb, line 68 def repeat_in_player send_to_player "jump 0" end
resume_in_player()
click to toggle source
Resume playback in media player. If is paused or stopped.
@contract Adapter
# File lib/cultome_player/player/adapter/mpg123.rb, line 27 def resume_in_player if paused? toggle_pause else play_in_player current_song end end
stop_in_player()
click to toggle source
Stop playback in media player.
@contract Adapter
# File lib/cultome_player/player/adapter/mpg123.rb, line 38 def stop_in_player @user_stopped = true send_to_player "stop" end
Private Instance Methods
control_pipe()
click to toggle source
# File lib/cultome_player/player/adapter/mpg123.rb, line 88 def control_pipe unless pipe_alive? @pipe = File.open(mplayer_pipe, 'a+') end @pipe end
loadfile(song)
click to toggle source
# File lib/cultome_player/player/adapter/mpg123.rb, line 78 def loadfile(song) send_to_player "load #{song.path}" end
pipe_alive?()
click to toggle source
# File lib/cultome_player/player/adapter/mpg123.rb, line 95 def pipe_alive? return !(@pipe.nil? || @pipe.closed?) end
send_to_player(cmd)
click to toggle source
# File lib/cultome_player/player/adapter/mpg123.rb, line 82 def send_to_player(cmd) raise 'invalid state:player is not running' unless player_running? control_pipe.puts cmd control_pipe.flush end
start_player()
click to toggle source
# File lib/cultome_player/player/adapter/mpg123.rb, line 99 def start_player # creamos el thread que lea la salida del mpg123 Thread.new do start_cmd = "mpg123 --fifo #{mplayer_pipe} -R" IO.popen(start_cmd).each do |line| case line when /^@R MPG123/ @is_player_running = true when /^@P ([\d])$/ case $1.to_i when 0 # stopped @playing = @paused = false @stopped = true @user_stopped ? emit_event(:playback_stopped, current_song) : emit_event(:playback_finish, current_song) when 1 # paused @stopped = @playing = false @paused = true emit_event(:playback_paused, current_song) when 2 # unpaused @playing = true @paused = @stopped = false emit_event(:playback_resumed, current_song) end when /^@F ([\d]+) ([\d]+) ([\d.]+) ([\d.]+)$/ @playback_time_position = $3.to_f @playback_time_length = @playback_time_position + $4.to_f end # case line end # IO end # Thread wait_player end
toggle_pause()
click to toggle source
# File lib/cultome_player/player/adapter/mpg123.rb, line 74 def toggle_pause send_to_player "pause" end
wait_player()
click to toggle source
# File lib/cultome_player/player/adapter/mpg123.rb, line 132 def wait_player count = 0 while !player_running? sleep(0.1) count += 1 return if count > 50 # 5 seg end end