From ee89259ef7d55cd903c5e5e1b0959acbdb603f5b Mon Sep 17 00:00:00 2001 From: paul Date: Thu, 28 Jan 2010 15:49:08 +0000 Subject: [PATCH] define jack_port_type_get_buffer_size() to abstract computation of buffer size for a given port type and frame count git-svn-id: svn+ssh://jackaudio.org/trunk/jack@3889 0c269be4-1314-0410-8aa9-9f06e86f4224 --- jack/port.h | 3 +++ jackd/engine.c | 9 +-------- libjack/port.c | 21 ++++++++++++--------- 3 files changed, 16 insertions(+), 17 deletions(-) diff --git a/jack/port.h b/jack/port.h index 9ee069d..796a19a 100644 --- a/jack/port.h +++ b/jack/port.h @@ -179,5 +179,8 @@ struct _jack_port { #define jack_output_port_buffer(p) \ ((void *) (*(p)->client_segment_base + (p)->shared->offset)) +/* not for use by JACK applications */ +size_t jack_port_type_buffer_size (jack_port_type_info_t* port_type_info, jack_nframes_t nframes); + #endif /* __jack_port_h__ */ diff --git a/jackd/engine.c b/jackd/engine.c index 4876653..677d993 100644 --- a/jackd/engine.c +++ b/jackd/engine.c @@ -438,14 +438,7 @@ jack_resize_port_segment (jack_engine_t *engine, jack_port_type_info_t* port_type = &engine->control->port_types[ptid]; jack_shm_info_t* shm_info = &engine->port_segment[ptid]; - if (port_type->buffer_scale_factor < 0) { - one_buffer = port_type->buffer_size; - } else { - one_buffer = sizeof (jack_default_audio_sample_t) - * port_type->buffer_scale_factor - * engine->control->buffer_size; - } - + one_buffer = jack_port_type_buffer_size (port_type, engine->control->buffer_size); VERBOSE (engine, "resizing port buffer segment for type %d, one buffer = %u bytes", ptid, one_buffer); size = nports * one_buffer; diff --git a/libjack/port.c b/libjack/port.c index 7865c91..de8304e 100644 --- a/libjack/port.c +++ b/libjack/port.c @@ -559,15 +559,7 @@ jack_port_get_buffer (jack_port_t *port, jack_nframes_t nframes) connection process. */ if (port->mix_buffer == NULL) { - size_t buffer_size; - if( port->type_info->buffer_scale_factor < 0 ) { - buffer_size = port->type_info->buffer_size; - } else { - buffer_size = - port->type_info->buffer_scale_factor - * sizeof (jack_default_audio_sample_t) - * nframes; - } + size_t buffer_size = jack_port_type_buffer_size (port->type_info, nframes); port->mix_buffer = jack_pool_alloc (buffer_size); port->fptr.buffer_init (port->mix_buffer, buffer_size, nframes); } @@ -575,6 +567,17 @@ jack_port_get_buffer (jack_port_t *port, jack_nframes_t nframes) return (void *) port->mix_buffer; } +size_t +jack_port_type_buffer_size (jack_port_type_info_t* port_type_info, jack_nframes_t nframes) +{ + if( port_type_info->buffer_scale_factor < 0 ) { + return port_type_info->buffer_size; + } + + return port_type_info->buffer_scale_factor + * sizeof (jack_default_audio_sample_t) + * nframes; +} int jack_port_tie (jack_port_t *src, jack_port_t *dst)