37     for (y = 0; y < 
height; y++) {
 
   38         for (x = 0; x < 
width; x++)
 
   52     for (y = 0; y < 
size; y++) {
 
   53         for (x = 0; x < 
size; x++) {
 
   87     int16_t *
coeffs = (int16_t *) _coeffs;
 
   89     int size = 1 << log2_size;
 
   93         for (y = 0; y < size - 1; y++) {
 
   94             for (x = 0; x < 
size; x++)
 
   95                 coeffs[x] += coeffs[x - size];
 
   99         for (y = 0; y < 
size; y++) {
 
  100             for (x = 1; x < 
size; x++)
 
  101                 coeffs[x] += coeffs[x - 1];
 
  111     int size = 1 << log2_size;
 
  114         int offset = 1 << (shift - 1);
 
  115         for (y = 0; y < 
size; y++) {
 
  116             for (x = 0; x < 
size; x++) {
 
  122         for (y = 0; y < 
size; y++) {
 
  123             for (x = 0; x < 
size; x++) {
 
  131 #define SET(dst, x)   (dst) = (x) 
  132 #define SCALE(dst, x) (dst) = av_clip_int16(((x) + add) >> shift) 
  134 #define TR_4x4_LUMA(dst, src, step, assign)                             \ 
  136         int c0 = src[0 * step] + src[2 * step];                         \ 
  137         int c1 = src[2 * step] + src[3 * step];                         \ 
  138         int c2 = src[0 * step] - src[3 * step];                         \ 
  139         int c3 = 74 * src[1 * step];                                    \ 
  141         assign(dst[2 * step], 74 * (src[0 * step] -                     \ 
  144         assign(dst[0 * step], 29 * c0 + 55 * c1 + c3);                  \ 
  145         assign(dst[1 * step], 55 * c2 - 29 * c1 + c3);                  \ 
  146         assign(dst[3 * step], 55 * c0 + 29 * c2 - c3);                  \ 
  153     int add      = 1 << (shift - 1);
 
  156     for (i = 0; i < 4; i++) {
 
  162     add   = 1 << (shift - 1);
 
  163     for (i = 0; i < 4; i++) {
 
  171 #define TR_4(dst, src, dstep, sstep, assign, end)                 \ 
  173         const int e0 = 64 * src[0 * sstep] + 64 * src[2 * sstep]; \ 
  174         const int e1 = 64 * src[0 * sstep] - 64 * src[2 * sstep]; \ 
  175         const int o0 = 83 * src[1 * sstep] + 36 * src[3 * sstep]; \ 
  176         const int o1 = 36 * src[1 * sstep] - 83 * src[3 * sstep]; \ 
  178         assign(dst[0 * dstep], e0 + o0);                          \ 
  179         assign(dst[1 * dstep], e1 + o1);                          \ 
  180         assign(dst[2 * dstep], e1 - o1);                          \ 
  181         assign(dst[3 * dstep], e0 - o0);                          \ 
  184 #define TR_8(dst, src, dstep, sstep, assign, end)                 \ 
  188         int o_8[4] = { 0 };                                       \ 
  189         for (i = 0; i < 4; i++)                                   \ 
  190             for (j = 1; j < end; j += 2)                          \ 
  191                 o_8[i] += transform[4 * j][i] * src[j * sstep];   \ 
  192         TR_4(e_8, src, 1, 2 * sstep, SET, 4);                     \ 
  194         for (i = 0; i < 4; i++) {                                 \ 
  195             assign(dst[i * dstep], e_8[i] + o_8[i]);              \ 
  196             assign(dst[(7 - i) * dstep], e_8[i] - o_8[i]);        \ 
  200 #define TR_16(dst, src, dstep, sstep, assign, end)                \ 
  204         int o_16[8] = { 0 };                                      \ 
  205         for (i = 0; i < 8; i++)                                   \ 
  206             for (j = 1; j < end; j += 2)                          \ 
  207                 o_16[i] += transform[2 * j][i] * src[j * sstep];  \ 
  208         TR_8(e_16, src, 1, 2 * sstep, SET, 8);                    \ 
  210         for (i = 0; i < 8; i++) {                                 \ 
  211             assign(dst[i * dstep], e_16[i] + o_16[i]);            \ 
  212             assign(dst[(15 - i) * dstep], e_16[i] - o_16[i]);     \ 
  216 #define TR_32(dst, src, dstep, sstep, assign, end)                \ 
  220         int o_32[16] = { 0 };                                     \ 
  221         for (i = 0; i < 16; i++)                                  \ 
  222             for (j = 1; j < end; j += 2)                          \ 
  223                 o_32[i] += transform[j][i] * src[j * sstep];      \ 
  224         TR_16(e_32, src, 1, 2 * sstep, SET, end / 2);             \ 
  226         for (i = 0; i < 16; i++) {                                \ 
  227             assign(dst[i * dstep], e_32[i] + o_32[i]);            \ 
  228             assign(dst[(31 - i) * dstep], e_32[i] - o_32[i]);     \ 
  232 #define IDCT_VAR4(H)                                              \ 
  233     int limit2 = FFMIN(col_limit + 4, H) 
  234 #define IDCT_VAR8(H)                                              \ 
  235     int limit  = FFMIN(col_limit, H);                             \ 
  236     int limit2 = FFMIN(col_limit + 4, H) 
  237 #define IDCT_VAR16(H)   IDCT_VAR8(H) 
  238 #define IDCT_VAR32(H)   IDCT_VAR8(H) 
  241 static void FUNC(idct_ ## H ## x ## H )(int16_t *coeffs,          \ 
  246     int      add   = 1 << (shift - 1);                            \ 
  247     int16_t *src   = coeffs;                                      \ 
  250     for (i = 0; i < H; i++) {                                     \ 
  251         TR_ ## H(src, src, H, H, SCALE, limit2);                  \ 
  252         if (limit2 < H && i%4 == 0 && !!i)                        \ 
  257     shift = 20 - BIT_DEPTH;                                       \ 
  258     add   = 1 << (shift - 1);                                     \ 
  259     for (i = 0; i < H; i++) {                                     \ 
  260         TR_ ## H(coeffs, coeffs, 1, 1, SCALE, limit);             \ 
  266 static void FUNC(idct_ ## H ## x ## H ## _dc)(int16_t *coeffs)    \ 
  269     int shift = 14 - BIT_DEPTH;                                   \ 
  270     int add   = 1 << (shift - 1);                                 \ 
  271     int coeff = (((coeffs[0] + 1) >> 1) + add) >> shift;          \ 
  273     for (j = 0; j < H; j++) {                                     \ 
  274         for (i = 0; i < H; i++) {                                 \ 
  275             coeffs[i + j * H] = coeff;                            \ 
  299                                   ptrdiff_t stride_dst, ptrdiff_t stride_src,
 
  300                                   int16_t *sao_offset_val, 
int sao_left_class,
 
  309     stride_dst /= 
sizeof(
pixel);
 
  310     stride_src /= 
sizeof(
pixel);
 
  312     for (k = 0; k < 4; k++)
 
  313         offset_table[(k + sao_left_class) & 31] = sao_offset_val[k + 1];
 
  314     for (y = 0; y < 
height; y++) {
 
  315         for (x = 0; x < 
width; x++)
 
  316             dst[x] = 
av_clip_pixel(src[x] + offset_table[src[x] >> shift]);
 
  322 #define CMP(a, b) (((a) > (b)) - ((a) < (b))) 
  327     static const uint8_t edge_idx[] = { 1, 2, 0, 3, 4 };
 
  328     static const int8_t pos[4][2][2] = {
 
  329         { { -1,  0 }, {  1, 0 } }, 
 
  330         { {  0, -1 }, {  0, 1 } }, 
 
  331         { { -1, -1 }, {  1, 1 } }, 
 
  332         { {  1, -1 }, { -1, 1 } }, 
 
  336     int a_stride, b_stride;
 
  339     stride_dst /= 
sizeof(
pixel);
 
  341     a_stride = pos[eo][0][0] + pos[eo][0][1] * stride_src;
 
  342     b_stride = pos[eo][1][0] + pos[eo][1][1] * stride_src;
 
  343     for (y = 0; y < 
height; y++) {
 
  344         for (x = 0; x < 
width; x++) {
 
  345             int diff0 = 
CMP(src[x], src[x + a_stride]);
 
  346             int diff1 = 
CMP(src[x], src[x + b_stride]);
 
  356                                     ptrdiff_t stride_dst, ptrdiff_t stride_src, 
SAOParams *sao,
 
  357                                     int *borders, 
int _width, 
int _height,
 
  364     int16_t *sao_offset_val = sao->offset_val[c_idx];
 
  365     int sao_eo_class    = sao->eo_class[c_idx];
 
  366     int init_x = 0, width = _width, 
height = _height;
 
  368     stride_dst /= 
sizeof(
pixel);
 
  369     stride_src /= 
sizeof(
pixel);
 
  374             for (y = 0; y < 
height; y++) {
 
  375                 dst[y * stride_dst] = 
av_clip_pixel(src[y * stride_src] + offset_val);
 
  382             for (x = 0; x < 
height; x++) {
 
  391             for (x = init_x; x < 
width; x++)
 
  396             ptrdiff_t y_stride_dst = stride_dst * (height - 1);
 
  397             ptrdiff_t y_stride_src = stride_src * (height - 1);
 
  398             for (x = init_x; x < 
width; x++)
 
  399                 dst[x + y_stride_dst] = 
av_clip_pixel(src[x + y_stride_src] + offset_val);
 
  406                                     ptrdiff_t stride_dst, ptrdiff_t stride_src, 
SAOParams *sao,
 
  407                                     int *borders, 
int _width, 
int _height,
 
  414     int16_t *sao_offset_val = sao->offset_val[c_idx];
 
  415     int sao_eo_class    = sao->eo_class[c_idx];
 
  416     int init_x = 0, init_y = 0, width = _width, 
height = _height;
 
  418     stride_dst /= 
sizeof(
pixel);
 
  419     stride_src /= 
sizeof(
pixel);
 
  424             for (y = 0; y < 
height; y++) {
 
  425                 dst[y * stride_dst] = 
av_clip_pixel(src[y * stride_src] + offset_val);
 
  432             for (x = 0; x < 
height; x++) {
 
  441             for (x = init_x; x < 
width; x++)
 
  447             ptrdiff_t y_stride_dst = stride_dst * (height - 1);
 
  448             ptrdiff_t y_stride_src = stride_src * (height - 1);
 
  449             for (x = init_x; x < 
width; x++)
 
  450                 dst[x + y_stride_dst] = 
av_clip_pixel(src[x + y_stride_src] + offset_val);
 
  456         int save_upper_left  = !diag_edge[0] && sao_eo_class == 
SAO_EO_135D && !borders[0] && !borders[1];
 
  457         int save_upper_right = !diag_edge[1] && sao_eo_class == 
SAO_EO_45D  && !borders[1] && !borders[2];
 
  458         int save_lower_right = !diag_edge[2] && sao_eo_class == 
SAO_EO_135D && !borders[2] && !borders[3];
 
  459         int save_lower_left  = !diag_edge[3] && sao_eo_class == 
SAO_EO_45D  && !borders[0] && !borders[3];
 
  463             for(y = init_y+save_upper_left; y< height-save_lower_left; y++)
 
  464                 dst[y*stride_dst] = src[y*stride_src];
 
  467             for(y = init_y+save_upper_right; y< height-save_lower_right; y++)
 
  468                 dst[y*stride_dst+width-1] = src[y*stride_src+width-1];
 
  472             for(x = init_x+save_upper_left; x < width-save_upper_right; x++)
 
  476             for(x = init_x+save_lower_left; x < width-save_lower_right; x++)
 
  477                 dst[(height-1)*stride_dst+x] = src[(height-1)*stride_src+x];
 
  481         if(diag_edge[1] && sao_eo_class == 
SAO_EO_45D)
 
  482             dst[width-1] = src[width-1];
 
  484             dst[stride_dst*(height-1)+width-1] = src[stride_src*(height-1)+width-1];
 
  485         if(diag_edge[3] && sao_eo_class == 
SAO_EO_45D)
 
  486             dst[stride_dst*(height-1)] = src[stride_src*(height-1)];
 
  497                                       uint8_t *_src, ptrdiff_t _srcstride,
 
  502     ptrdiff_t srcstride = _srcstride / 
sizeof(
pixel);
 
  504     for (y = 0; y < 
height; y++) {
 
  505         for (x = 0; x < 
width; x++)
 
  517     ptrdiff_t srcstride = _srcstride / 
sizeof(
pixel);
 
  519     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
  521     for (y = 0; y < 
height; y++) {
 
  522         memcpy(dst, src, width * 
sizeof(
pixel));
 
  534     ptrdiff_t srcstride = _srcstride / 
sizeof(
pixel);
 
  536     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
  540     int offset = 1 << (shift - 1);
 
  545     for (y = 0; y < 
height; y++) {
 
  546         for (x = 0; x < 
width; x++)
 
  555                                             int height, 
int denom, 
int wx, 
int ox, intptr_t mx, intptr_t my, 
int width)
 
  559     ptrdiff_t srcstride = _srcstride / 
sizeof(
pixel);
 
  561     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
  564     int offset = 1 << (shift - 1);
 
  569     ox     = ox * (1 << (BIT_DEPTH - 8));
 
  570     for (y = 0; y < 
height; y++) {
 
  571         for (x = 0; x < 
width; x++)
 
  572             dst[x] = 
av_clip_pixel((((src[x] << (14 - BIT_DEPTH)) * wx + offset) >> shift) + ox);
 
  580                                            int height, 
int denom, 
int wx0, 
int wx1,
 
  581                                            int ox0, 
int ox1, intptr_t mx, intptr_t my, 
int width)
 
  585     ptrdiff_t srcstride = _srcstride / 
sizeof(
pixel);
 
  587     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
  590     int log2Wd = denom + shift - 1;
 
  594     for (y = 0; y < 
height; y++) {
 
  595         for (x = 0; x < 
width; x++) {
 
  596             dst[x] = 
av_clip_pixel(( (src[x] << (14 - 
BIT_DEPTH)) * wx1 + src2[x] * wx0 + (ox0 + ox1 + 1) * (1 << log2Wd)) >> (log2Wd + 1));
 
  607 #define QPEL_FILTER(src, stride)                                               \ 
  608     (filter[0] * src[x - 3 * stride] +                                         \ 
  609      filter[1] * src[x - 2 * stride] +                                         \ 
  610      filter[2] * src[x -     stride] +                                         \ 
  611      filter[3] * src[x             ] +                                         \ 
  612      filter[4] * src[x +     stride] +                                         \ 
  613      filter[5] * src[x + 2 * stride] +                                         \ 
  614      filter[6] * src[x + 3 * stride] +                                         \ 
  615      filter[7] * src[x + 4 * stride]) 
  618                                   uint8_t *_src, ptrdiff_t _srcstride,
 
  623     ptrdiff_t     srcstride = _srcstride / 
sizeof(
pixel);
 
  625     for (y = 0; y < 
height; y++) {
 
  626         for (x = 0; x < 
width; x++)
 
  634                                   uint8_t *_src, ptrdiff_t _srcstride,
 
  639     ptrdiff_t     srcstride = _srcstride / 
sizeof(
pixel);
 
  641     for (y = 0; y < 
height; y++)  {
 
  642         for (x = 0; x < 
width; x++)
 
  651                                    ptrdiff_t _srcstride,
 
  653                                    intptr_t my, 
int width)
 
  658     ptrdiff_t srcstride = _srcstride / 
sizeof(
pixel);
 
  660     int16_t *
tmp = tmp_array;
 
  665         for (x = 0; x < 
width; x++)
 
  673     for (y = 0; y < 
height; y++) {
 
  674         for (x = 0; x < 
width; x++)
 
  682                                       uint8_t *_src, ptrdiff_t _srcstride,
 
  687     ptrdiff_t     srcstride = _srcstride / 
sizeof(
pixel);
 
  689     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
  694     int offset = 1 << (shift - 1);
 
  699     for (y = 0; y < 
height; y++) {
 
  700         for (x = 0; x < 
width; x++)
 
  713     ptrdiff_t     srcstride = _srcstride / 
sizeof(
pixel);
 
  715     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
  721     int offset = 1 << (shift - 1);
 
  726     for (y = 0; y < 
height; y++) {
 
  727         for (x = 0; x < 
width; x++)
 
  736                                      uint8_t *_src, ptrdiff_t _srcstride,
 
  741     ptrdiff_t     srcstride = _srcstride / 
sizeof(
pixel);
 
  743     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
  748     int offset = 1 << (shift - 1);
 
  753     for (y = 0; y < 
height; y++) {
 
  754         for (x = 0; x < 
width; x++)
 
  768     ptrdiff_t     srcstride = _srcstride / 
sizeof(
pixel);
 
  770     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
  776     int offset = 1 << (shift - 1);
 
  781     for (y = 0; y < 
height; y++) {
 
  782         for (x = 0; x < 
width; x++)
 
  791                                        uint8_t *_src, ptrdiff_t _srcstride,
 
  797     ptrdiff_t srcstride = _srcstride / 
sizeof(
pixel);
 
  799     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
  801     int16_t *
tmp = tmp_array;
 
  805     int offset = 1 << (shift - 1);
 
  813         for (x = 0; x < 
width; x++)
 
  822     for (y = 0; y < 
height; y++) {
 
  823         for (x = 0; x < 
width; x++)
 
  837     ptrdiff_t srcstride = _srcstride / 
sizeof(
pixel);
 
  839     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
  841     int16_t *
tmp = tmp_array;
 
  844     int offset = 1 << (shift - 1);
 
  852         for (x = 0; x < 
width; x++)
 
  861     for (y = 0; y < 
height; y++) {
 
  862         for (x = 0; x < 
width; x++)
 
  871                                         uint8_t *_src, ptrdiff_t _srcstride,
 
  872                                         int height, 
int denom, 
int wx, 
int ox,
 
  873                                         intptr_t mx, intptr_t my, 
int width)
 
  877     ptrdiff_t     srcstride = _srcstride / 
sizeof(
pixel);
 
  879     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
  883     int offset = 1 << (shift - 1);
 
  888     ox = ox * (1 << (BIT_DEPTH - 8));
 
  889     for (y = 0; y < 
height; y++) {
 
  890         for (x = 0; x < 
width; x++)
 
  899                                        int height, 
int denom, 
int wx0, 
int wx1,
 
  900                                        int ox0, 
int ox1, intptr_t mx, intptr_t my, 
int width)
 
  904     ptrdiff_t     srcstride = _srcstride / 
sizeof(
pixel);
 
  906     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
  911     int log2Wd = denom + shift - 1;
 
  915     for (y = 0; y < 
height; y++) {
 
  916         for (x = 0; x < 
width; x++)
 
  918                                     ((ox0 + ox1 + 1) << log2Wd)) >> (log2Wd + 1));
 
  926                                         uint8_t *_src, ptrdiff_t _srcstride,
 
  927                                         int height, 
int denom, 
int wx, 
int ox,
 
  928                                         intptr_t mx, intptr_t my, 
int width)
 
  932     ptrdiff_t     srcstride = _srcstride / 
sizeof(
pixel);
 
  934     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
  938     int offset = 1 << (shift - 1);
 
  943     ox = ox * (1 << (BIT_DEPTH - 8));
 
  944     for (y = 0; y < 
height; y++) {
 
  945         for (x = 0; x < 
width; x++)
 
  954                                        int height, 
int denom, 
int wx0, 
int wx1,
 
  955                                        int ox0, 
int ox1, intptr_t mx, intptr_t my, 
int width)
 
  959     ptrdiff_t     srcstride = _srcstride / 
sizeof(
pixel);
 
  961     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
  966     int log2Wd = denom + shift - 1;
 
  970     for (y = 0; y < 
height; y++) {
 
  971         for (x = 0; x < 
width; x++)
 
  973                                     ((ox0 + ox1 + 1) << log2Wd)) >> (log2Wd + 1));
 
  981                                          uint8_t *_src, ptrdiff_t _srcstride,
 
  982                                          int height, 
int denom, 
int wx, 
int ox,
 
  983                                          intptr_t mx, intptr_t my, 
int width)
 
  988     ptrdiff_t srcstride = _srcstride / 
sizeof(
pixel);
 
  990     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
  992     int16_t *
tmp = tmp_array;
 
  995     int offset = 1 << (shift - 1);
 
 1003         for (x = 0; x < 
width; x++)
 
 1012     ox = ox * (1 << (BIT_DEPTH - 8));
 
 1013     for (y = 0; y < 
height; y++) {
 
 1014         for (x = 0; x < 
width; x++)
 
 1023                                         int height, 
int denom, 
int wx0, 
int wx1,
 
 1024                                         int ox0, 
int ox1, intptr_t mx, intptr_t my, 
int width)
 
 1029     ptrdiff_t srcstride = _srcstride / 
sizeof(
pixel);
 
 1031     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
 1033     int16_t *
tmp = tmp_array;
 
 1035     int log2Wd = denom + shift - 1;
 
 1040         for (x = 0; x < 
width; x++)
 
 1051     for (y = 0; y < 
height; y++) {
 
 1052         for (x = 0; x < 
width; x++)
 
 1054                                     ((ox0 + ox1 + 1) << log2Wd)) >> (log2Wd + 1));
 
 1064 #define EPEL_FILTER(src, stride)                                               \ 
 1065     (filter[0] * src[x - stride] +                                             \ 
 1066      filter[1] * src[x]          +                                             \ 
 1067      filter[2] * src[x + stride] +                                             \ 
 1068      filter[3] * src[x + 2 * stride]) 
 1071                                   uint8_t *_src, ptrdiff_t _srcstride,
 
 1076     ptrdiff_t srcstride  = _srcstride / 
sizeof(
pixel);
 
 1078     for (y = 0; y < 
height; y++) {
 
 1079         for (x = 0; x < 
width; x++)
 
 1087                                   uint8_t *_src, ptrdiff_t _srcstride,
 
 1092     ptrdiff_t srcstride = _srcstride / 
sizeof(
pixel);
 
 1095     for (y = 0; y < 
height; y++) {
 
 1096         for (x = 0; x < 
width; x++)
 
 1104                                    uint8_t *_src, ptrdiff_t _srcstride,
 
 1109     ptrdiff_t srcstride = _srcstride / 
sizeof(
pixel);
 
 1112     int16_t *
tmp = tmp_array;
 
 1117         for (x = 0; x < 
width; x++)
 
 1126     for (y = 0; y < 
height; y++) {
 
 1127         for (x = 0; x < 
width; x++)
 
 1139     ptrdiff_t srcstride  = _srcstride / 
sizeof(
pixel);
 
 1141     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
 1145     int offset = 1 << (shift - 1);
 
 1150     for (y = 0; y < 
height; y++) {
 
 1151         for (x = 0; x < 
width; x++)
 
 1164     ptrdiff_t srcstride  = _srcstride / 
sizeof(
pixel);
 
 1166     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
 1170     int offset = 1 << (shift - 1);
 
 1175     for (y = 0; y < 
height; y++) {
 
 1176         for (x = 0; x < 
width; x++) {
 
 1190     ptrdiff_t srcstride  = _srcstride / 
sizeof(
pixel);
 
 1192     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
 1196     int offset = 1 << (shift - 1);
 
 1201     for (y = 0; y < 
height; y++) {
 
 1202         for (x = 0; x < 
width; x++)
 
 1215     ptrdiff_t srcstride  = _srcstride / 
sizeof(
pixel);
 
 1218     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
 1221     int offset = 1 << (shift - 1);
 
 1226     for (y = 0; y < 
height; y++) {
 
 1227         for (x = 0; x < 
width; x++)
 
 1240     ptrdiff_t srcstride = _srcstride / 
sizeof(
pixel);
 
 1242     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
 1245     int16_t *
tmp = tmp_array;
 
 1248     int offset = 1 << (shift - 1);
 
 1256         for (x = 0; x < 
width; x++)
 
 1265     for (y = 0; y < 
height; y++) {
 
 1266         for (x = 0; x < 
width; x++)
 
 1279     ptrdiff_t srcstride = _srcstride / 
sizeof(
pixel);
 
 1281     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
 1284     int16_t *
tmp = tmp_array;
 
 1287     int offset = 1 << (shift - 1);
 
 1295         for (x = 0; x < 
width; x++)
 
 1304     for (y = 0; y < 
height; y++) {
 
 1305         for (x = 0; x < 
width; x++)
 
 1314                                         int height, 
int denom, 
int wx, 
int ox, intptr_t mx, intptr_t my, 
int width)
 
 1318     ptrdiff_t srcstride  = _srcstride / 
sizeof(
pixel);
 
 1320     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
 1324     int offset = 1 << (shift - 1);
 
 1329     ox     = ox * (1 << (BIT_DEPTH - 8));
 
 1330     for (y = 0; y < 
height; y++) {
 
 1331         for (x = 0; x < 
width; x++) {
 
 1341                                        int height, 
int denom, 
int wx0, 
int wx1,
 
 1342                                        int ox0, 
int ox1, intptr_t mx, intptr_t my, 
int width)
 
 1346     ptrdiff_t srcstride  = _srcstride / 
sizeof(
pixel);
 
 1348     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
 1351     int log2Wd = denom + shift - 1;
 
 1355     for (y = 0; y < 
height; y++) {
 
 1356         for (x = 0; x < 
width; x++)
 
 1358                                     ((ox0 + ox1 + 1) * (1 << log2Wd))) >> (log2Wd + 1));
 
 1366                                         int height, 
int denom, 
int wx, 
int ox, intptr_t mx, intptr_t my, 
int width)
 
 1370     ptrdiff_t srcstride  = _srcstride / 
sizeof(
pixel);
 
 1372     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
 1376     int offset = 1 << (shift - 1);
 
 1381     ox     = ox * (1 << (BIT_DEPTH - 8));
 
 1382     for (y = 0; y < 
height; y++) {
 
 1383         for (x = 0; x < 
width; x++) {
 
 1393                                        int height, 
int denom, 
int wx0, 
int wx1,
 
 1394                                        int ox0, 
int ox1, intptr_t mx, intptr_t my, 
int width)
 
 1398     ptrdiff_t srcstride  = _srcstride / 
sizeof(
pixel);
 
 1401     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
 1403     int log2Wd = denom + shift - 1;
 
 1407     for (y = 0; y < 
height; y++) {
 
 1408         for (x = 0; x < 
width; x++)
 
 1410                                     ((ox0 + ox1 + 1) * (1 << log2Wd))) >> (log2Wd + 1));
 
 1418                                          int height, 
int denom, 
int wx, 
int ox, intptr_t mx, intptr_t my, 
int width)
 
 1422     ptrdiff_t srcstride = _srcstride / 
sizeof(
pixel);
 
 1424     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
 1427     int16_t *
tmp = tmp_array;
 
 1430     int offset = 1 << (shift - 1);
 
 1438         for (x = 0; x < 
width; x++)
 
 1447     ox     = ox * (1 << (BIT_DEPTH - 8));
 
 1448     for (y = 0; y < 
height; y++) {
 
 1449         for (x = 0; x < 
width; x++)
 
 1458                                         int height, 
int denom, 
int wx0, 
int wx1,
 
 1459                                         int ox0, 
int ox1, intptr_t mx, intptr_t my, 
int width)
 
 1463     ptrdiff_t srcstride = _srcstride / 
sizeof(
pixel);
 
 1465     ptrdiff_t dststride = _dststride / 
sizeof(
pixel);
 
 1468     int16_t *
tmp = tmp_array;
 
 1470     int log2Wd = denom + shift - 1;
 
 1475         for (x = 0; x < 
width; x++)
 
 1486     for (y = 0; y < 
height; y++) {
 
 1487         for (x = 0; x < 
width; x++)
 
 1489                                     ((ox0 + ox1 + 1) * (1 << log2Wd))) >> (log2Wd + 1));
 
 1497 #define P3 pix[-4 * xstride] 
 1498 #define P2 pix[-3 * xstride] 
 1499 #define P1 pix[-2 * xstride] 
 1500 #define P0 pix[-1 * xstride] 
 1501 #define Q0 pix[0 * xstride] 
 1502 #define Q1 pix[1 * xstride] 
 1503 #define Q2 pix[2 * xstride] 
 1504 #define Q3 pix[3 * xstride] 
 1507 #define TP3 pix[-4 * xstride + 3 * ystride] 
 1508 #define TP2 pix[-3 * xstride + 3 * ystride] 
 1509 #define TP1 pix[-2 * xstride + 3 * ystride] 
 1510 #define TP0 pix[-1 * xstride + 3 * ystride] 
 1511 #define TQ0 pix[0  * xstride + 3 * ystride] 
 1512 #define TQ1 pix[1  * xstride + 3 * ystride] 
 1513 #define TQ2 pix[2  * xstride + 3 * ystride] 
 1514 #define TQ3 pix[3  * xstride + 3 * ystride] 
 1517                                         ptrdiff_t _xstride, ptrdiff_t _ystride,
 
 1523     ptrdiff_t xstride = _xstride / 
sizeof(
pixel);
 
 1524     ptrdiff_t ystride = _ystride / 
sizeof(
pixel);
 
 1528     for (j = 0; j < 2; j++) {
 
 1529         const int dp0  = abs(
P2  - 2 * 
P1  + 
P0);
 
 1530         const int dq0  = abs(
Q2  - 2 * 
Q1  + 
Q0);
 
 1531         const int dp3  = abs(
TP2 - 2 * 
TP1 + 
TP0);
 
 1532         const int dq3  = abs(
TQ2 - 2 * 
TQ1 + 
TQ0);
 
 1533         const int d0   = dp0 + dq0;
 
 1534         const int d3   = dp3 + dq3;
 
 1536         const int no_p = _no_p[j];
 
 1537         const int no_q = _no_q[j];
 
 1539         if (d0 + d3 >= beta) {
 
 1543             const int beta_3 = beta >> 3;
 
 1544             const int beta_2 = beta >> 2;
 
 1545             const int tc25   = ((tc * 5 + 1) >> 1);
 
 1547             if (abs(
P3  -  
P0) + abs(
Q3  -  
Q0) < beta_3 && abs(
P0  -  
Q0) < tc25 &&
 
 1549                                       (d0 << 1) < beta_2 &&      (d3 << 1) < beta_2) {
 
 1551                 const int tc2 = tc << 1;
 
 1552                 for (d = 0; d < 4; d++) {
 
 1562                         P0 = p0 + av_clip(((p2 + 2 * p1 + 2 * p0 + 2 * q0 + q1 + 4) >> 3) - p0, -tc2, tc2);
 
 1563                         P1 = p1 + av_clip(((p2 + p1 + p0 + q0 + 2) >> 2) - p1, -tc2, tc2);
 
 1564                         P2 = p2 + av_clip(((2 * p3 + 3 * p2 + p1 + p0 + q0 + 4) >> 3) - p2, -tc2, tc2);
 
 1567                         Q0 = q0 + av_clip(((p1 + 2 * p0 + 2 * q0 + 2 * q1 + q2 + 4) >> 3) - q0, -tc2, tc2);
 
 1568                         Q1 = q1 + av_clip(((p0 + q0 + q1 + q2 + 2) >> 2) - q1, -tc2, tc2);
 
 1569                         Q2 = q2 + av_clip(((2 * q3 + 3 * q2 + q1 + q0 + p0 + 4) >> 3) - q2, -tc2, tc2);
 
 1576                 const int tc_2 = tc >> 1;
 
 1577                 if (dp0 + dp3 < ((beta + (beta >> 1)) >> 3))
 
 1579                 if (dq0 + dq3 < ((beta + (beta >> 1)) >> 3))
 
 1582                 for (d = 0; d < 4; d++) {
 
 1589                     int delta0   = (9 * (q0 - p0) - 3 * (q1 - p1) + 8) >> 4;
 
 1590                     if (abs(delta0) < 10 * 
tc) {
 
 1591                         delta0 = av_clip(delta0, -tc, tc);
 
 1596                         if (!no_p && nd_p > 1) {
 
 1597                             const int deltap1 = av_clip((((p2 + p0 + 1) >> 1) - p1 + delta0) >> 1, -tc_2, tc_2);
 
 1600                         if (!no_q && nd_q > 1) {
 
 1601                             const int deltaq1 = av_clip((((q2 + q0 + 1) >> 1) - q1 - delta0) >> 1, -tc_2, tc_2);
 
 1613                                           ptrdiff_t _ystride, 
int *_tc,
 
 1616     int d, j, no_p, no_q;
 
 1618     ptrdiff_t xstride = _xstride / 
sizeof(
pixel);
 
 1619     ptrdiff_t ystride = _ystride / 
sizeof(
pixel);
 
 1621     for (j = 0; j < 2; j++) {
 
 1630         for (d = 0; d < 4; d++) {
 
 1636             delta0 = av_clip((((q0 - p0) * 4) + p1 - q1 + 4) >> 3, -tc, tc);
 
 1665                                 beta, tc, no_p, no_q);
 
 1673                                 beta, tc, no_p, no_q);
 
static void FUNC() put_hevc_qpel_bi_w_hv(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int16_t *src2, int height, int denom, int wx0, int wx1, int ox0, int ox1, intptr_t mx, intptr_t my, int width)
static void FUNC() add_residual16x16(uint8_t *_dst, int16_t *res, ptrdiff_t stride)
static void FUNC() put_hevc_pel_uni_pixels(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int height, intptr_t mx, intptr_t my, int width)
static void FUNC() put_hevc_qpel_bi_hv(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int16_t *src2, int height, intptr_t mx, intptr_t my, int width)
static int shift(int a, int b)
static void FUNC() put_hevc_epel_bi_hv(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int16_t *src2, int height, intptr_t mx, intptr_t my, int width)
static void FUNC() put_hevc_qpel_uni_w_h(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int height, int denom, int wx, int ox, intptr_t mx, intptr_t my, int width)
static void FUNC() put_hevc_epel_uni_w_h(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int height, int denom, int wx, int ox, intptr_t mx, intptr_t my, int width)
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits. 
static void FUNC() put_hevc_pel_bi_w_pixels(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int16_t *src2, int height, int denom, int wx0, int wx1, int ox0, int ox1, intptr_t mx, intptr_t my, int width)
static av_always_inline void FUNC() add_residual(uint8_t *_dst, int16_t *res, ptrdiff_t stride, int size)
static const uint8_t q1[256]
static void FUNC() put_hevc_qpel_uni_w_hv(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int height, int denom, int wx, int ox, intptr_t mx, intptr_t my, int width)
static void FUNC() add_residual4x4(uint8_t *_dst, int16_t *res, ptrdiff_t stride)
static void FUNC() put_hevc_qpel_uni_h(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int height, intptr_t mx, intptr_t my, int width)
static void FUNC() add_residual32x32(uint8_t *_dst, int16_t *res, ptrdiff_t stride)
static void FUNC() put_hevc_qpel_h(int16_t *dst, uint8_t *_src, ptrdiff_t _srcstride, int height, intptr_t mx, intptr_t my, int width)
#define QPEL_FILTER(src, stride)
static void FUNC() sao_edge_restore_1(uint8_t *_dst, uint8_t *_src, ptrdiff_t stride_dst, ptrdiff_t stride_src, SAOParams *sao, int *borders, int _width, int _height, int c_idx, uint8_t *vert_edge, uint8_t *horiz_edge, uint8_t *diag_edge)
static void FUNC() put_hevc_qpel_bi_h(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int16_t *src2, int height, intptr_t mx, intptr_t my, int width)
static void filter(int16_t *output, ptrdiff_t out_stride, int16_t *low, ptrdiff_t low_stride, int16_t *high, ptrdiff_t high_stride, int len, uint8_t clip)
#define QPEL_EXTRA_BEFORE
static void FUNC() put_hevc_qpel_uni_w_v(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int height, int denom, int wx, int ox, intptr_t mx, intptr_t my, int width)
static void FUNC() hevc_h_loop_filter_luma(uint8_t *pix, ptrdiff_t stride, int beta, int32_t *tc, uint8_t *no_p, uint8_t *no_q)
const int8_t ff_hevc_epel_filters[7][4]
bitstream reader API header. 
const int8_t ff_hevc_qpel_filters[3][16]
static void FUNC() put_hevc_qpel_v(int16_t *dst, uint8_t *_src, ptrdiff_t _srcstride, int height, intptr_t mx, intptr_t my, int width)
static void FUNC() put_hevc_epel_hv(int16_t *dst, uint8_t *_src, ptrdiff_t _srcstride, int height, intptr_t mx, intptr_t my, int width)
static const uint8_t offset[127][2]
static const uint8_t q0[256]
static void FUNC() put_hevc_qpel_uni_hv(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int height, intptr_t mx, intptr_t my, int width)
static void FUNC() add_residual8x8(uint8_t *_dst, int16_t *res, ptrdiff_t stride)
#define EPEL_FILTER(src, stride)
static void FUNC() put_hevc_pel_bi_pixels(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int16_t *src2, int height, intptr_t mx, intptr_t my, int width)
static void FUNC() put_hevc_epel_bi_v(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int16_t *src2, int height, intptr_t mx, intptr_t my, int width)
static void FUNC() sao_band_filter(uint8_t *_dst, uint8_t *_src, ptrdiff_t stride_dst, ptrdiff_t stride_src, int16_t *sao_offset_val, int sao_left_class, int width, int height)
static void FUNC() put_hevc_epel_uni_w_hv(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int height, int denom, int wx, int ox, intptr_t mx, intptr_t my, int width)
#define EPEL_EXTRA_BEFORE
static void FUNC(ff_hevc_idct_4x4, BIT_DEPTH)
static void FUNC() put_hevc_qpel_bi_v(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int16_t *src2, int height, intptr_t mx, intptr_t my, int width)
static void FUNC() hevc_v_loop_filter_luma(uint8_t *pix, ptrdiff_t stride, int beta, int32_t *tc, uint8_t *no_p, uint8_t *no_q)
static void FUNC() put_hevc_epel_bi_w_h(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int16_t *src2, int height, int denom, int wx0, int wx1, int ox0, int ox1, intptr_t mx, intptr_t my, int width)
static void FUNC() put_hevc_epel_uni_w_v(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int height, int denom, int wx, int ox, intptr_t mx, intptr_t my, int width)
static void FUNC() put_hevc_pel_pixels(int16_t *dst, uint8_t *_src, ptrdiff_t _srcstride, int height, intptr_t mx, intptr_t my, int width)
static void FUNC() hevc_loop_filter_chroma(uint8_t *_pix, ptrdiff_t _xstride, ptrdiff_t _ystride, int *_tc, uint8_t *_no_p, uint8_t *_no_q)
static void FUNC() hevc_h_loop_filter_chroma(uint8_t *pix, ptrdiff_t stride, int32_t *tc, uint8_t *no_p, uint8_t *no_q)
static void FUNC() put_hevc_qpel_hv(int16_t *dst, uint8_t *_src, ptrdiff_t _srcstride, int height, intptr_t mx, intptr_t my, int width)
static void FUNC() put_hevc_qpel_bi_w_v(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int16_t *src2, int height, int denom, int wx0, int wx1, int ox0, int ox1, intptr_t mx, intptr_t my, int width)
static void FUNC() put_hevc_epel_uni_h(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int height, intptr_t mx, intptr_t my, int width)
static void FUNC() dequant(int16_t *coeffs, int16_t log2_size)
static void FUNC() put_hevc_epel_uni_v(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int height, intptr_t mx, intptr_t my, int width)
static void FUNC() put_pcm(uint8_t *_dst, ptrdiff_t stride, int width, int height, GetBitContext *gb, int pcm_bit_depth)
static void FUNC() put_hevc_epel_uni_hv(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int height, intptr_t mx, intptr_t my, int width)
static void FUNC() transform_rdpcm(int16_t *_coeffs, int16_t log2_size, int mode)
static void FUNC() put_hevc_epel_v(int16_t *dst, uint8_t *_src, ptrdiff_t _srcstride, int height, intptr_t mx, intptr_t my, int width)
GLint GLenum GLboolean GLsizei stride
static void FUNC() put_hevc_qpel_bi_w_h(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int16_t *src2, int height, int denom, int wx0, int wx1, int ox0, int ox1, intptr_t mx, intptr_t my, int width)
static void FUNC() hevc_v_loop_filter_chroma(uint8_t *pix, ptrdiff_t stride, int32_t *tc, uint8_t *no_p, uint8_t *no_q)
int16_t offset_val[3][5]
SaoOffsetVal. 
static void FUNC() sao_edge_restore_0(uint8_t *_dst, uint8_t *_src, ptrdiff_t stride_dst, ptrdiff_t stride_src, SAOParams *sao, int *borders, int _width, int _height, int c_idx, uint8_t *vert_edge, uint8_t *horiz_edge, uint8_t *diag_edge)
#define AV_INPUT_BUFFER_PADDING_SIZE
Required number of additionally allocated bytes at the end of the input bitstream for decoding...
#define TR_4x4_LUMA(dst, src, step, assign)
static const uint8_t offset_table[]
static void FUNC() put_hevc_pel_uni_w_pixels(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int height, int denom, int wx, int ox, intptr_t mx, intptr_t my, int width)
static void FUNC() put_hevc_epel_bi_h(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int16_t *src2, int height, intptr_t mx, intptr_t my, int width)
static const int16_t coeffs[]
static void FUNC() sao_edge_filter(uint8_t *_dst, uint8_t *_src, ptrdiff_t stride_dst, int16_t *sao_offset_val, int eo, int width, int height)
static void FUNC() transform_4x4_luma(int16_t *coeffs)
static void FUNC() hevc_loop_filter_luma(uint8_t *_pix, ptrdiff_t _xstride, ptrdiff_t _ystride, int beta, int *_tc, uint8_t *_no_p, uint8_t *_no_q)
static void FUNC() put_hevc_epel_bi_w_hv(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int16_t *src2, int height, int denom, int wx0, int wx1, int ox0, int ox1, intptr_t mx, intptr_t my, int width)
static void FUNC() put_hevc_epel_bi_w_v(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int16_t *src2, int height, int denom, int wx0, int wx1, int ox0, int ox1, intptr_t mx, intptr_t my, int width)
static void FUNC() put_hevc_epel_h(int16_t *dst, uint8_t *_src, ptrdiff_t _srcstride, int height, intptr_t mx, intptr_t my, int width)
static void FUNC() put_hevc_qpel_uni_v(uint8_t *_dst, ptrdiff_t _dststride, uint8_t *_src, ptrdiff_t _srcstride, int height, intptr_t mx, intptr_t my, int width)
mode
Use these values in ebur128_init (or'ed).