--- jack_test3.2/jack_test3_client.cpp Thu Dec 9 10:26:12 2004 +++ jack_test/jack_test3_client.cpp Sat Jan 15 20:48:20 2005 @@ -13,20 +13,25 @@ unsigned int seconds_to_run = 60; unsigned int num_of_ports = 4; +/* mix all the input ports to each output port */ int process(jack_nframes_t frames, void *arg) { // std::cout << "process callback" << std::endl; jack_default_audio_sample_t *ibuf; jack_default_audio_sample_t *obuf; for (int i = 0; i < num_of_ports; i++) { - obuf = (jack_default_audio_sample_t*) jack_port_get_buffer(oports[i], frames); + obuf = (jack_default_audio_sample_t*) + jack_port_get_buffer(oports[i], frames); for (int j = 0; j < num_of_ports; j++) { - ibuf = (jack_default_audio_sample_t*) jack_port_get_buffer(iports[j], frames); - for (jack_nframes_t frame = 0; frame < frames; frame++) { + ibuf = (jack_default_audio_sample_t*) + jack_port_get_buffer(iports[j], frames); + for (jack_nframes_t frame = 0; + frame < frames; frame++) { if (j == 0) obuf[frame] = 0.0; if (ibuf[frame] < -1E-6 || ibuf[frame] > +1E-6) - obuf[frame] += ibuf[frame] / (float) num_of_ports; + obuf[frame] += ibuf[frame] + / (float) num_of_ports; } } } @@ -68,10 +73,23 @@ for (int i = 0; i < num_of_ports; i++) { std::stringstream iport_name; iport_name << "in_" << i; - iports[i] = jack_port_register(client, iport_name.str().c_str(), JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput|JackPortIsTerminal, 0); + iports[i] = + jack_port_register(client, + iport_name.str().c_str(), + JACK_DEFAULT_AUDIO_TYPE, + JackPortIsInput|JackPortIsTerminal, + 0); std::stringstream oport_name; oport_name << "out_" << i; - oports[i] = jack_port_register(client, oport_name.str().c_str(), JACK_DEFAULT_AUDIO_TYPE, JackPortIsTerminal|JackPortIsOutput, 0); + oports[i] = jack_port_register(client, + oport_name.str().c_str(), + JACK_DEFAULT_AUDIO_TYPE, + JackPortIsTerminal|JackPortIsOutput, + 0); + if ((iports[i] == NULL) || (oports[i] == NULL)) { + std::cout << "port registration failed" << std::endl; + goto exit; + } } std::cout << "set_process_callback" << std::endl; jack_set_process_callback(client, process, 0); @@ -85,6 +103,8 @@ sleep(seconds_to_run); jack_deactivate(client); + +exit: jack_client_close(client); delete [] iports; --- jack_test3.2/jack_test3_nmeter.c Sat Nov 27 09:08:01 2004 +++ jack_test/jack_test3_nmeter.c Thu Dec 30 07:50:38 2004 @@ -21,7 +21,9 @@ //============== #define NL "\n" typedef unsigned long long ullong; +#ifndef __USE_MISC typedef unsigned long ulong; +#endif typedef ulong sample_t; --- jack_test3.2/jack_test3_run.sh Fri Dec 10 06:21:21 2004 +++ jack_test/jack_test3_run.sh Sat Jan 15 22:23:06 2005 @@ -6,12 +6,14 @@ CLIENTS=$2 PORTS=$3 PERIOD=$4 +PLYBK_PORTS=$5 # Parameter defaults. [ -z "${SECS}" ] && SECS=300 [ -z "${CLIENTS}" ] && CLIENTS=20 [ -z "${PORTS}" ] && PORTS=4 [ -z "${PERIOD}" ] && PERIOD=64 +[ -z "${PLYBK_PORTS}" ] && PLYBK_PORTS=32 # Local tools must be on same directory... BASEDIR=`dirname $0` @@ -24,13 +26,13 @@ NMETER_ARGS="t c i x b m" # jackd configuration. -JACKD="/usr/bin/jackd" +JACKD="jackd" JACKD_DRIVER="alsa" JACKD_DEVICE="hw:0" JACKD_PRIO=60 JACKD_RATE=44100 -JACKD_PORTS=$(((${CLIENTS} + 1) * ${PORTS} * 2)) -JACKD_ARGS="-v -R -P${JACKD_PRIO} -p${JACKD_PORTS} -d${JACKD_DRIVER} -d${JACKD_DEVICE} -r${JACKD_RATE} -p${PERIOD} -n2 -S -P" +JACKD_PORTS=$((${CLIENTS} * ${PORTS} * 2 + ${PLYBK_PORTS})) +JACKD_ARGS="-Rv -p${JACKD_PORTS} -d${JACKD_DRIVER} -d${JACKD_DEVICE} -r${JACKD_RATE} -p${PERIOD} -n2 -P" # client test configuration. CLIENT="${BASEDIR}/jack_test3_client" @@ -85,6 +87,7 @@ echo "Number of clients (CLIENTS) = ${CLIENTS}" >> ${LOG} 2>&1 echo "Ports per client (PORTS) = ${PORTS}" >> ${LOG} 2>&1 echo "Frames per buffer (PERIOD) = ${PERIOD}" >> ${LOG} 2>&1 +echo "Playback ports (PLYBK_PORTS) = ${PLYBK_PORTS}" >> ${LOG} 2>&1 echo >> ${LOG} 2>&1 exec_log "uname -a" @@ -102,7 +105,7 @@ ilist_log # -# Lauch nmeter in the background... +# Launch nmeter in the background... # echo -n "Launching `basename ${NMETER}`..." (${NMETER} ${NMETER_ARGS} >> ${LOG} 2>&1) & @@ -110,7 +113,7 @@ echo "done." sleep 1 -# Lauch the test client suite... +# Launch the test client suite... SLEEP=6 echo -n "Launching ${CLIENTS} ${CLIENT}(s) instance(s)..." for NUM in `seq 1 ${CLIENTS}`; do @@ -129,7 +132,7 @@ (sleep ${SLEEP}; killall `basename ${JACKD}`) & # -# Lauch jackd and wait for it... +# Launch jackd and wait for it... # echo -n "Running `basename ${JACKD}`..." exec_log ${JACKD} ${JACKD_ARGS} @@ -149,7 +152,7 @@ sleep 1 sync -# Summary log analynis... +# Summary log analysis... cat ${LOG} | awk -f ${BASEDIR}/jack_test3_summary.awk | tee -a ${LOG} # Finally, plot log output... --- jack_test3.2/Makefile Thu Nov 25 05:28:47 2004 +++ jack_test/Makefile Sat Jan 15 20:50:04 2005 @@ -1,10 +1,10 @@ all: jack_test3_nmeter jack_test3_client jack_test3_nmeter: jack_test3_nmeter.c - gcc -o jack_test3_nmeter jack_test3_nmeter.c + $(CC) -g -o jack_test3_nmeter jack_test3_nmeter.c jack_test3_client: jack_test3_client.cpp - g++ -o jack_test3_client jack_test3_client.cpp -ljack + $(CXX) -g -o jack_test3_client jack_test3_client.cpp -ljack clean: rm -vf jack_test3_nmeter jack_test3_client