summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DOCS/man/en/mplayer.13
-rw-r--r--libao2/ao_jack.c12
2 files changed, 13 insertions, 2 deletions
diff --git a/DOCS/man/en/mplayer.1 b/DOCS/man/en/mplayer.1
index 05cd7bfdbd..c19c20fe63 100644
--- a/DOCS/man/en/mplayer.1
+++ b/DOCS/man/en/mplayer.1
@@ -2757,6 +2757,9 @@ Useful if you want to have certain connections established automatically.
.IPs (no)estimate
Estimate the audio delay, supposed to make the video playback smoother
(default: enabled).
+.IPs (no)autostart (default: disabled)
+Automatically start jackd if necessary.
+Note that this seems unreliable and will spam stdout with server messages.
.RE
.PD 1
.
diff --git a/libao2/ao_jack.c b/libao2/ao_jack.c
index e4ac6910b2..d7f2092a43 100644
--- a/libao2/ao_jack.c
+++ b/libao2/ao_jack.c
@@ -227,19 +227,25 @@ static void print_help (void)
" name=<client name>\n"
" Client name to pass to JACK\n"
" estimate\n"
- " Estimates the amount of data in buffers (experimental)\n");
+ " Estimates the amount of data in buffers (experimental)\n"
+ " autostart\n"
+ " Automatically start JACK server if necessary\n"
+ );
}
static int init(int rate, int channels, int format, int flags) {
const char **matching_ports = NULL;
char *port_name = NULL;
char *client_name = NULL;
+ int autostart = 0;
opt_t subopts[] = {
{"port", OPT_ARG_MSTRZ, &port_name, NULL},
{"name", OPT_ARG_MSTRZ, &client_name, NULL},
{"estimate", OPT_ARG_BOOL, &estimate, NULL},
+ {"autostart", OPT_ARG_BOOL, &autostart, NULL},
{NULL}
};
+ jack_options_t open_options = JackUseExactName;
int port_flags = JackPortIsInput;
int i;
estimate = 1;
@@ -255,7 +261,9 @@ static int init(int rate, int channels, int format, int flags) {
client_name = malloc(40);
sprintf(client_name, "MPlayer [%d]", getpid());
}
- client = jack_client_new(client_name);
+ if (!autostart)
+ open_options |= JackNoStartServer;
+ client = jack_client_open(client_name, open_options, NULL);
if (!client) {
mp_msg(MSGT_AO, MSGL_FATAL, "[JACK] cannot open server\n");
goto err_out;