~ubuntu-branches/ubuntu/saucy/gst-libav1.0/saucy-proposed

« back to all changes in this revision

Viewing changes to gst-libs/ext/libav/libavcodec/sh4/qpel.c

  • Committer: Package Import Robot
  • Author(s): Sebastian Dröge
  • Date: 2013-07-30 09:00:15 UTC
  • mfrom: (1.1.16) (7.1.7 experimental)
  • Revision ID: package-import@ubuntu.com-20130730090015-sc1ou2yssu7q5w4e
Tags: 1.1.3-1
* New upstream development snapshot:
  + debian/control:
    - Build depend on GStreamer and gst-plugins-base >= 1.1.3.

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
22
22
 */
23
23
 
 
24
#include "libavutil/common.h"
 
25
 
24
26
#define PIXOP2(OPNAME, OP) \
25
27
\
26
28
static inline void OPNAME ## _pixels4_l2_aligned(uint8_t *dst, const uint8_t *src1, const uint8_t *src2, int dst_stride, int src_stride1, int src_stride2, int h) \
357
359
    }while(--h);
358
360
}
359
361
 
360
 
static void gmc_c(uint8_t *dst, uint8_t *src, int stride, int h, int ox, int oy,
361
 
                  int dxx, int dxy, int dyx, int dyy, int shift, int r, int width, int height)
362
 
{
363
 
    int y, vx, vy;
364
 
    const int s= 1<<shift;
365
 
 
366
 
    width--;
367
 
    height--;
368
 
 
369
 
    for(y=0; y<h; y++){
370
 
        int x;
371
 
 
372
 
        vx= ox;
373
 
        vy= oy;
374
 
        for(x=0; x<8; x++){ //XXX FIXME optimize
375
 
            int src_x, src_y, frac_x, frac_y, index;
376
 
 
377
 
            src_x= vx>>16;
378
 
            src_y= vy>>16;
379
 
            frac_x= src_x&(s-1);
380
 
            frac_y= src_y&(s-1);
381
 
            src_x>>=shift;
382
 
            src_y>>=shift;
383
 
 
384
 
            if((unsigned)src_x < width){
385
 
                if((unsigned)src_y < height){
386
 
                    index= src_x + src_y*stride;
387
 
                    dst[y*stride + x]= (  (  src[index         ]*(s-frac_x)
388
 
                                           + src[index       +1]*   frac_x )*(s-frac_y)
389
 
                                        + (  src[index+stride  ]*(s-frac_x)
390
 
                                           + src[index+stride+1]*   frac_x )*   frac_y
391
 
                                        + r)>>(shift*2);
392
 
                }else{
393
 
                    index= src_x + av_clip(src_y, 0, height)*stride;
394
 
                    dst[y*stride + x]= ( (  src[index         ]*(s-frac_x)
395
 
                                          + src[index       +1]*   frac_x )*s
396
 
                                        + r)>>(shift*2);
397
 
                }
398
 
            }else{
399
 
                if((unsigned)src_y < height){
400
 
                    index= av_clip(src_x, 0, width) + src_y*stride;
401
 
                    dst[y*stride + x]= (  (  src[index         ]*(s-frac_y)
402
 
                                           + src[index+stride  ]*   frac_y )*s
403
 
                                        + r)>>(shift*2);
404
 
                }else{
405
 
                    index= av_clip(src_x, 0, width) + av_clip(src_y, 0, height)*stride;
406
 
                    dst[y*stride + x]=    src[index         ];
407
 
                }
408
 
            }
409
 
 
410
 
            vx+= dxx;
411
 
            vy+= dyx;
412
 
        }
413
 
        ox += dxy;
414
 
        oy += dyy;
415
 
    }
416
 
}
417
362
#define H264_CHROMA_MC(OPNAME, OP)\
418
363
static void OPNAME ## h264_chroma_mc2_sh4(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y){\
419
364
    const int A=(8-x)*(8-y);\