8
#include <jack/transport.h>
10
jack_client_t *client;
16
jack_position_t current;
17
jack_transport_state_t transport_state;
18
jack_nframes_t frame_time;
20
transport_state = jack_transport_query (client, ¤t);
21
frame_time = jack_frame_time (client);
23
printf ("frame: %7" PRIu32 " @ %" PRIu32 "\t", current.frame, frame_time);
25
switch (transport_state) {
26
case JackTransportStopped:
27
printf ("state: Stopped");
29
case JackTransportRolling:
30
printf ("state: Rolling");
32
case JackTransportStarting:
33
printf ("state: Starting");
36
printf ("state: [unknown]");
39
if (current.valid & JackPositionBBT)
40
printf ("\tBBT: %3" PRIi32 "|%" PRIi32 "|%04"
41
PRIi32, current.bar, current.beat, current.tick);
43
if (current.valid & JackPositionTimecode)
44
printf ("\tTC: (%.6f, %.6f)",
45
current.frame_time, current.next_time);
47
if (current.valid & JackBBTFrameOffset)
48
printf ("\tBBT offset: (%" PRIi32 ")",
51
if (current.valid & JackAudioVideoRatio)
52
printf ("\taudio/video: (%f)",
53
current.audio_frames_per_video_frame);
55
if (current.valid & JackVideoFrameOffset) {
56
if (current.video_offset) {
57
printf ("\t video@: (%" PRIi32 ")", current.video_offset);
59
printf ("\t no video");
67
jack_shutdown (void *arg)
73
signal_handler (int sig)
75
jack_client_close (client);
76
fprintf (stderr, "signal received, exiting ...\n");
81
main (int argc, char *argv[])
84
/* try to become a client of the JACK server */
86
if ((client = jack_client_new ("showtime")) == 0) {
87
fprintf (stderr, "jack server not running?\n");
91
signal (SIGQUIT, signal_handler);
92
signal (SIGTERM, signal_handler);
93
signal (SIGHUP, signal_handler);
94
signal (SIGINT, signal_handler);
96
/* tell the JACK server to call `jack_shutdown()' if
97
it ever shuts down, either entirely, or if it
98
just decides to stop calling us.
101
jack_on_shutdown (client, jack_shutdown, 0);
103
/* tell the JACK server that we are ready to roll */
105
if (jack_activate (client)) {
106
fprintf (stderr, "cannot activate client");
115
jack_client_close (client);