int16_t *data, int *data_size,
void *data, int *data_size,
static int sonic_decode_frame(AVCodecContext *avctx,			    int16_t *data, int *data_size,			    uint8_t *buf, int buf_size){    SonicContext *s = avctx->priv_data;    GetBitContext gb;    int i, quant, ch, j;    short *samples = data;    if (buf_size == 0) return 0;//    av_log(NULL, AV_LOG_INFO, "buf_size: %d\n", buf_size);        init_get_bits(&gb, buf, buf_size*8);        intlist_read(&gb, s->predictor_k, s->num_taps, 0);    // dequantize    for (i = 0; i < s->num_taps; i++)	s->predictor_k[i] *= s->tap_quant[i];    if (s->lossless)	quant = 1;    else	quant = get_ue_golomb(&gb) * SAMPLE_FACTOR;//    av_log(NULL, AV_LOG_INFO, "quant: %d\n", quant);    for (ch = 0; ch < s->channels; ch++)    {	int x = ch;	predictor_init_state(s->predictor_k, s->predictor_state[ch], s->num_taps);		intlist_read(&gb, s->coded_samples[ch], s->block_align, 1);	for (i = 0; i < s->block_align; i++)	{	    for (j = 0; j < s->downsampling - 1; j++)	    {		s->int_samples[x] = predictor_calc_error(s->predictor_k, s->predictor_state[ch], s->num_taps, 0);		x += s->channels;	    }	    	    s->int_samples[x] = predictor_calc_error(s->predictor_k, s->predictor_state[ch], s->num_taps, s->coded_samples[ch][i] * quant);	    x += s->channels;	}	for (i = 0; i < s->num_taps; i++)	    s->predictor_state[ch][i] = s->int_samples[s->frame_size - s->channels + ch - i*s->channels];    }        switch(s->decorrelation)    {	case MID_SIDE:	    for (i = 0; i < s->frame_size; i += s->channels)	    {		s->int_samples[i+1] += shift(s->int_samples[i], 1);		s->int_samples[i] -= s->int_samples[i+1];	    }	    break;	case LEFT_SIDE:	    for (i = 0; i < s->frame_size; i += s->channels)		s->int_samples[i+1] += s->int_samples[i];	    break;	case RIGHT_SIDE:	    for (i = 0; i < s->frame_size; i += s->channels)		s->int_samples[i] += s->int_samples[i+1];	    break;    }    if (!s->lossless)	for (i = 0; i < s->frame_size; i++)	    s->int_samples[i] = shift(s->int_samples[i], SAMPLE_SHIFT);    // internal -> short    for (i = 0; i < s->frame_size; i++)    {	if (s->int_samples[i] > 32767)	    samples[i] = 32767;	else if (s->int_samples[i] < -32768)	    samples[i] = -32768;	else	    samples[i] = s->int_samples[i];    }    align_get_bits(&gb);    *data_size = s->frame_size * 2;    return (get_bits_count(&gb)+7)/8;}