summaryrefslogtreecommitdiffstats
path: root/libmpcodecs
diff options
context:
space:
mode:
authorrtognimp <rtognimp@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-07-21 19:04:12 +0000
committerrtognimp <rtognimp@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-07-21 19:04:12 +0000
commit5f26ad53e45d49f3bad18875ce7844981d80b9e8 (patch)
tree650232480b17e11eaa9db24c027152eae34f99b0 /libmpcodecs
parenta50a1eab17c2f73ff1806b217facd5b620be073e (diff)
downloadmpv-5f26ad53e45d49f3bad18875ce7844981d80b9e8.tar.bz2
mpv-5f26ad53e45d49f3bad18875ce7844981d80b9e8.tar.xz
Fix M$RLE 4bit. Patch by Michael Guennewig <michaelguennewig(at)gmx(dot)de>
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@10452 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs')
-rw-r--r--libmpcodecs/vd_msrle.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/libmpcodecs/vd_msrle.c b/libmpcodecs/vd_msrle.c
index 9d97f5c354..d808679bc9 100644
--- a/libmpcodecs/vd_msrle.c
+++ b/libmpcodecs/vd_msrle.c
@@ -137,10 +137,9 @@ void decode_msrle4(
else
{
// copy pixels from encoded stream
- rle_code = stream_byte;
- rle_code /= 2;
+ rle_code = ((stream_byte + 1) & (~1)) / 2;
extra_byte = rle_code & 0x01;
- if ((row_ptr + pixel_ptr + rle_code * bytes_per_pixel > frame_size) ||
+ if ((row_ptr + pixel_ptr + stream_byte * bytes_per_pixel > frame_size) ||
(row_ptr < 0))
{
mp_msg(MSGT_DECVIDEO, MSGL_WARN,
@@ -170,6 +169,8 @@ void decode_msrle4(
}
pixel_ptr += bytes_per_pixel;
+ if (i + 1 == rle_code && (stream_byte & 1) != 0)
+ break;
if (pixel_ptr >= row_dec)
break;
if (bytes_per_pixel == 2)