players.table

#### Players ####

# MPlayer

player 'mplayer'
        file 'mplayer'
        plays_video 'false'
        exts 'aac flac m4a mka mp3 oga ogg opus ra ram wav wma'
        args_normal '-vo null -really-quiet -slave (FILE)'
        args_verbose '-vo null -quiet -slave (FILE)'
        args_debug '-vo null -quiet -slave (FILE)'
        backend_mode 'true'
        backend_mode_linemode 'true'
        backend_mode_commands_pause 'pausing_toggle pause'
        backend_mode_commands_unpause 'pausing_keep pause'
        backend_mode_commands_fast_forward 'seek +5'
        backend_mode_commands_rewind 'seek -5'
        backend_mode_commands_stop 'quit'
        check '(PLAYER_FILE) -vo null -quiet (SAMPLE_WAV)'
end

# MPlayer (ALSA)

player 'mplayer_alsa'
        file 'mplayer'
        plays_video 'false'
        exts 'aac flac m4a mka mp3 oga ogg opus ra ram wav wma'
        args_normal '-ao alsa -vo null -really-quiet -slave (FILE)'
        args_verbose '-ao alsa -vo null -quiet -slave (FILE)'
        args_debug '-ao alsa -vo null -quiet -slave (FILE)'
        backend_mode 'true'
        backend_mode_linemode 'true'
        backend_mode_commands_pause 'pausing_toggle pause'
        backend_mode_commands_unpause 'pausing_keep pause'
        backend_mode_commands_fast_forward 'seek +5'
        backend_mode_commands_rewind 'seek -5'
        backend_mode_commands_stop 'quit'
        check '(PLAYER_FILE) -ao alsa -vo null -quiet (SAMPLE_WAV)'
end

# MPlayer (Video)

player 'mplayer_video'
        file 'mplayer'
        plays_video 'true'
        exts '3g2 3gp aac amr ape apl asf avi cdr dif dv f4a f4b f4p f4v flac flv m4a m4b m4p m4r m4v mka mkv mov mp3 mp4 mpeg mpg mtv nut oga ogg ogm ogv ogx qt ra ram rm rmvb shn spx ts vob wav webm wma wm'
        args_normal '(NO_VIDEO) -really-quiet  -zoom (FILE)'
        args_verbose '(NO_VIDEO) -quiet -zoom (FILE)'
        args_debug '(NO_VIDEO) -quiet -zoom (FILE)'
        args_no_video '-vo null'
        backend_mode 'true'
        backend_mode_linemode 'false'
        backend_mode_commands_pause 'p'
        backend_mode_commands_unpause 'p'
        backend_mode_commands_stop 'q'
        check '(PLAYER_FILE) -vo null -quiet (SAMPLE_WAV)'
end

# MPlayer (Video) (ALSA)

player 'mplayer_video_alsa'
        file 'mplayer'
        plays_video 'true'
        exts '3g2 3gp aac amr ape apl asf avi cdr dif dv f4a f4b f4p f4v flac flv m4a m4b m4p m4r m4v mka mkv mov mp3 mp4 mpeg mpg mtv nut oga ogg ogm ogv ogx opus qt ra ram rm rmvb shn spx ts vob wav webm wma wm'
        args_normal '-ao alsa (NO_VIDEO) -really-quiet -zoom (FILE)'
        args_verbose '-ao alsa (NO_VIDEO) -quiet -zoom (FILE)'
        args_debug '-ao alsa (NO_VIDEO) -quiet -zoom (FILE)'
        args_no_video '-vo null'
        backend_mode 'true'
        backend_mode_linemode 'false'
        backend_mode_commands_pause 'p'
        backend_mode_commands_unpause 'p'
        backend_mode_commands_stop 'q'
        check '(PLAYER_FILE) -ao alsa -vo null -quiet (SAMPLE_WAV)'
end

# SoX Player (play)

player 'play'
        file 'play'
        plays_video 'false'
        exts '8svx aif aifc aiff aiffc al alsa au auto avi avr cdda cdr cvs cvsd dat dvms ffmpeg flac fssd gsm hcom ima ircam la lpc lpc10 lu m4a maud mp2 mp3 mpg nist nul null ogg opus oss ossdsp pls prc raw s1 s2 s3 s4 sb sf sl smp snd sndt sou sph sw txw u1 u2 u3 u4 ub ul uw vms voc vorbis vox wav wmv wve xa'
        args_normal '(FILE) -q -V1'
        args_verbose '(FILE) -q -V2'
        args_debug '(FILE) -q -V2'
        backend_mode 'false'
        check '(PLAYER_FILE) -q (SAMPLE_WAV)'
end

# SoX (ALSA)

player 'sox_alsa'
        file 'sox'
        plays_video 'false'
        exts '8svx aif aifc aiff aiffc al alsa au auto avi avr cdda cdr cvs cvsd dat dvms ffmpeg flac fssd gsm hcom ima ircam la lpc lpc10 lu m4a maud mp2 mp3 mpg nist nul null ogg opus oss ossdsp pls prc raw s1 s2 s3 s4 sb sf sl smp snd sndt sou sph sw txw u1 u2 u3 u4 ub ul uw vms voc vorbis vox wav wmv wve xa'
        args_normal '-q -V1 (FILE) -t alsa default'
        args_verbose '-q -V2 (FILE) -t alsa default'
        args_debug '-q -V2 (FILE) -t alsa default'
        backend_mode 'false'
        check '(PLAYER_FILE) -q (SAMPLE_WAV) -t alsa default'
end

# SoX (OSS DSP)

player 'sox_ossdsp'
        file 'sox'
        plays_video 'false'
        exts '8svx aif aifc aiff aiffc al alsa au auto avi avr cdda cdr cvs cvsd dat dvms ffmpeg flac fssd gsm hcom ima ircam la lpc lpc10 lu m4a maud mp2 mp3 mpg nist nul null ogg opus oss ossdsp pls prc raw s1 s2 s3 s4 sb sf sl smp snd sndt sou sph sw txw u1 u2 u3 u4 ub ul uw vms voc vorbis vox wav wmv wve xa'
        args_normal '-q -V1 (FILE) -t ossdsp /dev/dsp'
        args_verbose '-q -V2 (FILE) -t ossdsp /dev/dsp'
        args_debug '-q -V2 (FILE) -t ossdsp /dev/dsp'
        backend_mode 'false'
        check '(PLAYER_FILE) -q (SAMPLE_WAV) -t ossdsp /dev/dsp'
end

# VLC

player 'vlc'
        # file 'vlc'
        plays_video 'true'
        exts '3gp 3g2 aac m4a m4b m4p m4v m4r mp4 aiff aif aifc amr asf avi evo flac flv f4v f4p f4a f4b mkv mka mov qt mpg mpeg mp1 mp2 mp3 m1v m1a m2a mpa mpv mtv vob mxf ogg oga ogv ogx ogm opus ra rm rmvb ram s3m spx ts wav webm wma wmv wv'
        args_normal '(NO_VIDEO) -q (FILE)'
        args_verbose '(NO_VIDEO) (FILE)'
        args_debug '(NO_VIDEO) (FILE)'
        args_no_video '--no-video'
        stderr '/dev/null'
        stdout '/dev/null'

        setup '
                local _USE_VLC_WRAPPER=false _USE_RC=false

                if [[ EUID -eq 0 ]] && hash vlc-wrapper &>/dev/null; then
                        Play.Players.set vlc file vlc-wrapper

                        if Play.Players.test vlc -q -I oldrc --rc-fake-tty --play-and-exit (SAMPLE_WAV); then
                                _USE_VLC_WRAPPER=true
                                _USE_RC=true
                        elif Play.Players.test vlc -q -I dummy --no-interact --play-and-exit (SAMPLE_WAV); then
                                _USE_VLC_WRAPPER=true
                        fi
                fi

                if [[ ${_USE_VLC_WRAPPER} == false ]]; then
                        Play.Players.set vlc file vlc
                        Play.Players.test vlc -q -I oldrc --rc-fake-tty --play-and-exit (SAMPLE_WAV) && _USE_RC=true
                fi

                if [[ ${_USE_RC} == true ]]; then
                        Play.Players.set vlc args_default "-I oldrc --rc-fake-tty --play-and-exit"
                        Play.Players.set vlc backend_mode true
                        Play.Players.set vlc backend_mode_linemode true
                        Play.Players.set vlc backend_mode_commands_pause pause
                        Play.Players.set vlc backend_mode_commands_unpause pause
                        Play.Players.set vlc backend_mode_commands_stop quit
                else
                        Play.Players.set vlc args_default "-I dummy --no-interact --play-and-exit"
                        Play.Players.set vlc backend_mode false
                fi
        '

        check '(PLAYER_FILE) (PLAYER_ARGS_DEFAULT) -q (SAMPLE_WAV)'
end

# FFPlay

player 'ffplay'
        file 'ffplay'
        plays_video 'false'
        exts 'aac flac m4a mka mp3 oga ogg opus vob wav wma'
        args_normal '-vn -nodisp -v quiet -nostats -autoexit (FILE)'
        args_verbose '-vn -nodisp -nostats -autoexit (FILE)'
        args_debug '-vn -nodisp -nostats -autoexit (FILE)'
        backend_mode 'false'
        check '(PLAYER_FILE) -vn -nodisp -v quiet -nostats -autoexit (SAMPLE_WAV)'
end

# FFPlay (Video)

player 'ffplay_video'
        file 'ffplay'
        plays_video 'true'
        exts '3gp avi flv m4v mkv mov mp4 mpeg mpg mtv ogm ogv rm rmvb ts webm wm'
        args_normal '(NO_VIDEO) -v quiet -nostats -autoexit (FILE)'
        args_verbose '(NO_VIDEO) -nostats -autoexit (FILE)'
        args_debug '(NO_VIDEO) -nostats -autoexit (FILE)'
        args_no_video '-vn -nodisp'
        backend_mode 'false'
        check '(PLAYER_FILE) -vn -nodisp -v quiet -nostats -autoexit (SAMPLE_WAV)'
end

# gst123

player 'gst123'
        file 'gst123'
        plays_video 'true'
        exts '3gp 3g2 aac m4a m4b m4p m4v m4r mp4 aiff aif aifc amr asf avi evo flac flv f4v f4p f4a f4b mkv mka mov qt mpg mpeg mp1 mp2 mp3 m1v m1a m2a mpa mpv mtv vob mxf ogg oga ogv ogx ogm opus ra rm rmvb ram s3m spx ts wav webm wma wmv wv'
        args_normal '(NO_VIDEO) -q (FILE)'
        args_verbose '(NO_VIDEO) -q (FILE)'
        args_debug '(NO_VIDEO) -q (FILE)'
        args_no_video '--novideo'
        backend_mode 'true'
        backend_mode_linemode 'false'
        backend_mode_commands_pause ' '
        backend_mode_commands_unpause ' '
        backend_mode_commands_stop 'q'
        backend_mode_commands_fast_forward 'OC'
        backend_mode_commands_rewind 'OD'
        # gst123 resets terminal input so let's just turn its output off.
        stdout '/dev/null'
        stderr '/dev/null'
        check '(PLAYER_FILE) --novideo -q (SAMPLE_WAV)'
end

# amp

player 'amp'
        file 'amp'
        plays_video 'false'
        exts 'mp3'
        args_normal '-q (FILE)'
        args_verbose '(FILE)'
        args_debug '-q (FILE)'
        backend_mode 'false'
        check '(PLAYER_FILE) -q (SAMPLE_WAV)'
end

# aplay

player 'aplay'
        file 'aplay'
        plays_video 'false'
        exts 'wav voc au raw'
        args_normal '-q (FILE)'
        args_verbose '(FILE)'
        args_debug '-q (FILE)'
        backend_mode 'false'
        check '(PLAYER_FILE) -q (SAMPLE_WAV)'
end

# madplay

player 'madplay'
        file 'madplay'
        plays_video 'false'
        exts 'mp3'
        args_normal '-q (FILE)'
        args_verbose '(FILE)'
        args_debug '-q (FILE)'
        backend_mode 'false'
        check '(PLAYER_FILE) -q (SAMPLE_MP3)'
end

# mpg123

player 'mpg123'
        file 'mpg123'
        plays_video 'false'
        exts 'mp3'
        args_normal '-q (FILE)'
        args_verbose 'FILE)'
        args_debug '(FILE)'
        # stderr '/dev/null'
        check '(PLAYER_FILE) -q (SAMPLE_MP3)'
end

# mpg123 (alsa)

player 'mpg123_alsa'
        file 'mpg123'
        plays_video 'false'
        exts 'mp3'
        args_normal '-o alsa -q (FILE)'
        args_verbose '-o alsa (FILE)'
        args_debug '-o alsa (FILE)'
        # stderr '/dev/null'
        check '(PLAYER_FILE) -o alsa -q (SAMPLE_MP3)'
end

# mpg321

player 'mpg321'
        file 'mpg321'
        plays_video 'false'
        exts 'mp3'
        args_normal '-q (FILE)'
        args_verbose '(FILE)'
        args_debug '-q (FILE)'

        backend_mode 'false'

        # Unfortunately there's no way we can make mpg321 automatically stop
        # after play has ended so we can't have backend mode (remote mode).

        # args_normal '-R --skip-printing-frames=38 -q DUMMY.FILE'
        # args_verbose '-R --skip-printing-frames=38 DUMMY.FILE'
        # args_debug '-R  --skip-printing-frames=38 -q DUMMY.FILE'
        # backend_mode 'true'
        # backend_mode_linemode 'true'
        # backend_mode_commands_play 'LOAD (FILE)'
        # backend_mode_commands_pause 'PAUSE'
        # backend_mode_commands_unpause 'PAUSE'
        # backend_mode_commands_fast_forward 'JUMP +190'  # estimated
        # backend_mode_commands_rewind 'JUMP -190'   # estimated
        # backend_mode_commands_stop 'STOP'
        # stdout '/dev/null'
        # stderr ''

        check '(PLAYER_FILE) -q (SAMPLE_MP3)'
end

# mpg321 (alsa)

player 'mpg321_alsa'
        file 'mpg321'
        plays_video 'false'
        exts 'mp3'
        args_normal '-o alsa -q (FILE)'
        args_verbose '-o alsa (FILE)'
        args_debug '-o alsa -q (FILE)'

        backend_mode 'false'

        # Unfortunately there's no way we can make mpg321 automatically stop
        # after play has ended so we can't have backend mode (remote mode).

        # args_normal '-R -o alsa --skip-printing-frames=38 -q DUMMY.FILE'
        # args_verbose '-R -o alsa --skip-printing-frames=38 DUMMY.FILE'
        # args_debug '-R -o alsa --skip-printing-frames=38 -q DUMMY.FILE'
        # backend_mode 'true'
        # backend_mode_linemode 'true'
        # backend_mode_commands_play 'LOAD (FILE)'
        # backend_mode_commands_pause 'PAUSE'
        # backend_mode_commands_unpause 'PAUSE'
        # backend_mode_commands_fast_forward 'JUMP +190'  # estimate
        # backend_mode_commands_rewind 'JUMP -190'   # estimate
        # backend_mode_commands_stop 'STOP'
        # stdout '/dev/null'
        # stderr ''

        check '(PLAYER_FILE) -o alsa -q (SAMPLE_MP3)'
end

# splay

player 'splay'
        file 'splay'
        plays_video 'false'
        exts 'mp1 mp2 mp3'
        args_normal '(FILE)'
        args_verbose '(FILE)'
        args_debug '(FILE)'

end

#### Players' Order ####

players_order
        # Videos

        avi  'mplayer_video mplayer_video_alsa vlc ffplay_video gst123'
        flv  'mplayer_video mplayer_video_alsa vlc ffplay_video gst123'
        mkv  'mplayer_video mplayer_video_alsa vlc ffplay_video gst123'
        mp4  'mplayer_video mplayer_video_alsa vlc ffplay_video gst123'
        mpg  'mplayer_video mplayer_video_alsa vlc ffplay_video gst123'
        ogm  'mplayer_video mplayer_video_alsa vlc ffplay_video gst123'
        ts   'mplayer_video mplayer_video_alsa vlc ffplay_video gst123'
        webm 'mplayer_video mplayer_video_alsa vlc ffplay_video gst123'
        wmv  'mplayer_video mplayer_video_alsa vlc ffplay_video gst123'

        # Audios

        flac 'mplayer mplayer_alsa gst123 vlc play sox_ossdsp sox_alsa ffplay'
        m4a  'mplayer mplayer_alsa gst123 vlc ffplay'
        mp3  'mplayer mplayer_alsa gst123 vlc mpg123 play sox_ossdsp sox_alsa amp ffplay'
        ogg  'mplayer mplayer_alsa gst123 vlc play sox_ossdsp sox_alsa ffplay'
        opus 'mplayer mplayer_alsa gst123 vlc play sox_ossdsp sox_alsa ffplay'
        wav  'mplayer mplayer_alsa gst123 vlc play sox_ossdsp sox_alsa ffplay'
        wma  'mplayer mplayer_alsa gst123 vlc play sox_ossdsp sox_alsa ffplay'
end