From 727f2bc652aaa25b3a26549f763b60738a4713f5 Mon Sep 17 00:00:00 2001 From: Armin Novak Date: Wed, 6 Jul 2022 11:52:19 +0200 Subject: [PATCH] Fixed IMA PCM encoder --- libfreerdp/codec/dsp.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/libfreerdp/codec/dsp.c b/libfreerdp/codec/dsp.c index 7d9372ded..51c2bf572 100644 --- a/libfreerdp/codec/dsp.c +++ b/libfreerdp/codec/dsp.c @@ -729,13 +729,11 @@ static BOOL freerdp_dsp_encode_ima_adpcm(FREERDP_DSP_CONTEXT* context, const BYT if (!Stream_EnsureRemainingCapacity(out, size)) return FALSE; - start = Stream_GetPosition(context->buffer); - align = (context->format.nChannels > 1) ? 32 : 4; while (size >= align) { - if ((Stream_GetPosition(context->buffer) - start) % context->format.nBlockAlign == 0) + if (Stream_GetPosition(context->buffer) % context->format.nBlockAlign == 0) { Stream_Write_UINT8(context->buffer, context->adpcm.ima.last_sample[0] & 0xFF); Stream_Write_UINT8(context->buffer, (context->adpcm.ima.last_sample[0] >> 8) & 0xFF); @@ -782,7 +780,7 @@ static BOOL freerdp_dsp_encode_ima_adpcm(FREERDP_DSP_CONTEXT* context, const BYT size -= 4; } - if (Stream_GetPosition(context->buffer) - start == context->adpcm.ima.packet_size) + if (Stream_GetPosition(context->buffer) >= context->adpcm.ima.packet_size) { BYTE* bsrc = Stream_Buffer(context->buffer); Stream_Write(out, bsrc, context->adpcm.ima.packet_size);