As I vaguely remember, original decoder did not perform any clipping and
didn't care if the samples just wrapped around.
This fixes bug 265 too.
---
libavcodec/smacker.c | 8 ++++----
1 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/libavcodec/smacker.c b/libavcodec/smacker.c
index c7889af..9e1cf55 100644
--- a/libavcodec/smacker.c
+++ b/libavcodec/smacker.c
@@ -676,7 +676,7 @@ static int smka_decode_frame(AVCodecContext *avctx, void
*data,
res = 0;
val |= h[3].values[res] << 8;
pred[1] += sign_extend(val, 16);
- *samples++ = av_clip_int16(pred[1]);
+ *samples++ = pred[1];
} else {
if(vlc[0].table)
res = get_vlc2(&gb, vlc[0].table, SMKTREE_BITS, 3);
@@ -689,7 +689,7 @@ static int smka_decode_frame(AVCodecContext *avctx, void
*data,
res = 0;
val |= h[1].values[res] << 8;
pred[0] += sign_extend(val, 16);
- *samples++ = av_clip_int16(pred[0]);
+ *samples++ = pred[0];
}
}
} else { //8-bit data
@@ -704,14 +704,14 @@ static int smka_decode_frame(AVCodecContext *avctx, void
*data,
else
res = 0;
pred[1] += sign_extend(h[1].values[res], 8);
- *samples8++ = av_clip_uint8(pred[1]);
+ *samples8++ = pred[1];
} else {
if(vlc[0].table)
res = get_vlc2(&gb, vlc[0].table, SMKTREE_BITS, 3);
else
res = 0;
pred[0] += sign_extend(h[0].values[res], 8);
- *samples8++ = av_clip_uint8(pred[0]);
+ *samples8++ = pred[0];
}
}
}
--
1.7.0.4
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel