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)