~ubuntu-branches/ubuntu/wily/libde265/wily

« back to all changes in this revision

Viewing changes to libde265/x86/sse-motion.cc

  • Committer: Package Import Robot
  • Author(s): Joachim Bauch
  • Date: 2015-07-16 11:07:46 UTC
  • mfrom: (2.1.2 sid)
  • Revision ID: package-import@ubuntu.com-20150716110746-76vsv24j3yux7tnu
Tags: 1.0.2-1
* Imported Upstream version 1.0.2
* Added new files to copyright information.
* Only export decoder API and update symbols for new version.

Show diffs side-by-side

added added

removed removed

Lines of Context:
86
86
#define BIT_DEPTH 8
87
87
 
88
88
void ff_hevc_put_unweighted_pred_8_sse(uint8_t *_dst, ptrdiff_t dststride,
89
 
        int16_t *src, ptrdiff_t srcstride, int width, int height) {
 
89
                                       const int16_t *src, ptrdiff_t srcstride,
 
90
                                       int width, int height) {
90
91
    int x, y;
91
92
    uint8_t *dst = (uint8_t*) _dst;
92
93
    __m128i r0, r1, f0;
169
170
}
170
171
 
171
172
void ff_hevc_put_unweighted_pred_sse(uint8_t *_dst, ptrdiff_t _dststride,
172
 
        int16_t *src, ptrdiff_t srcstride, int width, int height) {
 
173
                                     const int16_t *src, ptrdiff_t srcstride,
 
174
                                     int width, int height) {
173
175
    int x, y;
174
176
    uint8_t *dst = (uint8_t*) _dst;
175
177
    ptrdiff_t dststride = _dststride / sizeof(uint8_t);
203
205
}
204
206
 
205
207
void ff_hevc_put_weighted_pred_avg_8_sse(uint8_t *_dst, ptrdiff_t dststride,
206
 
        int16_t *src1, int16_t *src2, ptrdiff_t srcstride, int width,
207
 
        int height) {
 
208
                                         const int16_t *src1, const int16_t *src2,
 
209
                                         ptrdiff_t srcstride, int width,
 
210
                                         int height) {
208
211
    int x, y;
209
212
    uint8_t *dst = (uint8_t*) _dst;
210
213
    __m128i r0, r1, f0, r2, r3;
307
310
}
308
311
 
309
312
void ff_hevc_put_weighted_pred_avg_sse(uint8_t *_dst, ptrdiff_t _dststride,
310
 
        int16_t *src1, int16_t *src2, ptrdiff_t srcstride, int width,
311
 
        int height) {
 
313
                                       const int16_t *src1, const int16_t *src2,
 
314
                                       ptrdiff_t srcstride, int width,
 
315
                                       int height) {
312
316
    int x, y;
313
317
    uint8_t *dst = (uint8_t*) _dst;
314
318
    ptrdiff_t dststride = _dststride / sizeof(uint8_t);
346
350
 
347
351
#if 0
348
352
void ff_hevc_weighted_pred_8_sse4(uint8_t denom, int16_t wlxFlag, int16_t olxFlag,
349
 
        uint8_t *_dst, ptrdiff_t _dststride, int16_t *src, ptrdiff_t srcstride,
350
 
        int width, int height) {
 
353
                                  uint8_t *_dst, ptrdiff_t _dststride,
 
354
                                  const int16_t *src, ptrdiff_t srcstride,
 
355
                                  int width, int height) {
351
356
 
352
357
    int log2Wd;
353
358
    int x, y;
587
592
 
588
593
#if 0
589
594
void ff_hevc_weighted_pred_sse(uint8_t denom, int16_t wlxFlag, int16_t olxFlag,
590
 
        uint8_t *_dst, ptrdiff_t _dststride, int16_t *src, ptrdiff_t srcstride,
591
 
        int width, int height) {
 
595
                               uint8_t *_dst, ptrdiff_t _dststride,
 
596
                               const int16_t *src, ptrdiff_t srcstride,
 
597
                               int width, int height) {
592
598
 
593
599
    int log2Wd;
594
600
    int x, y;
672
678
 
673
679
#if HAVE_SSE4_1
674
680
void ff_hevc_weighted_pred_avg_8_sse4(uint8_t denom, int16_t wl0Flag,
675
 
        int16_t wl1Flag, int16_t ol0Flag, int16_t ol1Flag, uint8_t *_dst,
676
 
        ptrdiff_t _dststride, int16_t *src1, int16_t *src2, ptrdiff_t srcstride,
677
 
        int width, int height) {
 
681
                                      int16_t wl1Flag, int16_t ol0Flag, int16_t ol1Flag,
 
682
                                      uint8_t *_dst, ptrdiff_t _dststride,
 
683
                                      const int16_t *src1, const int16_t *src2, ptrdiff_t srcstride,
 
684
                                      int width, int height) {
678
685
    int shift, shift2;
679
686
    int log2Wd;
680
687
    int o0;
869
876
#if 0
870
877
void ff_hevc_weighted_pred_avg_sse(uint8_t denom, int16_t wl0Flag,
871
878
        int16_t wl1Flag, int16_t ol0Flag, int16_t ol1Flag, uint8_t *_dst,
872
 
        ptrdiff_t _dststride, int16_t *src1, int16_t *src2, ptrdiff_t srcstride,
 
879
                                   ptrdiff_t _dststride, const int16_t *src1, const int16_t *src2, ptrdiff_t srcstride,
873
880
        int width, int height) {
874
881
    int shift, shift2;
875
882
    int log2Wd;
943
950
 
944
951
 
945
952
void ff_hevc_put_hevc_epel_pixels_8_sse(int16_t *dst, ptrdiff_t dststride,
946
 
        uint8_t *_src, ptrdiff_t srcstride, int width, int height, int mx,
947
 
        int my, int16_t* mcbuffer) {
 
953
                                        const uint8_t *_src, ptrdiff_t srcstride,
 
954
                                        int width, int height, int mx,
 
955
                                        int my, int16_t* mcbuffer) {
948
956
    int x, y;
949
957
    __m128i x1, x2,x3;
950
958
    uint8_t *src = (uint8_t*) _src;
1020
1028
 
1021
1029
#ifndef __native_client__
1022
1030
void ff_hevc_put_hevc_epel_pixels_10_sse(int16_t *dst, ptrdiff_t dststride,
1023
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height, int mx,
1024
 
        int my, int16_t* mcbuffer) {
 
1031
                                         const uint8_t *_src, ptrdiff_t _srcstride,
 
1032
                                         int width, int height, int mx,
 
1033
                                         int my, int16_t* mcbuffer) {
1025
1034
    int x, y;
1026
1035
    __m128i x2;
1027
1036
    uint16_t *src = (uint16_t*) _src;
1071
1080
#endif
1072
1081
 
1073
1082
void ff_hevc_put_hevc_epel_h_8_sse(int16_t *dst, ptrdiff_t dststride,
1074
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height, int mx,
1075
 
        int my, int16_t* mcbuffer) {
 
1083
                                   const uint8_t *_src, ptrdiff_t _srcstride,
 
1084
                                   int width, int height, int mx,
 
1085
                                   int my, int16_t* mcbuffer, int bit_depth) {
1076
1086
    int x, y;
1077
 
    uint8_t *src = (uint8_t*) _src;
 
1087
    const uint8_t *src = (const uint8_t*) _src;
1078
1088
    ptrdiff_t srcstride = _srcstride;
1079
1089
    const int8_t *filter = epel_filters[mx - 1];
1080
1090
    __m128i r0, bshuffle1, bshuffle2, x1, x2, x3;
1168
1178
 
1169
1179
#ifndef __native_client__
1170
1180
void ff_hevc_put_hevc_epel_h_10_sse(int16_t *dst, ptrdiff_t dststride,
1171
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height, int mx,
1172
 
        int my, int16_t* mcbuffer) {
 
1181
                                    const uint8_t *_src, ptrdiff_t _srcstride,
 
1182
                                    int width, int height, int mx,
 
1183
                                    int my, int16_t* mcbuffer) {
1173
1184
    int x, y;
1174
1185
    uint16_t *src = (uint16_t*) _src;
1175
1186
    ptrdiff_t srcstride = _srcstride>>1;
1230
1241
 
1231
1242
 
1232
1243
void ff_hevc_put_hevc_epel_v_8_sse(int16_t *dst, ptrdiff_t dststride,
1233
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height, int mx,
1234
 
        int my, int16_t* mcbuffer) {
 
1244
                                   const uint8_t *_src, ptrdiff_t _srcstride, int width, int height, int mx,
 
1245
                                   int my, int16_t* mcbuffer, int bit_depth) {
1235
1246
    int x, y;
1236
1247
    __m128i x0, x1, x2, x3, t0, t1, t2, t3, r0, f0, f1, f2, f3, r1;
1237
1248
    uint8_t *src = (uint8_t*) _src;
1369
1380
 
1370
1381
#ifndef __native_client__
1371
1382
void ff_hevc_put_hevc_epel_v_10_sse(int16_t *dst, ptrdiff_t dststride,
1372
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height, int mx,
 
1383
                                    const uint8_t *_src, ptrdiff_t _srcstride, int width, int height, int mx,
1373
1384
        int my, int16_t* mcbuffer) {
1374
1385
    int x, y;
1375
1386
    __m128i x0, x1, x2, x3, t0, t1, t2, t3, r0, f0, f1, f2, f3, r1, r2, r3;
1536
1547
#endif
1537
1548
 
1538
1549
void ff_hevc_put_hevc_epel_hv_8_sse(int16_t *dst, ptrdiff_t dststride,
1539
 
                uint8_t *_src, ptrdiff_t _srcstride, int width, int height, int mx,
1540
 
                int my, int16_t* mcbuffer) {
 
1550
                                    const uint8_t *_src, ptrdiff_t _srcstride, int width, int height, int mx,
 
1551
                                    int my, int16_t* mcbuffer, int bit_depth) {
1541
1552
        int x, y;
1542
1553
        uint8_t *src = (uint8_t*) _src;
1543
1554
        ptrdiff_t srcstride = _srcstride;
1763
1774
 
1764
1775
#ifndef __native_client__
1765
1776
void ff_hevc_put_hevc_epel_hv_10_sse(int16_t *dst, ptrdiff_t dststride,
1766
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height, int mx,
 
1777
                                     const uint8_t *_src, ptrdiff_t _srcstride, int width, int height, int mx,
1767
1778
        int my, int16_t* mcbuffer) {
1768
1779
    int x, y;
1769
1780
    uint16_t *src = (uint16_t*) _src;
1925
1936
#endif
1926
1937
 
1927
1938
void ff_hevc_put_hevc_qpel_pixels_8_sse(int16_t *dst, ptrdiff_t dststride,
1928
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
1939
                                        const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
1929
1940
        int16_t* mcbuffer) {
1930
1941
    int x, y;
1931
1942
    __m128i x1, x2, x3, x0;
1999
2010
 
2000
2011
#ifndef __native_client__
2001
2012
void ff_hevc_put_hevc_qpel_pixels_10_sse(int16_t *dst, ptrdiff_t dststride,
2002
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
2013
                                         const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
2003
2014
        int16_t* mcbuffer) {
2004
2015
    int x, y;
2005
2016
    __m128i x1, x2, x4;
2046
2057
 
2047
2058
 
2048
2059
void ff_hevc_put_hevc_qpel_h_1_8_sse(int16_t *dst, ptrdiff_t dststride,
2049
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
2060
                                     const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
2050
2061
        int16_t* mcbuffer) {
2051
2062
    int x, y;
2052
 
    uint8_t *src = _src;
 
2063
    const uint8_t *src = _src;
2053
2064
    ptrdiff_t srcstride = _srcstride / sizeof(uint8_t);
2054
2065
    __m128i x1, r0, x2, x3, x4, x5;
2055
2066
 
2145
2156
 * @TODO : Valgrind to see if it's useful to use SSE or wait for AVX2 implementation
2146
2157
 */
2147
2158
void ff_hevc_put_hevc_qpel_h_1_10_sse(int16_t *dst, ptrdiff_t dststride,
2148
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
2159
                                      const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
2149
2160
        int16_t* mcbuffer) {
2150
2161
    int x, y;
2151
2162
    uint16_t *src = (uint16_t*)_src;
2179
2190
 
2180
2191
 
2181
2192
void ff_hevc_put_hevc_qpel_h_2_8_sse(int16_t *dst, ptrdiff_t dststride,
2182
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
2193
                                     const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
2183
2194
        int16_t* mcbuffer) {
2184
2195
    int x, y;
2185
 
    uint8_t *src = _src;
 
2196
    const uint8_t *src = _src;
2186
2197
    ptrdiff_t srcstride = _srcstride / sizeof(uint8_t);
2187
2198
    __m128i x1, r0, x2, x3, x4, x5;
2188
2199
 
2249
2260
 
2250
2261
#if 0
2251
2262
static void ff_hevc_put_hevc_qpel_h_2_sse(int16_t *dst, ptrdiff_t dststride,
2252
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
2263
                                          const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
2253
2264
        int16_t* mcbuffer) {
2254
2265
    int x, y;
2255
2266
    uint8_t *src = _src;
2317
2328
 
2318
2329
}
2319
2330
static void ff_hevc_put_hevc_qpel_h_3_sse(int16_t *dst, ptrdiff_t dststride,
2320
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
2331
                                          const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
2321
2332
        int16_t* mcbuffer) {
2322
2333
    int x, y;
2323
2334
    uint8_t *src = _src;
2384
2395
#endif
2385
2396
 
2386
2397
void ff_hevc_put_hevc_qpel_h_3_8_sse(int16_t *dst, ptrdiff_t dststride,
2387
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
2398
                                     const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
2388
2399
        int16_t* mcbuffer) {
2389
2400
    int x, y;
2390
 
    uint8_t *src = _src;
 
2401
    const uint8_t *src = _src;
2391
2402
    ptrdiff_t srcstride = _srcstride / sizeof(uint8_t);
2392
2403
    __m128i x1, r0, x2, x3, x4, x5;
2393
2404
 
2452
2463
 
2453
2464
 */
2454
2465
void ff_hevc_put_hevc_qpel_v_1_8_sse(int16_t *dst, ptrdiff_t dststride,
2455
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
2466
                                     const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
2456
2467
        int16_t* mcbuffer) {
2457
2468
    int x, y;
2458
2469
    uint8_t *src = (uint8_t*) _src;
2611
2622
 
2612
2623
#if 0
2613
2624
void ff_hevc_put_hevc_qpel_v_1_10_sse4(int16_t *dst, ptrdiff_t dststride,
2614
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
2625
                                       const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
2615
2626
        int16_t* mcbuffer) {
2616
2627
    int x, y;
2617
2628
    uint16_t *src = (uint16_t*) _src;
2688
2699
 
2689
2700
 
2690
2701
void ff_hevc_put_hevc_qpel_v_2_8_sse(int16_t *dst, ptrdiff_t dststride,
2691
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
2702
                                     const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
2692
2703
        int16_t* mcbuffer) {
2693
2704
    int x, y;
2694
2705
    uint8_t *src = (uint8_t*) _src;
2863
2874
 
2864
2875
#if 0
2865
2876
void ff_hevc_put_hevc_qpel_v_2_10_sse(int16_t *dst, ptrdiff_t dststride,
2866
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
2877
                                      cosnt uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
2867
2878
        int16_t* mcbuffer) {
2868
2879
    int x, y;
2869
2880
    uint16_t *src = (uint16_t*) _src;
2954
2965
 
2955
2966
#if 0
2956
2967
static  void ff_hevc_put_hevc_qpel_v_3_sse(int16_t *dst, ptrdiff_t dststride,
2957
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
2968
                                           const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
2958
2969
        int16_t* mcbuffer) {
2959
2970
    int x, y;
2960
2971
    uint8_t *src = (uint8_t*) _src;
3121
3132
#endif
3122
3133
 
3123
3134
void ff_hevc_put_hevc_qpel_v_3_8_sse(int16_t *dst, ptrdiff_t dststride,
3124
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
3135
                                     const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
3125
3136
        int16_t* mcbuffer) {
3126
3137
    int x, y;
3127
3138
    uint8_t *src = (uint8_t*) _src;
3276
3287
 
3277
3288
#if 0
3278
3289
void ff_hevc_put_hevc_qpel_v_3_10_sse(int16_t *dst, ptrdiff_t dststride,
3279
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
3290
                                      const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
3280
3291
        int16_t* mcbuffer) {
3281
3292
    int x, y;
3282
3293
    uint16_t *src = (uint16_t*) _src;
3352
3363
 
3353
3364
 
3354
3365
void ff_hevc_put_hevc_qpel_h_1_v_1_sse(int16_t *dst, ptrdiff_t dststride,
3355
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
3366
                                       const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
3356
3367
        int16_t* mcbuffer) {
3357
3368
    int x, y;
3358
3369
    uint8_t* src = (uint8_t*) _src;
3524
3535
    }
3525
3536
}
3526
3537
void ff_hevc_put_hevc_qpel_h_1_v_2_sse(int16_t *dst, ptrdiff_t dststride,
3527
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
3538
                                       const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
3528
3539
        int16_t* mcbuffer) {
3529
3540
    int x, y;
3530
3541
    uint8_t *src = (uint8_t*) _src;
3707
3718
    }
3708
3719
}
3709
3720
void ff_hevc_put_hevc_qpel_h_1_v_3_sse(int16_t *dst, ptrdiff_t dststride,
3710
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
3721
                                       const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
3711
3722
        int16_t* mcbuffer) {
3712
3723
    int x, y;
3713
3724
    uint8_t *src = (uint8_t*) _src;
3884
3895
    }
3885
3896
}
3886
3897
void ff_hevc_put_hevc_qpel_h_2_v_1_sse(int16_t *dst, ptrdiff_t dststride,
3887
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
3898
                                       const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
3888
3899
        int16_t* mcbuffer) {
3889
3900
    int x, y;
3890
3901
    uint8_t *src = (uint8_t*) _src;
4055
4066
    }
4056
4067
}
4057
4068
void ff_hevc_put_hevc_qpel_h_2_v_2_sse(int16_t *dst, ptrdiff_t dststride,
4058
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
4069
                                       const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
4059
4070
        int16_t* mcbuffer) {
4060
4071
    int x, y;
4061
4072
    uint8_t *src = (uint8_t*) _src;
4238
4249
    }
4239
4250
}
4240
4251
void ff_hevc_put_hevc_qpel_h_2_v_3_sse(int16_t *dst, ptrdiff_t dststride,
4241
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
4252
                                       const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
4242
4253
        int16_t* mcbuffer) {
4243
4254
    int x, y;
4244
4255
    uint8_t *src = (uint8_t*) _src;
4416
4427
    }
4417
4428
}
4418
4429
void ff_hevc_put_hevc_qpel_h_3_v_1_sse(int16_t *dst, ptrdiff_t dststride,
4419
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
4430
                                       const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
4420
4431
        int16_t* mcbuffer) {
4421
4432
    int x, y;
4422
4433
    uint8_t *src = (uint8_t*) _src;
4589
4600
    }
4590
4601
}
4591
4602
void ff_hevc_put_hevc_qpel_h_3_v_2_sse(int16_t *dst, ptrdiff_t dststride,
4592
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
4603
                                       const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
4593
4604
        int16_t* mcbuffer) {
4594
4605
    int x, y;
4595
4606
    uint8_t *src = (uint8_t*) _src;
4775
4786
    }
4776
4787
}
4777
4788
void ff_hevc_put_hevc_qpel_h_3_v_3_sse(int16_t *dst, ptrdiff_t dststride,
4778
 
        uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
 
4789
                                       const uint8_t *_src, ptrdiff_t _srcstride, int width, int height,
4779
4790
        int16_t* mcbuffer) {
4780
4791
    int x, y;
4781
4792
    uint8_t *src = (uint8_t*) _src;