| OLD | NEW |
| 1 /* | 1 /* |
| 2 * DSP utils | 2 * DSP utils |
| 3 * Copyright (c) 2000, 2001 Fabrice Bellard | 3 * Copyright (c) 2000, 2001 Fabrice Bellard |
| 4 * Copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at> | 4 * Copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at> |
| 5 * | 5 * |
| 6 * gmc & q-pel & 32/64 bit based MC by Michael Niedermayer <michaelni@gmx.at> | 6 * gmc & q-pel & 32/64 bit based MC by Michael Niedermayer <michaelni@gmx.at> |
| 7 * | 7 * |
| 8 * This file is part of FFmpeg. | 8 * This file is part of FFmpeg. |
| 9 * | 9 * |
| 10 * FFmpeg is free software; you can redistribute it and/or | 10 * FFmpeg is free software; you can redistribute it and/or |
| 11 * modify it under the terms of the GNU Lesser General Public | 11 * modify it under the terms of the GNU Lesser General Public |
| 12 * License as published by the Free Software Foundation; either | 12 * License as published by the Free Software Foundation; either |
| 13 * version 2.1 of the License, or (at your option) any later version. | 13 * version 2.1 of the License, or (at your option) any later version. |
| 14 * | 14 * |
| 15 * FFmpeg is distributed in the hope that it will be useful, | 15 * FFmpeg is distributed in the hope that it will be useful, |
| 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 18 * Lesser General Public License for more details. | 18 * Lesser General Public License for more details. |
| 19 * | 19 * |
| 20 * You should have received a copy of the GNU Lesser General Public | 20 * You should have received a copy of the GNU Lesser General Public |
| 21 * License along with FFmpeg; if not, write to the Free Software | 21 * License along with FFmpeg; if not, write to the Free Software |
| 22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 22 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| 23 */ | 23 */ |
| 24 | 24 |
| 25 /** | 25 /** |
| 26 * @file | 26 * @file |
| 27 * DSP utils | 27 * DSP utils |
| 28 */ | 28 */ |
| 29 | 29 |
| 30 #include "libavcore/imgutils.h" |
| 30 #include "avcodec.h" | 31 #include "avcodec.h" |
| 31 #include "dsputil.h" | 32 #include "dsputil.h" |
| 32 #include "simple_idct.h" | 33 #include "simple_idct.h" |
| 33 #include "faandct.h" | 34 #include "faandct.h" |
| 34 #include "faanidct.h" | 35 #include "faanidct.h" |
| 35 #include "mathops.h" | 36 #include "mathops.h" |
| 36 #include "mpegvideo.h" | 37 #include "mpegvideo.h" |
| 37 #include "config.h" | 38 #include "config.h" |
| 38 #include "lpc.h" | 39 #include "lpc.h" |
| 39 #include "ac3dec.h" | 40 #include "ac3dec.h" |
| (...skipping 1119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1159 }\ | 1160 }\ |
| 1160 pixels+=4-line_size*(h+1);\ | 1161 pixels+=4-line_size*(h+1);\ |
| 1161 block +=4-line_size*h;\ | 1162 block +=4-line_size*h;\ |
| 1162 }\ | 1163 }\ |
| 1163 }\ | 1164 }\ |
| 1164 \ | 1165 \ |
| 1165 CALL_2X_PIXELS(OPNAME ## _pixels16_c , OPNAME ## _pixels8_c , 8)\ | 1166 CALL_2X_PIXELS(OPNAME ## _pixels16_c , OPNAME ## _pixels8_c , 8)\ |
| 1166 CALL_2X_PIXELS(OPNAME ## _pixels16_x2_c , OPNAME ## _pixels8_x2_c , 8)\ | 1167 CALL_2X_PIXELS(OPNAME ## _pixels16_x2_c , OPNAME ## _pixels8_x2_c , 8)\ |
| 1167 CALL_2X_PIXELS(OPNAME ## _pixels16_y2_c , OPNAME ## _pixels8_y2_c , 8)\ | 1168 CALL_2X_PIXELS(OPNAME ## _pixels16_y2_c , OPNAME ## _pixels8_y2_c , 8)\ |
| 1168 CALL_2X_PIXELS(OPNAME ## _pixels16_xy2_c, OPNAME ## _pixels8_xy2_c, 8)\ | 1169 CALL_2X_PIXELS(OPNAME ## _pixels16_xy2_c, OPNAME ## _pixels8_xy2_c, 8)\ |
| 1169 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_c , OPNAME ## _pixels8_c , 8)
\ | 1170 av_unused CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_c , OPNAME ## _pixels8_c
, 8)\ |
| 1170 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_x2_c , OPNAME ## _no_rnd_pixels8_x2_c
, 8)\ | 1171 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_x2_c , OPNAME ## _no_rnd_pixels8_x2_c
, 8)\ |
| 1171 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_y2_c , OPNAME ## _no_rnd_pixels8_y2_c
, 8)\ | 1172 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_y2_c , OPNAME ## _no_rnd_pixels8_y2_c
, 8)\ |
| 1172 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_xy2_c, OPNAME ## _no_rnd_pixels8_xy2_c
, 8)\ | 1173 CALL_2X_PIXELS(OPNAME ## _no_rnd_pixels16_xy2_c, OPNAME ## _no_rnd_pixels8_xy2_c
, 8)\ |
| 1173 | 1174 |
| 1174 #define op_avg(a, b) a = rnd_avg32(a, b) | 1175 #define op_avg(a, b) a = rnd_avg32(a, b) |
| 1175 #endif | 1176 #endif |
| 1176 #define op_put(a, b) a = b | 1177 #define op_put(a, b) a = b |
| 1177 | 1178 |
| 1178 PIXOP2(avg, op_avg) | 1179 PIXOP2(avg, op_avg) |
| 1179 PIXOP2(put, op_put) | 1180 PIXOP2(put, op_put) |
| 1180 #undef op_avg | 1181 #undef op_avg |
| 1181 #undef op_put | 1182 #undef op_put |
| 1182 | 1183 |
| 1184 #define put_no_rnd_pixels8_c put_pixels8_c |
| 1185 #define put_no_rnd_pixels16_c put_pixels16_c |
| 1186 |
| 1183 #define avg2(a,b) ((a+b+1)>>1) | 1187 #define avg2(a,b) ((a+b+1)>>1) |
| 1184 #define avg4(a,b,c,d) ((a+b+c+d+2)>>2) | 1188 #define avg4(a,b,c,d) ((a+b+c+d+2)>>2) |
| 1185 | 1189 |
| 1186 static void put_no_rnd_pixels16_l2_c(uint8_t *dst, const uint8_t *a, const uint8
_t *b, int stride, int h){ | 1190 static void put_no_rnd_pixels16_l2_c(uint8_t *dst, const uint8_t *a, const uint8
_t *b, int stride, int h){ |
| 1187 put_no_rnd_pixels16_l2(dst, a, b, stride, stride, stride, h); | 1191 put_no_rnd_pixels16_l2(dst, a, b, stride, stride, stride, h); |
| 1188 } | 1192 } |
| 1189 | 1193 |
| 1190 static void put_no_rnd_pixels8_l2_c(uint8_t *dst, const uint8_t *a, const uint8_
t *b, int stride, int h){ | 1194 static void put_no_rnd_pixels8_l2_c(uint8_t *dst, const uint8_t *a, const uint8_
t *b, int stride, int h){ |
| 1191 put_no_rnd_pixels8_l2(dst, a, b, stride, stride, stride, h); | 1195 put_no_rnd_pixels8_l2(dst, a, b, stride, stride, stride, h); |
| 1192 } | 1196 } |
| (...skipping 562 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1755 OP(dst[11*dstStride], (src11+src12)*20 - (src10+src13)*6 + (src9 +src14)
*3 - (src8 +src15));\ | 1759 OP(dst[11*dstStride], (src11+src12)*20 - (src10+src13)*6 + (src9 +src14)
*3 - (src8 +src15));\ |
| 1756 OP(dst[12*dstStride], (src12+src13)*20 - (src11+src14)*6 + (src10+src15)
*3 - (src9 +src16));\ | 1760 OP(dst[12*dstStride], (src12+src13)*20 - (src11+src14)*6 + (src10+src15)
*3 - (src9 +src16));\ |
| 1757 OP(dst[13*dstStride], (src13+src14)*20 - (src12+src15)*6 + (src11+src16)
*3 - (src10+src16));\ | 1761 OP(dst[13*dstStride], (src13+src14)*20 - (src12+src15)*6 + (src11+src16)
*3 - (src10+src16));\ |
| 1758 OP(dst[14*dstStride], (src14+src15)*20 - (src13+src16)*6 + (src12+src16)
*3 - (src11+src15));\ | 1762 OP(dst[14*dstStride], (src14+src15)*20 - (src13+src16)*6 + (src12+src16)
*3 - (src11+src15));\ |
| 1759 OP(dst[15*dstStride], (src15+src16)*20 - (src14+src16)*6 + (src13+src15)
*3 - (src12+src14));\ | 1763 OP(dst[15*dstStride], (src15+src16)*20 - (src14+src16)*6 + (src13+src15)
*3 - (src12+src14));\ |
| 1760 dst++;\ | 1764 dst++;\ |
| 1761 src++;\ | 1765 src++;\ |
| 1762 }\ | 1766 }\ |
| 1763 }\ | 1767 }\ |
| 1764 \ | 1768 \ |
| 1765 static void OPNAME ## qpel8_mc00_c (uint8_t *dst, uint8_t *src, int stride){\ | |
| 1766 OPNAME ## pixels8_c(dst, src, stride, 8);\ | |
| 1767 }\ | |
| 1768 \ | |
| 1769 static void OPNAME ## qpel8_mc10_c(uint8_t *dst, uint8_t *src, int stride){\ | 1769 static void OPNAME ## qpel8_mc10_c(uint8_t *dst, uint8_t *src, int stride){\ |
| 1770 uint8_t half[64];\ | 1770 uint8_t half[64];\ |
| 1771 put ## RND ## mpeg4_qpel8_h_lowpass(half, src, 8, stride, 8);\ | 1771 put ## RND ## mpeg4_qpel8_h_lowpass(half, src, 8, stride, 8);\ |
| 1772 OPNAME ## pixels8_l2(dst, src, half, stride, stride, 8, 8);\ | 1772 OPNAME ## pixels8_l2(dst, src, half, stride, stride, 8, 8);\ |
| 1773 }\ | 1773 }\ |
| 1774 \ | 1774 \ |
| 1775 static void OPNAME ## qpel8_mc20_c(uint8_t *dst, uint8_t *src, int stride){\ | 1775 static void OPNAME ## qpel8_mc20_c(uint8_t *dst, uint8_t *src, int stride){\ |
| 1776 OPNAME ## mpeg4_qpel8_h_lowpass(dst, src, stride, stride, 8);\ | 1776 OPNAME ## mpeg4_qpel8_h_lowpass(dst, src, stride, stride, 8);\ |
| 1777 }\ | 1777 }\ |
| 1778 \ | 1778 \ |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1937 copy_block9(full, src, 16, stride, 9);\ | 1937 copy_block9(full, src, 16, stride, 9);\ |
| 1938 put ## RND ## mpeg4_qpel8_h_lowpass(halfH, full, 8, 16, 9);\ | 1938 put ## RND ## mpeg4_qpel8_h_lowpass(halfH, full, 8, 16, 9);\ |
| 1939 put ## RND ## pixels8_l2(halfH, halfH, full+1, 8, 8, 16, 9);\ | 1939 put ## RND ## pixels8_l2(halfH, halfH, full+1, 8, 8, 16, 9);\ |
| 1940 OPNAME ## mpeg4_qpel8_v_lowpass(dst, halfH, stride, 8);\ | 1940 OPNAME ## mpeg4_qpel8_v_lowpass(dst, halfH, stride, 8);\ |
| 1941 }\ | 1941 }\ |
| 1942 static void OPNAME ## qpel8_mc22_c(uint8_t *dst, uint8_t *src, int stride){\ | 1942 static void OPNAME ## qpel8_mc22_c(uint8_t *dst, uint8_t *src, int stride){\ |
| 1943 uint8_t halfH[72];\ | 1943 uint8_t halfH[72];\ |
| 1944 put ## RND ## mpeg4_qpel8_h_lowpass(halfH, src, 8, stride, 9);\ | 1944 put ## RND ## mpeg4_qpel8_h_lowpass(halfH, src, 8, stride, 9);\ |
| 1945 OPNAME ## mpeg4_qpel8_v_lowpass(dst, halfH, stride, 8);\ | 1945 OPNAME ## mpeg4_qpel8_v_lowpass(dst, halfH, stride, 8);\ |
| 1946 }\ | 1946 }\ |
| 1947 static void OPNAME ## qpel16_mc00_c (uint8_t *dst, uint8_t *src, int stride){\ | |
| 1948 OPNAME ## pixels16_c(dst, src, stride, 16);\ | |
| 1949 }\ | |
| 1950 \ | 1947 \ |
| 1951 static void OPNAME ## qpel16_mc10_c(uint8_t *dst, uint8_t *src, int stride){\ | 1948 static void OPNAME ## qpel16_mc10_c(uint8_t *dst, uint8_t *src, int stride){\ |
| 1952 uint8_t half[256];\ | 1949 uint8_t half[256];\ |
| 1953 put ## RND ## mpeg4_qpel16_h_lowpass(half, src, 16, stride, 16);\ | 1950 put ## RND ## mpeg4_qpel16_h_lowpass(half, src, 16, stride, 16);\ |
| 1954 OPNAME ## pixels16_l2(dst, src, half, stride, stride, 16, 16);\ | 1951 OPNAME ## pixels16_l2(dst, src, half, stride, stride, 16, 16);\ |
| 1955 }\ | 1952 }\ |
| 1956 \ | 1953 \ |
| 1957 static void OPNAME ## qpel16_mc20_c(uint8_t *dst, uint8_t *src, int stride){\ | 1954 static void OPNAME ## qpel16_mc20_c(uint8_t *dst, uint8_t *src, int stride){\ |
| 1958 OPNAME ## mpeg4_qpel16_h_lowpass(dst, src, stride, stride, 16);\ | 1955 OPNAME ## mpeg4_qpel16_h_lowpass(dst, src, stride, stride, 16);\ |
| 1959 }\ | 1956 }\ |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2134 | 2131 |
| 2135 QPEL_MC(0, put_ , _ , op_put) | 2132 QPEL_MC(0, put_ , _ , op_put) |
| 2136 QPEL_MC(1, put_no_rnd_, _no_rnd_, op_put_no_rnd) | 2133 QPEL_MC(1, put_no_rnd_, _no_rnd_, op_put_no_rnd) |
| 2137 QPEL_MC(0, avg_ , _ , op_avg) | 2134 QPEL_MC(0, avg_ , _ , op_avg) |
| 2138 //QPEL_MC(1, avg_no_rnd , _ , op_avg) | 2135 //QPEL_MC(1, avg_no_rnd , _ , op_avg) |
| 2139 #undef op_avg | 2136 #undef op_avg |
| 2140 #undef op_avg_no_rnd | 2137 #undef op_avg_no_rnd |
| 2141 #undef op_put | 2138 #undef op_put |
| 2142 #undef op_put_no_rnd | 2139 #undef op_put_no_rnd |
| 2143 | 2140 |
| 2141 #define put_qpel8_mc00_c ff_put_pixels8x8_c |
| 2142 #define avg_qpel8_mc00_c ff_avg_pixels8x8_c |
| 2143 #define put_qpel16_mc00_c ff_put_pixels16x16_c |
| 2144 #define avg_qpel16_mc00_c ff_avg_pixels16x16_c |
| 2145 #define put_no_rnd_qpel8_mc00_c ff_put_pixels8x8_c |
| 2146 #define put_no_rnd_qpel16_mc00_c ff_put_pixels16x16_c |
| 2147 |
| 2144 #if 1 | 2148 #if 1 |
| 2145 #define H264_LOWPASS(OPNAME, OP, OP2) \ | 2149 #define H264_LOWPASS(OPNAME, OP, OP2) \ |
| 2146 static av_unused void OPNAME ## h264_qpel2_h_lowpass(uint8_t *dst, uint8_t *src,
int dstStride, int srcStride){\ | 2150 static av_unused void OPNAME ## h264_qpel2_h_lowpass(uint8_t *dst, uint8_t *src,
int dstStride, int srcStride){\ |
| 2147 const int h=2;\ | 2151 const int h=2;\ |
| 2148 uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;\ | 2152 uint8_t *cm = ff_cropTbl + MAX_NEG_CROP;\ |
| 2149 int i;\ | 2153 int i;\ |
| 2150 for(i=0; i<h; i++)\ | 2154 for(i=0; i<h; i++)\ |
| 2151 {\ | 2155 {\ |
| 2152 OP(dst[0], (src[0]+src[1])*20 - (src[-1]+src[2])*5 + (src[-2]+src[3]));\ | 2156 OP(dst[0], (src[0]+src[1])*20 - (src[-1]+src[2])*5 + (src[-2]+src[3]));\ |
| 2153 OP(dst[1], (src[1]+src[2])*20 - (src[0 ]+src[3])*5 + (src[-1]+src[4]));\ | 2157 OP(dst[1], (src[1]+src[2])*20 - (src[0 ]+src[3])*5 + (src[-1]+src[4]));\ |
| (...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2400 static void OPNAME ## h264_qpel16_hv_lowpass(uint8_t *dst, int16_t *tmp, uint8_t
*src, int dstStride, int tmpStride, int srcStride){\ | 2404 static void OPNAME ## h264_qpel16_hv_lowpass(uint8_t *dst, int16_t *tmp, uint8_t
*src, int dstStride, int tmpStride, int srcStride){\ |
| 2401 OPNAME ## h264_qpel8_hv_lowpass(dst , tmp , src , dstStride, tmpStride, s
rcStride);\ | 2405 OPNAME ## h264_qpel8_hv_lowpass(dst , tmp , src , dstStride, tmpStride, s
rcStride);\ |
| 2402 OPNAME ## h264_qpel8_hv_lowpass(dst+8, tmp+8, src+8, dstStride, tmpStride, s
rcStride);\ | 2406 OPNAME ## h264_qpel8_hv_lowpass(dst+8, tmp+8, src+8, dstStride, tmpStride, s
rcStride);\ |
| 2403 src += 8*srcStride;\ | 2407 src += 8*srcStride;\ |
| 2404 dst += 8*dstStride;\ | 2408 dst += 8*dstStride;\ |
| 2405 OPNAME ## h264_qpel8_hv_lowpass(dst , tmp , src , dstStride, tmpStride, s
rcStride);\ | 2409 OPNAME ## h264_qpel8_hv_lowpass(dst , tmp , src , dstStride, tmpStride, s
rcStride);\ |
| 2406 OPNAME ## h264_qpel8_hv_lowpass(dst+8, tmp+8, src+8, dstStride, tmpStride, s
rcStride);\ | 2410 OPNAME ## h264_qpel8_hv_lowpass(dst+8, tmp+8, src+8, dstStride, tmpStride, s
rcStride);\ |
| 2407 }\ | 2411 }\ |
| 2408 | 2412 |
| 2409 #define H264_MC(OPNAME, SIZE) \ | 2413 #define H264_MC(OPNAME, SIZE) \ |
| 2410 static void OPNAME ## h264_qpel ## SIZE ## _mc00_c (uint8_t *dst, uint8_t *src,
int stride){\ | 2414 static av_unused void OPNAME ## h264_qpel ## SIZE ## _mc00_c (uint8_t *dst, uint
8_t *src, int stride){\ |
| 2411 OPNAME ## pixels ## SIZE ## _c(dst, src, stride, SIZE);\ | 2415 OPNAME ## pixels ## SIZE ## _c(dst, src, stride, SIZE);\ |
| 2412 }\ | 2416 }\ |
| 2413 \ | 2417 \ |
| 2414 static void OPNAME ## h264_qpel ## SIZE ## _mc10_c(uint8_t *dst, uint8_t *src, i
nt stride){\ | 2418 static void OPNAME ## h264_qpel ## SIZE ## _mc10_c(uint8_t *dst, uint8_t *src, i
nt stride){\ |
| 2415 uint8_t half[SIZE*SIZE];\ | 2419 uint8_t half[SIZE*SIZE];\ |
| 2416 put_h264_qpel ## SIZE ## _h_lowpass(half, src, SIZE, stride);\ | 2420 put_h264_qpel ## SIZE ## _h_lowpass(half, src, SIZE, stride);\ |
| 2417 OPNAME ## pixels ## SIZE ## _l2(dst, src, half, stride, stride, SIZE, SIZE);
\ | 2421 OPNAME ## pixels ## SIZE ## _l2(dst, src, half, stride, stride, SIZE, SIZE);
\ |
| 2418 }\ | 2422 }\ |
| 2419 \ | 2423 \ |
| 2420 static void OPNAME ## h264_qpel ## SIZE ## _mc20_c(uint8_t *dst, uint8_t *src, i
nt stride){\ | 2424 static void OPNAME ## h264_qpel ## SIZE ## _mc20_c(uint8_t *dst, uint8_t *src, i
nt stride){\ |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2558 H264_MC(avg_, 4) | 2562 H264_MC(avg_, 4) |
| 2559 H264_MC(avg_, 8) | 2563 H264_MC(avg_, 8) |
| 2560 H264_MC(avg_, 16) | 2564 H264_MC(avg_, 16) |
| 2561 | 2565 |
| 2562 #undef op_avg | 2566 #undef op_avg |
| 2563 #undef op_put | 2567 #undef op_put |
| 2564 #undef op2_avg | 2568 #undef op2_avg |
| 2565 #undef op2_put | 2569 #undef op2_put |
| 2566 #endif | 2570 #endif |
| 2567 | 2571 |
| 2572 #define put_h264_qpel8_mc00_c ff_put_pixels8x8_c |
| 2573 #define avg_h264_qpel8_mc00_c ff_avg_pixels8x8_c |
| 2574 #define put_h264_qpel16_mc00_c ff_put_pixels16x16_c |
| 2575 #define avg_h264_qpel16_mc00_c ff_avg_pixels16x16_c |
| 2576 |
| 2568 static void wmv2_mspel8_h_lowpass(uint8_t *dst, uint8_t *src, int dstStride, int
srcStride, int h){ | 2577 static void wmv2_mspel8_h_lowpass(uint8_t *dst, uint8_t *src, int dstStride, int
srcStride, int h){ |
| 2569 uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; | 2578 uint8_t *cm = ff_cropTbl + MAX_NEG_CROP; |
| 2570 int i; | 2579 int i; |
| 2571 | 2580 |
| 2572 for(i=0; i<h; i++){ | 2581 for(i=0; i<h; i++){ |
| 2573 dst[0]= cm[(9*(src[0] + src[1]) - (src[-1] + src[2]) + 8)>>4]; | 2582 dst[0]= cm[(9*(src[0] + src[1]) - (src[-1] + src[2]) + 8)>>4]; |
| 2574 dst[1]= cm[(9*(src[1] + src[2]) - (src[ 0] + src[3]) + 8)>>4]; | 2583 dst[1]= cm[(9*(src[1] + src[2]) - (src[ 0] + src[3]) + 8)>>4]; |
| 2575 dst[2]= cm[(9*(src[2] + src[3]) - (src[ 1] + src[4]) + 8)>>4]; | 2584 dst[2]= cm[(9*(src[2] + src[3]) - (src[ 1] + src[4]) + 8)>>4]; |
| 2576 dst[3]= cm[(9*(src[3] + src[4]) - (src[ 2] + src[5]) + 8)>>4]; | 2585 dst[3]= cm[(9*(src[3] + src[4]) - (src[ 2] + src[5]) + 8)>>4]; |
| 2577 dst[4]= cm[(9*(src[4] + src[5]) - (src[ 3] + src[6]) + 8)>>4]; | 2586 dst[4]= cm[(9*(src[4] + src[5]) - (src[ 3] + src[6]) + 8)>>4]; |
| 2578 dst[5]= cm[(9*(src[5] + src[6]) - (src[ 4] + src[7]) + 8)>>4]; | 2587 dst[5]= cm[(9*(src[5] + src[6]) - (src[ 4] + src[7]) + 8)>>4]; |
| 2579 dst[6]= cm[(9*(src[6] + src[7]) - (src[ 5] + src[8]) + 8)>>4]; | 2588 dst[6]= cm[(9*(src[6] + src[7]) - (src[ 5] + src[8]) + 8)>>4]; |
| 2580 dst[7]= cm[(9*(src[7] + src[8]) - (src[ 6] + src[9]) + 8)>>4]; | 2589 dst[7]= cm[(9*(src[7] + src[8]) - (src[ 6] + src[9]) + 8)>>4]; |
| 2581 dst+=dstStride; | 2590 dst+=dstStride; |
| 2582 src+=srcStride; | 2591 src+=srcStride; |
| 2583 } | 2592 } |
| 2584 } | 2593 } |
| 2585 | 2594 |
| 2586 #if CONFIG_CAVS_DECODER | 2595 void ff_put_pixels8x8_c(uint8_t *dst, uint8_t *src, int stride) { |
| 2587 /* AVS specific */ | |
| 2588 void ff_put_cavs_qpel8_mc00_c(uint8_t *dst, uint8_t *src, int stride) { | |
| 2589 put_pixels8_c(dst, src, stride, 8); | 2596 put_pixels8_c(dst, src, stride, 8); |
| 2590 } | 2597 } |
| 2591 void ff_avg_cavs_qpel8_mc00_c(uint8_t *dst, uint8_t *src, int stride) { | 2598 void ff_avg_pixels8x8_c(uint8_t *dst, uint8_t *src, int stride) { |
| 2592 avg_pixels8_c(dst, src, stride, 8); | 2599 avg_pixels8_c(dst, src, stride, 8); |
| 2593 } | 2600 } |
| 2594 void ff_put_cavs_qpel16_mc00_c(uint8_t *dst, uint8_t *src, int stride) { | 2601 void ff_put_pixels16x16_c(uint8_t *dst, uint8_t *src, int stride) { |
| 2595 put_pixels16_c(dst, src, stride, 16); | 2602 put_pixels16_c(dst, src, stride, 16); |
| 2596 } | 2603 } |
| 2597 void ff_avg_cavs_qpel16_mc00_c(uint8_t *dst, uint8_t *src, int stride) { | 2604 void ff_avg_pixels16x16_c(uint8_t *dst, uint8_t *src, int stride) { |
| 2598 avg_pixels16_c(dst, src, stride, 16); | 2605 avg_pixels16_c(dst, src, stride, 16); |
| 2599 } | 2606 } |
| 2600 #endif /* CONFIG_CAVS_DECODER */ | |
| 2601 | |
| 2602 #if CONFIG_VC1_DECODER | |
| 2603 /* VC-1 specific */ | |
| 2604 void ff_put_vc1_mspel_mc00_c(uint8_t *dst, const uint8_t *src, int stride, int r
nd) { | |
| 2605 put_pixels8_c(dst, src, stride, 8); | |
| 2606 } | |
| 2607 void ff_avg_vc1_mspel_mc00_c(uint8_t *dst, const uint8_t *src, int stride, int r
nd) { | |
| 2608 avg_pixels8_c(dst, src, stride, 8); | |
| 2609 } | |
| 2610 #endif /* CONFIG_VC1_DECODER */ | |
| 2611 | 2607 |
| 2612 #if CONFIG_RV40_DECODER | 2608 #if CONFIG_RV40_DECODER |
| 2613 static void put_rv40_qpel16_mc33_c(uint8_t *dst, uint8_t *src, int stride){ | 2609 static void put_rv40_qpel16_mc33_c(uint8_t *dst, uint8_t *src, int stride){ |
| 2614 put_pixels16_xy2_c(dst, src, stride, 16); | 2610 put_pixels16_xy2_c(dst, src, stride, 16); |
| 2615 } | 2611 } |
| 2616 static void avg_rv40_qpel16_mc33_c(uint8_t *dst, uint8_t *src, int stride){ | 2612 static void avg_rv40_qpel16_mc33_c(uint8_t *dst, uint8_t *src, int stride){ |
| 2617 avg_pixels16_xy2_c(dst, src, stride, 16); | 2613 avg_pixels16_xy2_c(dst, src, stride, 16); |
| 2618 } | 2614 } |
| 2619 static void put_rv40_qpel8_mc33_c(uint8_t *dst, uint8_t *src, int stride){ | 2615 static void put_rv40_qpel8_mc33_c(uint8_t *dst, uint8_t *src, int stride){ |
| 2620 put_pixels8_xy2_c(dst, src, stride, 8); | 2616 put_pixels8_xy2_c(dst, src, stride, 8); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 2646 dst[3*dstStride]= cm[(9*(src3 + src4) - (src2 + src5) + 8)>>4]; | 2642 dst[3*dstStride]= cm[(9*(src3 + src4) - (src2 + src5) + 8)>>4]; |
| 2647 dst[4*dstStride]= cm[(9*(src4 + src5) - (src3 + src6) + 8)>>4]; | 2643 dst[4*dstStride]= cm[(9*(src4 + src5) - (src3 + src6) + 8)>>4]; |
| 2648 dst[5*dstStride]= cm[(9*(src5 + src6) - (src4 + src7) + 8)>>4]; | 2644 dst[5*dstStride]= cm[(9*(src5 + src6) - (src4 + src7) + 8)>>4]; |
| 2649 dst[6*dstStride]= cm[(9*(src6 + src7) - (src5 + src8) + 8)>>4]; | 2645 dst[6*dstStride]= cm[(9*(src6 + src7) - (src5 + src8) + 8)>>4]; |
| 2650 dst[7*dstStride]= cm[(9*(src7 + src8) - (src6 + src9) + 8)>>4]; | 2646 dst[7*dstStride]= cm[(9*(src7 + src8) - (src6 + src9) + 8)>>4]; |
| 2651 src++; | 2647 src++; |
| 2652 dst++; | 2648 dst++; |
| 2653 } | 2649 } |
| 2654 } | 2650 } |
| 2655 | 2651 |
| 2656 static void put_mspel8_mc00_c (uint8_t *dst, uint8_t *src, int stride){ | |
| 2657 put_pixels8_c(dst, src, stride, 8); | |
| 2658 } | |
| 2659 | |
| 2660 static void put_mspel8_mc10_c(uint8_t *dst, uint8_t *src, int stride){ | 2652 static void put_mspel8_mc10_c(uint8_t *dst, uint8_t *src, int stride){ |
| 2661 uint8_t half[64]; | 2653 uint8_t half[64]; |
| 2662 wmv2_mspel8_h_lowpass(half, src, 8, stride, 8); | 2654 wmv2_mspel8_h_lowpass(half, src, 8, stride, 8); |
| 2663 put_pixels8_l2(dst, src, half, stride, stride, 8, 8); | 2655 put_pixels8_l2(dst, src, half, stride, stride, 8, 8); |
| 2664 } | 2656 } |
| 2665 | 2657 |
| 2666 static void put_mspel8_mc20_c(uint8_t *dst, uint8_t *src, int stride){ | 2658 static void put_mspel8_mc20_c(uint8_t *dst, uint8_t *src, int stride){ |
| 2667 wmv2_mspel8_h_lowpass(dst, src, stride, stride, 8); | 2659 wmv2_mspel8_h_lowpass(dst, src, stride, stride, 8); |
| 2668 } | 2660 } |
| 2669 | 2661 |
| (...skipping 1691 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4361 ff_rv30dsp_init(c,avctx); | 4353 ff_rv30dsp_init(c,avctx); |
| 4362 #endif | 4354 #endif |
| 4363 #if CONFIG_RV40_DECODER | 4355 #if CONFIG_RV40_DECODER |
| 4364 ff_rv40dsp_init(c,avctx); | 4356 ff_rv40dsp_init(c,avctx); |
| 4365 c->put_rv40_qpel_pixels_tab[0][15] = put_rv40_qpel16_mc33_c; | 4357 c->put_rv40_qpel_pixels_tab[0][15] = put_rv40_qpel16_mc33_c; |
| 4366 c->avg_rv40_qpel_pixels_tab[0][15] = avg_rv40_qpel16_mc33_c; | 4358 c->avg_rv40_qpel_pixels_tab[0][15] = avg_rv40_qpel16_mc33_c; |
| 4367 c->put_rv40_qpel_pixels_tab[1][15] = put_rv40_qpel8_mc33_c; | 4359 c->put_rv40_qpel_pixels_tab[1][15] = put_rv40_qpel8_mc33_c; |
| 4368 c->avg_rv40_qpel_pixels_tab[1][15] = avg_rv40_qpel8_mc33_c; | 4360 c->avg_rv40_qpel_pixels_tab[1][15] = avg_rv40_qpel8_mc33_c; |
| 4369 #endif | 4361 #endif |
| 4370 | 4362 |
| 4371 c->put_mspel_pixels_tab[0]= put_mspel8_mc00_c; | 4363 c->put_mspel_pixels_tab[0]= ff_put_pixels8x8_c; |
| 4372 c->put_mspel_pixels_tab[1]= put_mspel8_mc10_c; | 4364 c->put_mspel_pixels_tab[1]= put_mspel8_mc10_c; |
| 4373 c->put_mspel_pixels_tab[2]= put_mspel8_mc20_c; | 4365 c->put_mspel_pixels_tab[2]= put_mspel8_mc20_c; |
| 4374 c->put_mspel_pixels_tab[3]= put_mspel8_mc30_c; | 4366 c->put_mspel_pixels_tab[3]= put_mspel8_mc30_c; |
| 4375 c->put_mspel_pixels_tab[4]= put_mspel8_mc02_c; | 4367 c->put_mspel_pixels_tab[4]= put_mspel8_mc02_c; |
| 4376 c->put_mspel_pixels_tab[5]= put_mspel8_mc12_c; | 4368 c->put_mspel_pixels_tab[5]= put_mspel8_mc12_c; |
| 4377 c->put_mspel_pixels_tab[6]= put_mspel8_mc22_c; | 4369 c->put_mspel_pixels_tab[6]= put_mspel8_mc22_c; |
| 4378 c->put_mspel_pixels_tab[7]= put_mspel8_mc32_c; | 4370 c->put_mspel_pixels_tab[7]= put_mspel8_mc32_c; |
| 4379 | 4371 |
| 4380 #define SET_CMP_FUNC(name) \ | 4372 #define SET_CMP_FUNC(name) \ |
| 4381 c->name[0]= name ## 16_c;\ | 4373 c->name[0]= name ## 16_c;\ |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4426 if (CONFIG_H263_DECODER || CONFIG_H263_ENCODER) { | 4418 if (CONFIG_H263_DECODER || CONFIG_H263_ENCODER) { |
| 4427 c->h263_h_loop_filter= h263_h_loop_filter_c; | 4419 c->h263_h_loop_filter= h263_h_loop_filter_c; |
| 4428 c->h263_v_loop_filter= h263_v_loop_filter_c; | 4420 c->h263_v_loop_filter= h263_v_loop_filter_c; |
| 4429 } | 4421 } |
| 4430 | 4422 |
| 4431 if (CONFIG_VP3_DECODER) { | 4423 if (CONFIG_VP3_DECODER) { |
| 4432 c->vp3_h_loop_filter= ff_vp3_h_loop_filter_c; | 4424 c->vp3_h_loop_filter= ff_vp3_h_loop_filter_c; |
| 4433 c->vp3_v_loop_filter= ff_vp3_v_loop_filter_c; | 4425 c->vp3_v_loop_filter= ff_vp3_v_loop_filter_c; |
| 4434 c->vp3_idct_dc_add= ff_vp3_idct_dc_add_c; | 4426 c->vp3_idct_dc_add= ff_vp3_idct_dc_add_c; |
| 4435 } | 4427 } |
| 4436 if (CONFIG_VP6_DECODER) { | |
| 4437 c->vp6_filter_diag4= ff_vp6_filter_diag4_c; | |
| 4438 } | |
| 4439 | 4428 |
| 4440 c->h261_loop_filter= h261_loop_filter_c; | 4429 c->h261_loop_filter= h261_loop_filter_c; |
| 4441 | 4430 |
| 4442 c->try_8x8basis= try_8x8basis_c; | 4431 c->try_8x8basis= try_8x8basis_c; |
| 4443 c->add_8x8basis= add_8x8basis_c; | 4432 c->add_8x8basis= add_8x8basis_c; |
| 4444 | 4433 |
| 4445 #if CONFIG_VORBIS_DECODER | 4434 #if CONFIG_VORBIS_DECODER |
| 4446 c->vorbis_inverse_coupling = vorbis_inverse_coupling; | 4435 c->vorbis_inverse_coupling = vorbis_inverse_coupling; |
| 4447 #endif | 4436 #endif |
| 4448 #if CONFIG_AC3_DECODER | 4437 #if CONFIG_AC3_DECODER |
| (...skipping 15 matching lines...) Expand all Loading... |
| 4464 c->scalarproduct_float = scalarproduct_float_c; | 4453 c->scalarproduct_float = scalarproduct_float_c; |
| 4465 c->butterflies_float = butterflies_float_c; | 4454 c->butterflies_float = butterflies_float_c; |
| 4466 c->vector_fmul_scalar = vector_fmul_scalar_c; | 4455 c->vector_fmul_scalar = vector_fmul_scalar_c; |
| 4467 | 4456 |
| 4468 c->vector_fmul_sv_scalar[0] = vector_fmul_sv_scalar_2_c; | 4457 c->vector_fmul_sv_scalar[0] = vector_fmul_sv_scalar_2_c; |
| 4469 c->vector_fmul_sv_scalar[1] = vector_fmul_sv_scalar_4_c; | 4458 c->vector_fmul_sv_scalar[1] = vector_fmul_sv_scalar_4_c; |
| 4470 | 4459 |
| 4471 c->sv_fmul_scalar[0] = sv_fmul_scalar_2_c; | 4460 c->sv_fmul_scalar[0] = sv_fmul_scalar_2_c; |
| 4472 c->sv_fmul_scalar[1] = sv_fmul_scalar_4_c; | 4461 c->sv_fmul_scalar[1] = sv_fmul_scalar_4_c; |
| 4473 | 4462 |
| 4474 c->shrink[0]= ff_img_copy_plane; | 4463 c->shrink[0]= av_image_copy_plane; |
| 4475 c->shrink[1]= ff_shrink22; | 4464 c->shrink[1]= ff_shrink22; |
| 4476 c->shrink[2]= ff_shrink44; | 4465 c->shrink[2]= ff_shrink44; |
| 4477 c->shrink[3]= ff_shrink88; | 4466 c->shrink[3]= ff_shrink88; |
| 4478 | 4467 |
| 4479 c->prefetch= just_return; | 4468 c->prefetch= just_return; |
| 4480 | 4469 |
| 4481 memset(c->put_2tap_qpel_pixels_tab, 0, sizeof(c->put_2tap_qpel_pixels_tab)); | 4470 memset(c->put_2tap_qpel_pixels_tab, 0, sizeof(c->put_2tap_qpel_pixels_tab)); |
| 4482 memset(c->avg_2tap_qpel_pixels_tab, 0, sizeof(c->avg_2tap_qpel_pixels_tab)); | 4471 memset(c->avg_2tap_qpel_pixels_tab, 0, sizeof(c->avg_2tap_qpel_pixels_tab)); |
| 4483 | 4472 |
| 4484 if (HAVE_MMX) dsputil_init_mmx (c, avctx); | 4473 if (HAVE_MMX) dsputil_init_mmx (c, avctx); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4531 break; | 4520 break; |
| 4532 case FF_SSE2_IDCT_PERM: | 4521 case FF_SSE2_IDCT_PERM: |
| 4533 for(i=0; i<64; i++) | 4522 for(i=0; i<64; i++) |
| 4534 c->idct_permutation[i]= (i&0x38) | idct_sse2_row_perm[i&7]; | 4523 c->idct_permutation[i]= (i&0x38) | idct_sse2_row_perm[i&7]; |
| 4535 break; | 4524 break; |
| 4536 default: | 4525 default: |
| 4537 av_log(avctx, AV_LOG_ERROR, "Internal error, IDCT permutation not set\n"
); | 4526 av_log(avctx, AV_LOG_ERROR, "Internal error, IDCT permutation not set\n"
); |
| 4538 } | 4527 } |
| 4539 } | 4528 } |
| 4540 | 4529 |
| OLD | NEW |