All pastes #2067102 Raw Edit

Something

public text v1 · immutable
#2067102 ·published 2011-05-22 19:49 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)); \
               :        } \
               :    }
 21082  0.1377 :    for (i = 0; i < dstW; i++) {
               :        int val = 1 << 10;
               :        int j;
               :
149729  0.9782 :        for (j = 0; j < lumFilterSize; j++)
151376  0.9890 :            val += lumSrc[j][i] * lumFilter[j];
               :
 89982  0.5879 :        output_pixel(&dest[i], val);
               :    }
               :
    86 5.6e-04 :    if (uDest) {
 19116  0.1249 :        for (i = 0; i < chrDstW; i++) {
               :            int u = 1 << 10;
               :            int v = 1 << 10;
               :            int j;
               :
210527  1.3754 :            for (j = 0; j < chrFilterSize; j++) {
872952  5.7032 :                u += chrSrc[j][i       ] * chrFilter[j];
766921  5.0105 :                v += chrSrc[j][i + VOFW] * chrFilter[j];
               :            }
               :
 23069  0.1507 :            output_pixel(&uDest[i], u);
 26034  0.1701 :            output_pixel(&vDest[i], v);
               :        }
               :    }
               :
   481  0.0031 :    if (CONFIG_SWSCALE_ALPHA && aDest) {
               :        for (i = 0; i < dstW; i++) {
               :            int val = 1 << 10;
               :            int j;
               :
               :            for (j = 0; j < lumFilterSize; j++)
               :                val += alpSrc[j][i] * lumFilter[j];
               :
               :            output_pixel(&aDest[i], val);
               :        }
               :    }
               :}