From 18f5bc2535369081ec1a1abebba60814fb00a81a Mon Sep 17 00:00:00 2001 From: Riza Sulistyo Date: Tue, 29 May 2018 09:02:51 +0000 Subject: [PATCH] Fix #2116: iLBC using memcpy instead of memmove for overlapping memory. git-svn-id: https://svn.pjsip.org/repos/pjproject/trunk@5798 74dad513-b988-da41-8d7b-12977e46ad98 --- third_party/build/ilbc/notes.txt | 5 +++++ third_party/ilbc/iLBC_decode.c | 4 ++-- third_party/ilbc/iLBC_encode.c | 4 ++-- 3 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 third_party/build/ilbc/notes.txt diff --git a/third_party/build/ilbc/notes.txt b/third_party/build/ilbc/notes.txt new file mode 100644 index 000000000..bcea32031 --- /dev/null +++ b/third_party/build/ilbc/notes.txt @@ -0,0 +1,5 @@ +Notes: +* Modify iLBC_decode.c and iLBC_encode.c + - iLBC using memcpy instead of memmove for overlapping memory. This will + cause some weird sound if the call lasted longer than ~30s. To fix this, + some call to memcpy is changed to memmove. Have a look at #2116. diff --git a/third_party/ilbc/iLBC_decode.c b/third_party/ilbc/iLBC_decode.c index 17395d3a9..ea7d7ee21 100644 --- a/third_party/ilbc/iLBC_decode.c +++ b/third_party/ilbc/iLBC_decode.c @@ -251,7 +251,7 @@ /* update memory */ - memcpy(mem, mem+SUBL, (CB_MEML-SUBL)*sizeof(float)); + memmove(mem, mem+SUBL, (CB_MEML-SUBL)*sizeof(float)); memcpy(mem+CB_MEML-SUBL, @@ -299,7 +299,7 @@ /* update memory */ - memcpy(mem, mem+SUBL, (CB_MEML-SUBL)*sizeof(float)); + memmove(mem, mem+SUBL, (CB_MEML-SUBL)*sizeof(float)); memcpy(mem+CB_MEML-SUBL, &reverseDecresidual[subframe*SUBL], SUBL*sizeof(float)); diff --git a/third_party/ilbc/iLBC_encode.c b/third_party/ilbc/iLBC_encode.c index 438545883..4e19dc19e 100644 --- a/third_party/ilbc/iLBC_encode.c +++ b/third_party/ilbc/iLBC_encode.c @@ -308,7 +308,7 @@ /* update memory */ - memcpy(mem, mem+SUBL, (CB_MEML-SUBL)*sizeof(float)); + memmove(mem, mem+SUBL, (CB_MEML-SUBL)*sizeof(float)); memcpy(mem+CB_MEML-SUBL, @@ -386,7 +386,7 @@ /* update memory */ - memcpy(mem, mem+SUBL, (CB_MEML-SUBL)*sizeof(float)); + memmove(mem, mem+SUBL, (CB_MEML-SUBL)*sizeof(float)); memcpy(mem+CB_MEML-SUBL, &reverseDecresidual[subframe*SUBL], SUBL*sizeof(float));