All pastes #2067900 Raw Edit

Something

public text v1 · immutable
#2067900 ·published 2011-05-24 00:33 UTC
rendered paste body
               :static av_always_inline void yuv2yuvX16inC_template(const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize,
               :                                                    const int16_t *chrFilter, const int16_t **chrSrc, int chrFilterSize,
               :                                                    const int16_t **alpSrc, uint16_t *dest, uint16_t *uDest, uint16_t *vDest, uint16_t *aDest,
               :                                                    int dstW, int chrDstW, int big_endian, int output_bits)
               :{
               :    //FIXME Optimize (just quickly written not optimized..)
               :    int i;
               :    int shift = 11 + 16 - output_bits;
               :
               :#define output_pixel(pos, val) \
               :    if (big_endian) { \
               :        if (output_bits == 16) { \
               :            AV_WB16(pos, av_clip_uint16(val >> shift)); \
               :        } else { \
               :            AV_WB16(pos, av_clip_uintp2(val >> shift, output_bits)); \
               :        } \
               :    } else { \
               :        if (output_bits == 16) { \
               :            AV_WL16(pos, av_clip_uint16(val >> shift)); \
               :        } else { \
               :            AV_WL16(pos, av_clip_uintp2(val >> shift, output_bits)); \
               :        } \
               :    }
 14967  0.1457 :    for (i = 0; i < dstW; i++) {
               :        int val = 1 << (26-output_bits);
               :        int j;
               :
104697  1.0193 :        for (j = 0; j < lumFilterSize; j++)
105317  1.0253 :            val += lumSrc[j][i] * lumFilter[j];
               :
 62673  0.6102 :        output_pixel(&dest[i], val);
               :    }
               :
   127  0.0012 :    if (uDest) {
 16480  0.1604 :        for (i = 0; i < chrDstW; i++) {
               :            int u = 1 << (26-output_bits);
               :            int v = 1 << (26-output_bits);
               :            int j;
               :
158872  1.5467 :            for (j = 0; j < chrFilterSize; j++) {
648089  6.3096 :                u += chrSrc[j][i       ] * chrFilter[j];
558747  5.4398 :                v += chrSrc[j][i + VOFW] * chrFilter[j];
               :            }
               :
 20574  0.2003 :            output_pixel(&uDest[i], u);
 19520  0.1900 :            output_pixel(&vDest[i], v);
               :        }
               :    }
               :
   283  0.0028 :    if (CONFIG_SWSCALE_ALPHA && aDest) {
               :        for (i = 0; i < dstW; i++) {
               :            int val = 1 << (26-output_bits);
               :            int j;
               :
               :            for (j = 0; j < lumFilterSize; j++)
               :                val += alpSrc[j][i] * lumFilter[j];
               :
               :            output_pixel(&aDest[i], val);
               :        }
               :    }
               :}