summaryrefslogtreecommitdiff
path: root/libavcodec/dsputil.c
diff options
context:
space:
mode:
authorAlexander Strange <astrange@ithinksw.com>2010-01-14 01:32:49 +0000
committerAlexander Strange <astrange@ithinksw.com>2010-01-14 01:32:49 +0000
commitf267d3ac75942bd0fabb38361e00192b8254ba76 (patch)
treedca4fac9fd11b778c1882d7139d7f65b18f92d3f /libavcodec/dsputil.c
parentff5ab5c8c9b87908639861a6d29d6cf330c4ed56 (diff)
Implement alpha channel decoding for BGR HuffYUV.
Since BGR24 is decoded as BGR32, fill its alpha channel with 255 using the appropriate predictors. Originally committed as revision 21211 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/dsputil.c')
-rw-r--r--libavcodec/dsputil.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/libavcodec/dsputil.c b/libavcodec/dsputil.c
index a2a313abf6..41a63778bb 100644
--- a/libavcodec/dsputil.c
+++ b/libavcodec/dsputil.c
@@ -3632,35 +3632,42 @@ static int add_hfyu_left_prediction_c(uint8_t *dst, const uint8_t *src, int w, i
#define B 3
#define G 2
#define R 1
+#define A 0
#else
#define B 0
#define G 1
#define R 2
+#define A 3
#endif
-static void add_hfyu_left_prediction_bgr32_c(uint8_t *dst, const uint8_t *src, int w, int *red, int *green, int *blue){
+static void add_hfyu_left_prediction_bgr32_c(uint8_t *dst, const uint8_t *src, int w, int *red, int *green, int *blue, int *alpha){
int i;
- int r,g,b;
+ int r,g,b,a;
r= *red;
g= *green;
b= *blue;
+ a= *alpha;
for(i=0; i<w; i++){
b+= src[4*i+B];
g+= src[4*i+G];
r+= src[4*i+R];
+ a+= src[4*i+A];
dst[4*i+B]= b;
dst[4*i+G]= g;
dst[4*i+R]= r;
+ dst[4*i+A]= a;
}
*red= r;
*green= g;
*blue= b;
+ *alpha= a;
}
#undef B
#undef G
#undef R
+#undef A
#define BUTTERFLY2(o1,o2,i1,i2) \
o1= (i1)+(i2);\