|
- #!/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()
|