/*
* call-seq:
* decode_headers_for(buffer)
*
* Decode the mp3 headers for +buffer+.
*/
static VALUE decode_headers_for(VALUE self, VALUE rb_buffer)
{
int enc_delay;
int enc_padding;
mp3data_struct * mp3data;
unsigned char * buf = (unsigned char *)StringValuePtr(rb_buffer);
int len = NUM2INT(rb_funcall(rb_buffer, rb_intern("length"), 0));
short int pcm_l[1152], pcm_r[1152];
VALUE rb_mp3data = rb_funcall(self, rb_intern("mp3data"), 0);
Data_Get_Struct(rb_mp3data, mp3data_struct, mp3data);
int ret = lame_decode1_headersB(buf,
len,
pcm_l,
pcm_r,
mp3data,
&enc_delay,
&enc_padding
);
if(ret == -1)
rb_raise(rb_eRuntimeError, "Decode headers failed.\n");
return rb_mp3data;
}