truespeech: decode directly to output buffer instead of a temp buffer
This commit is contained in:
parent
3e7a176759
commit
5e5ce70f19
@ -346,7 +346,6 @@ static int truespeech_decode_frame(AVCodecContext *avctx,
|
|||||||
int i, j;
|
int i, j;
|
||||||
short *samples = data;
|
short *samples = data;
|
||||||
int consumed = 0;
|
int consumed = 0;
|
||||||
int16_t out_buf[240];
|
|
||||||
int iterations, out_size;
|
int iterations, out_size;
|
||||||
|
|
||||||
iterations = buf_size / 32;
|
iterations = buf_size / 32;
|
||||||
@ -363,6 +362,8 @@ static int truespeech_decode_frame(AVCodecContext *avctx,
|
|||||||
return AVERROR(EINVAL);
|
return AVERROR(EINVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
memset(samples, 0, out_size);
|
||||||
|
|
||||||
for(j = 0; j < iterations; j++) {
|
for(j = 0; j < iterations; j++) {
|
||||||
truespeech_read_frame(c, buf + consumed);
|
truespeech_read_frame(c, buf + consumed);
|
||||||
consumed += 32;
|
consumed += 32;
|
||||||
@ -370,20 +371,15 @@ static int truespeech_decode_frame(AVCodecContext *avctx,
|
|||||||
truespeech_correlate_filter(c);
|
truespeech_correlate_filter(c);
|
||||||
truespeech_filters_merge(c);
|
truespeech_filters_merge(c);
|
||||||
|
|
||||||
memset(out_buf, 0, 240 * 2);
|
|
||||||
for(i = 0; i < 4; i++) {
|
for(i = 0; i < 4; i++) {
|
||||||
truespeech_apply_twopoint_filter(c, i);
|
truespeech_apply_twopoint_filter(c, i);
|
||||||
truespeech_place_pulses(c, out_buf + i * 60, i);
|
truespeech_place_pulses (c, samples, i);
|
||||||
truespeech_update_filters(c, out_buf + i * 60, i);
|
truespeech_update_filters(c, samples, i);
|
||||||
truespeech_synth(c, out_buf + i * 60, i);
|
truespeech_synth (c, samples, i);
|
||||||
|
samples += 60;
|
||||||
}
|
}
|
||||||
|
|
||||||
truespeech_save_prevvec(c);
|
truespeech_save_prevvec(c);
|
||||||
|
|
||||||
/* finally output decoded frame */
|
|
||||||
for(i = 0; i < 240; i++)
|
|
||||||
*samples++ = out_buf[i];
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
*data_size = out_size;
|
*data_size = out_size;
|
||||||
|
Loading…
Reference in New Issue
Block a user