Commit b1d12509 authored by Michael Niedermayer's avatar Michael Niedermayer

avcodec/ffv1: Fix rgb plane ordering in experimental planar RGB

Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
parent 87da1188
...@@ -150,7 +150,11 @@ static void RENAME(decode_rgb_frame)(FFV1Context *s, uint8_t *src[3], int w, int ...@@ -150,7 +150,11 @@ static void RENAME(decode_rgb_frame)(FFV1Context *s, uint8_t *src[3], int w, int
if (lbd) if (lbd)
*((uint32_t*)(src[0] + x*4 + stride[0]*y)) = b + (g<<8) + (r<<16) + (a<<24); *((uint32_t*)(src[0] + x*4 + stride[0]*y)) = b + (g<<8) + (r<<16) + (a<<24);
else { else if (sizeof(TYPE) == 4) {
*((uint16_t*)(src[0] + x*2 + stride[0]*y)) = g;
*((uint16_t*)(src[1] + x*2 + stride[1]*y)) = b;
*((uint16_t*)(src[2] + x*2 + stride[2]*y)) = r;
} else {
*((uint16_t*)(src[0] + x*2 + stride[0]*y)) = b; *((uint16_t*)(src[0] + x*2 + stride[0]*y)) = b;
*((uint16_t*)(src[1] + x*2 + stride[1]*y)) = g; *((uint16_t*)(src[1] + x*2 + stride[1]*y)) = g;
*((uint16_t*)(src[2] + x*2 + stride[2]*y)) = r; *((uint16_t*)(src[2] + x*2 + stride[2]*y)) = r;
......
...@@ -150,6 +150,10 @@ static int RENAME(encode_rgb_frame)(FFV1Context *s, const uint8_t *src[3], ...@@ -150,6 +150,10 @@ static int RENAME(encode_rgb_frame)(FFV1Context *s, const uint8_t *src[3],
g = (v >> 8) & 0xFF; g = (v >> 8) & 0xFF;
r = (v >> 16) & 0xFF; r = (v >> 16) & 0xFF;
a = v >> 24; a = v >> 24;
} else if (sizeof(TYPE) == 4) {
g = *((const uint16_t *)(src[0] + x*2 + stride[0]*y));
b = *((const uint16_t *)(src[1] + x*2 + stride[1]*y));
r = *((const uint16_t *)(src[2] + x*2 + stride[2]*y));
} else { } else {
b = *((const uint16_t *)(src[0] + x*2 + stride[0]*y)); b = *((const uint16_t *)(src[0] + x*2 + stride[0]*y));
g = *((const uint16_t *)(src[1] + x*2 + stride[1]*y)); g = *((const uint16_t *)(src[1] + x*2 + stride[1]*y));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment