summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libswresample/audioconvert.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/libswresample/audioconvert.c b/libswresample/audioconvert.c
index ba47188bb3..7598bba05d 100644
--- a/libswresample/audioconvert.c
+++ b/libswresample/audioconvert.c
@@ -47,9 +47,16 @@ struct AudioConvert {
#define CONV_FUNC(ofmt, otype, ifmt, expr)\
static void CONV_FUNC_NAME(ofmt, ifmt)(uint8_t *po, const uint8_t *pi, int is, int os, uint8_t *end)\
{\
- do{\
+ uint8_t *end2 = end - 3*os;\
+ while(po < end2){\
*(otype*)po = expr; pi += is; po += os;\
- }while(po < end);\
+ *(otype*)po = expr; pi += is; po += os;\
+ *(otype*)po = expr; pi += is; po += os;\
+ *(otype*)po = expr; pi += is; po += os;\
+ }\
+ while(po < end){\
+ *(otype*)po = expr; pi += is; po += os;\
+ }\
}
//FIXME put things below under ifdefs so we do not waste space for cases no codec will need