diff --git a/libavcodec/dsicinav.c b/libavcodec/dsicinav.c
index a6a4ff1c6e1dd3f2ab5755b4c9027c6eee8643bf..cbf7c4a6f821cfa803a674ce4d7c2184633f3748 100644
--- a/libavcodec/dsicinav.c
+++ b/libavcodec/dsicinav.c
@@ -26,6 +26,7 @@
 
 #include "avcodec.h"
 #include "bytestream.h"
+#include "mathops.h"
 
 
 typedef enum CinVideoBitmapIndex {
@@ -339,7 +340,7 @@ static int cinaudio_decode_frame(AVCodecContext *avctx,
     delta = cin->delta;
     if (cin->initial_decode_frame) {
         cin->initial_decode_frame = 0;
-        delta = (int16_t)AV_RL16(buf);
+        delta = sign_extend(AV_RL16(buf), 16);
         buf += 2;
         *samples++ = delta;
     }