mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
lavc/qtrle: Do not use aligned writes for 24bit frames.
pixel_ptr is 3 and leads to aligned access on odd memory addresses. Fixes crashes on systems that do not allow unaligned access like sparc32.
This commit is contained in:
parent
85649b6523
commit
dbecf03f69
@ -325,7 +325,7 @@ static void qtrle_decode_24bpp(QtrleContext *s, int row_ptr, int lines_to_change
|
||||
CHECK_PIXEL_PTR(rle_code * 3);
|
||||
|
||||
while (rle_code--) {
|
||||
AV_WN16A(rgb + pixel_ptr, rg);
|
||||
AV_WN16(rgb + pixel_ptr, rg);
|
||||
rgb[pixel_ptr + 2] = b;
|
||||
pixel_ptr += 3;
|
||||
}
|
||||
@ -335,13 +335,13 @@ static void qtrle_decode_24bpp(QtrleContext *s, int row_ptr, int lines_to_change
|
||||
rle_code_half = rle_code / 2;
|
||||
|
||||
while (rle_code_half--) { /* copy 2 raw rgb value at the same time */
|
||||
AV_WN32A(rgb + pixel_ptr, bytestream2_get_ne32(&s->g)); /* rgbr */
|
||||
AV_WN16A(rgb + pixel_ptr + 4, bytestream2_get_ne16(&s->g)); /* rgbr */
|
||||
AV_WN32(rgb + pixel_ptr, bytestream2_get_ne32(&s->g)); /* rgbr */
|
||||
AV_WN16(rgb + pixel_ptr + 4, bytestream2_get_ne16(&s->g)); /* rgbr */
|
||||
pixel_ptr += 6;
|
||||
}
|
||||
|
||||
if (rle_code % 2 != 0){ /* not even raw value */
|
||||
AV_WN16A(rgb + pixel_ptr, bytestream2_get_ne16(&s->g));
|
||||
AV_WN16(rgb + pixel_ptr, bytestream2_get_ne16(&s->g));
|
||||
rgb[pixel_ptr + 2] = bytestream2_get_byte(&s->g);
|
||||
pixel_ptr += 3;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user