[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r4155 - gnuradio/branches/developers/brickle/jack/gr-a
From: |
brickle |
Subject: |
[Commit-gnuradio] r4155 - gnuradio/branches/developers/brickle/jack/gr-audio-jack/src |
Date: |
Tue, 19 Dec 2006 18:35:27 -0700 (MST) |
Author: brickle
Date: 2006-12-19 18:35:26 -0700 (Tue, 19 Dec 2006)
New Revision: 4155
Modified:
gnuradio/branches/developers/brickle/jack/gr-audio-jack/src/audio_jack_mgr.cc
gnuradio/branches/developers/brickle/jack/gr-audio-jack/src/audio_jack_mgr.h
gnuradio/branches/developers/brickle/jack/gr-audio-jack/src/audio_jack_source.cc
gnuradio/branches/developers/brickle/jack/gr-audio-jack/src/audio_jack_source.h
Log:
filled out mgr code, most of source; sink will be parallel
Modified:
gnuradio/branches/developers/brickle/jack/gr-audio-jack/src/audio_jack_mgr.cc
===================================================================
---
gnuradio/branches/developers/brickle/jack/gr-audio-jack/src/audio_jack_mgr.cc
2006-12-20 00:27:23 UTC (rev 4154)
+++
gnuradio/branches/developers/brickle/jack/gr-audio-jack/src/audio_jack_mgr.cc
2006-12-20 01:35:26 UTC (rev 4155)
@@ -76,13 +76,13 @@
for (int i = 0; i < MAX_JACK_PORTS; i++)
if (out_info[i].used)
- out_info[i].semaphore.post();
+ out_info[i].semaphore->post();
// trip sources
for (int i = 0; i < MAX_JACK_PORTS; i++)
if (in_info[i].used)
- in_info[i].semaphore.post();
+ in_info[i].semaphore->post();
}
// minor callbacks
@@ -101,6 +101,18 @@
//------------------------------------------------------------------------
int
+audio_jack_mgr::audio_jack_mgr_sample_rate()
+{
+ return d_sample_rate;
+}
+
+int
+audio_jack_mgr::audio_jack_mgr_buffer_size()
+{
+ return d_buffer_size;
+}
+
+int
audio_jack_mgr::audio_jack_mgr_register_source(const std::string name,
jack_ringbuffer_t *rb_ptr,
omni_semaphore *sem_ptr)
Modified:
gnuradio/branches/developers/brickle/jack/gr-audio-jack/src/audio_jack_mgr.h
===================================================================
---
gnuradio/branches/developers/brickle/jack/gr-audio-jack/src/audio_jack_mgr.h
2006-12-20 00:27:23 UTC (rev 4154)
+++
gnuradio/branches/developers/brickle/jack/gr-audio-jack/src/audio_jack_mgr.h
2006-12-20 01:35:26 UTC (rev 4155)
@@ -58,13 +58,18 @@
jack_info_t d_jack_input[MAX_JACK_PORTS]; // sources
jack_info_t d_jack_output[MAX_JACK_PORTS]; // sinks
-
audio_jack_mgr (int sample_rate, const std::string name);
public:
~audio_jack_mgr ();
int
+ audio_jack_mgr_sample_rate();
+
+ int
+ audio_jack_mgr_buffer_size();
+
+ int
audio_jack_mgr_register_source(const std::string name,
jack_ringbuffer_t *rb_ptr,
omni_semaphore *sem_ptr);
Modified:
gnuradio/branches/developers/brickle/jack/gr-audio-jack/src/audio_jack_source.cc
===================================================================
---
gnuradio/branches/developers/brickle/jack/gr-audio-jack/src/audio_jack_source.cc
2006-12-20 00:27:23 UTC (rev 4154)
+++
gnuradio/branches/developers/brickle/jack/gr-audio-jack/src/audio_jack_source.cc
2006-12-20 01:35:26 UTC (rev 4155)
@@ -58,80 +58,50 @@
: gr_sync_block ("audio_jack_source",
gr_make_io_signature (0, 0, 0),
gr_make_io_signature (0, 0, 0)),
- d_sampling_rate (sampling_rate),
d_device_name (device_name.empty() ? default_device_name() : device_name),
d_ok_to_block(ok_to_block),
- d_jack_client (0),
- d_ringbuffer (0),
- d_noverruns (0)
+ d_ringbuffer_ready(1, 1)
{
+ d_jack_sample_rate =
+ audio_jack_mgr::singleton()->audio_jack_mgr_sample_rate();
+ d_jack_buffer_size =
+ audio_jack_mgr::singleton()->audio_jack_mgr_buffer_size();
- pthread_cond_init(&d_ringbuffer_ready, NULL);
- pthread_mutex_init(&d_jack_process_lock, NULL);
+ d_ringbuffer =
+ jack_ringbuffer_create(N_BUFFERS * d_jack_buffer_size * sizeof(sample_t));
+ if (d_ringbuffer == NULL)
+ bail("jack_ringbuffer_create failed", 0);
- // try to become a client of the JACK server
- if ((d_jack_client = jack_client_new (d_device_name.c_str ())) == 0) {
- fprintf (stderr, "audio_jack_source[%s]: jack server not running?\n",
- d_device_name.c_str());
- throw std::runtime_error ("audio_jack_source");
- }
+ d_id_from_mgr =
+ audio_jack_mgr::audio_jack_mgr_register_source(name,
+ d_ringbuffer,
+ &d_ringbuffer_ready);
- // tell the JACK server to call `jack_source_process()' whenever
- // there is work to be done.
- jack_set_process_callback (d_jack_client, &jack_source_process, (void*)this);
-
- // tell the JACK server to call `jack_shutdown()' if
- // it ever shuts down, either entirely, or if it
- // just decides to stop calling us.
-
- //jack_on_shutdown (d_jack_client, &jack_shutdown, (void*)this);
-
d_jack_input_port = jack_port_register (d_jack_client, "in",
JACK_DEFAULT_AUDIO_TYPE,
JackPortIsInput, 0);
- d_jack_buffer_size = jack_get_buffer_size (d_jack_client);
-
- set_output_multiple (d_jack_buffer_size);
-
- d_ringbuffer = jack_ringbuffer_create
(N_BUFFERS*d_jack_buffer_size*sizeof(sample_t));
- if (d_ringbuffer == NULL)
- bail ("jack_ringbuffer_create failed", 0);
-
- assert(sizeof(float)==sizeof(sample_t));
- set_output_signature (gr_make_io_signature (1, 1, sizeof (sample_t)));
-
-
- jack_nframes_t sample_rate = jack_get_sample_rate (d_jack_client);
-
- if ((jack_nframes_t)sampling_rate != sample_rate){
- fprintf (stderr, "audio_jack_source[%s]: unable to support sampling rate
%d\n",
- d_device_name.c_str (), sampling_rate);
- fprintf (stderr, " card requested %d instead.\n", sample_rate);
- }
+ set_output_multiple(d_jack_buffer_size);
+ set_output_signature(gr_make_io_signature (1, 1, sizeof (sample_t)));
}
bool
audio_jack_source::check_topology (int ninputs, int noutputs)
{
- // tell the JACK server that we are ready to roll
- if (jack_activate (d_jack_client))
- throw std::runtime_error ("audio_jack_source");
-
return true;
}
-audio_jack_source::~audio_jack_source ()
+audio_jack_source::~audio_jack_source()
{
- jack_client_close (d_jack_client);
+ audio_jack_mgr::audio_jack_mgr_unregister_source(d_id_from_manager);
jack_ringbuffer_free (d_ringbuffer);
}
int
-audio_portaudio_source::work (int noutput_items,
- gr_vector_const_void_star &input_items,
- gr_vector_void_star &output_items)
+audio_portaudio_source::work(int noutput_items,
+ gr_vector_const_void_star &input_items,
+ gr_vector_void_star &output_items)
{
float **out = (float **) &output_items[0];
const unsigned nchan = d_input_parameters.channelCount; // # of channels ==
samples/frame
Modified:
gnuradio/branches/developers/brickle/jack/gr-audio-jack/src/audio_jack_source.h
===================================================================
---
gnuradio/branches/developers/brickle/jack/gr-audio-jack/src/audio_jack_source.h
2006-12-20 00:27:23 UTC (rev 4154)
+++
gnuradio/branches/developers/brickle/jack/gr-audio-jack/src/audio_jack_source.h
2006-12-20 01:35:26 UTC (rev 4155)
@@ -66,18 +66,19 @@
gr_vector_const_void_star
&input_items,
gr_vector_void_star &output_items);
- unsigned int d_sampling_rate;
+ unsigned int d_sample_rate;
std::string d_device_name;
bool d_ok_to_block;
- jack_ringbuffer_t *d_ringbuffer;
jack_nframes_t d_jack_buffer_size;
+ jack_ringbuffer_t *d_ringbuffer;
+
omni_semaphore d_ringbuffer_ready;
// our position in the manager's table of sources/ports
- int d_mgr_id;
+ int d_id_from_mgr;
// random stats
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r4155 - gnuradio/branches/developers/brickle/jack/gr-audio-jack/src,
brickle <=