decoder: pass the correct buffer length to pcm_convert()
When a global audio format is configured (setting "audio_output_format"), decoder_data() overwrote the "length" parameter with the size of the output buffer (result of pcm_convert_size()). Declare a separate variable for the output buffer length.
This commit is contained in:
parent
33b5015469
commit
362ca300d6
@ -232,13 +232,14 @@ decoder_data(struct decoder *decoder,
|
|||||||
if (audio_format_equals(&dc.in_audio_format, &dc.out_audio_format)) {
|
if (audio_format_equals(&dc.in_audio_format, &dc.out_audio_format)) {
|
||||||
data = _data;
|
data = _data;
|
||||||
} else {
|
} else {
|
||||||
length = pcm_convert_size(&dc.in_audio_format, length,
|
size_t out_length =
|
||||||
&dc.out_audio_format);
|
pcm_convert_size(&dc.in_audio_format, length,
|
||||||
if (length > conv_buffer_size) {
|
&dc.out_audio_format);
|
||||||
|
if (out_length > conv_buffer_size) {
|
||||||
if (conv_buffer != NULL)
|
if (conv_buffer != NULL)
|
||||||
free(conv_buffer);
|
free(conv_buffer);
|
||||||
conv_buffer = xmalloc(length);
|
conv_buffer = xmalloc(out_length);
|
||||||
conv_buffer_size = length;
|
conv_buffer_size = out_length;
|
||||||
}
|
}
|
||||||
|
|
||||||
data = conv_buffer;
|
data = conv_buffer;
|
||||||
|
Loading…
Reference in New Issue
Block a user