buffer~ b_outputbytes

Thijs Koerselman's icon

Hi list,

I'm wrote a function to resize a buffer, but I'm not sure what the
b_outputbytes member is for, and therefor don't know wether I should care
about it or not. It is set to 2 by default I noticed. Since b_samples is a
float* I wonder why this is not 4, and what "output" it is referring to. I
guess it has to do with b_outputfmt... but what's that?

Below is my code. It seems to work fine btw, in case someone's interested.

I also tried to use the sysmem api but that didn't seem to be compatible. Is
the buffer relying on legacy code for its memory allocation, or is there a
good reason why its not using sysmem_* ?

Cheers,
Thijs

int mutResizeBuffer(t_buffer *b, long nFrames, long nChans)
{
if(!b->b_valid)
return 1;

long saveinuse = b->b_inuse;
b->b_inuse = true;

long newSize = nFrames * nChans;

t_resizebytes((char *)b->b_samples, b->b_size * sizeof(float),
newSize * sizeof(float));

// alternative for resizebytes
// t_freebytes((char *)b->b_samples, b->b_size * sizeof(float));
// b->b_samples = (float *)t_getbytes(newSize * sizeof(float));

// update buffer attributes
b->b_size = newSize; // size in samples
b->b_nchans = nChans;
b->b_frames = nFrames;
//b->b_outputbytes = sizeof(float); // for if we weren't already dealing
with floats?

b->b_inuse = saveinuse;

return 0;
}