1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
#!/usr/bin/env python
import sys
from pyjackd.mygetopt import my_getopt
from pyjackd import jackctl
import readline
import time
import reserve_audio
argv = sys.argv[1:]
def server_parse_ags( srv, argv ):
shortopts = ""
longopts = []
shortmap = {}
driver = None
for param in srv.params:
p = srv.params[param]
shortopts += p.id
if p.param_type != 5:
shortopts += ":"
longopts.append (p.name + "=")
else:
longopts.append (p.name)
shortmap[p.id] = p
while not driver:
opts, argv = my_getopt( argv, shortopts+"d:" )
if not opts:
break
for opt,optarg in opts:
if opt == "-d":
driver = srv.drivers[optarg]
elif opt.startswith("--"):
pass
elif opt.startswith("-"):
p = shortmap[opt[1]]
if p.param_type == 5:
p.value = True
else:
p.value = optarg
return driver, argv
def driver_parse_args( drv, argv ):
shortopts = ""
longopts = []
shortmap = {}
for param in drv.params:
p = drv.params[param]
shortopts += p.id
if p.param_type != 5:
shortopts += ":"
longopts.append (p.name + "=")
else:
longopts.append (p.name)
shortmap[p.id] = p
while True:
opts, argv = my_getopt( argv, shortopts+"d:" )
if not opts:
break
for opt,optarg in opts:
if opt.startswith("--"):
pass
elif opt.startswith("-"):
p = shortmap[opt[1]]
if p.param_type == 5:
p.value = True
else:
p.value = optarg
def acquire_dev(cardname):
reserve_audio.reserve_dev(cardname,20,None)
time.sleep(0.1)
return True
def release_dev(cardname):
reserve_audio.rr.unreserve()
reserve_audio.rr = None
srv = jackctl.Server()
srv.acquire_card_cb = acquire_dev
srv.release_card_cb = release_dev
drv, argv = server_parse_ags( srv, argv )
driver_parse_args( drv, argv )
#for p in srv.params.values():
# print p.name, "-> ", p.value
#
#print "----------------"
#print "driver ", drv.name
#
#for p in drv.params.values():
# print p.name, "-> ", p.value
started = srv.start( drv )
if not started:
print "failed to start with driver " + drv.name
print "trying to start with dummy driver, switch to the right master yourself"
started = srv.start( srv.drivers["dummy"] )
if not started:
sys.exit(20)
quit = False
while not quit:
try:
cmd = raw_input("jack> ")
except EOFError:
break
cmdv = cmd.split()
if len(cmdv) == 0:
continue
if cmdv[0] == "quit":
quit = True
elif cmdv[0] == "switch":
if len(cmdv) > 1:
drv = srv.drivers[cmdv[1]]
driver_parse_args( drv, cmdv[2:] )
srv.switch_master( drv )
print "\nshutting down"
srv.stop()
|