Hi Vinod,
Thanks a lot for having a look at this. Please check my comments inline:
<snip>
size = config.fragment_size;
buffer = malloc(size * config.fragments);
size = config.fragments * config.fragment_size;
buffer = malloc(size);
net result of this change is no change. Leaving alone the variable names from this discussion, we allocate memory for size of config.fragments * config.fragment_size
Yes, you are right on this. There is no change here. But notice that we change the value of size to config.fragments * config.fragment_size;
Now, please take a look at the inner loop at:
https://github.com/alsa-project/tinycompress/blob/master/src/utils/cplay.c#L...
num_read = fread(buffer, 1, size, file);
So, now instead of reading config.fragment_size we read config.fragments * config.fragment_size thus we fully utilize the buffer.
I'm pretty sure this is the correct fix. See also crecord fix from Charles:
http://git.alsa-project.org/?p=tinycompress.git;a=commit;h=e8e36567438c 16a5121943205a0cd8c63924d0d8
thanks, daniel.