Browse Source

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
tags/0.120.1
paul 16 years ago
parent
commit
ee89259ef7
3 changed files with 16 additions and 17 deletions
  1. +3
    -0
      jack/port.h
  2. +1
    -8
      jackd/engine.c
  3. +12
    -9
      libjack/port.c

+ 3
- 0
jack/port.h View File

@@ -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__ */


+ 1
- 8
jackd/engine.c View File

@@ -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;


+ 12
- 9
libjack/port.c View File

@@ -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)



Loading…
Cancel
Save