| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2005 Zoltan Hidvegi <hzoli -a- hzoli -d- com>, | 2 * Copyright (c) 2005 Zoltan Hidvegi <hzoli -a- hzoli -d- com>, |
| 3 * Loren Merritt | 3 * Loren Merritt |
| 4 * | 4 * |
| 5 * This file is part of FFmpeg. | 5 * This file is part of FFmpeg. |
| 6 * | 6 * |
| 7 * FFmpeg is free software; you can redistribute it and/or | 7 * FFmpeg is free software; you can redistribute it and/or |
| 8 * modify it under the terms of the GNU Lesser General Public | 8 * modify it under the terms of the GNU Lesser General Public |
| 9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
| 10 * version 2.1 of the License, or (at your option) any later version. | 10 * version 2.1 of the License, or (at your option) any later version. |
| 11 * | 11 * |
| 12 * FFmpeg is distributed in the hope that it will be useful, | 12 * FFmpeg is distributed in the hope that it will be useful, |
| 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 15 * Lesser General Public License for more details. | 15 * Lesser General Public License for more details. |
| 16 * | 16 * |
| 17 * You should have received a copy of the GNU Lesser General Public | 17 * You should have received a copy of the GNU Lesser General Public |
| 18 * License along with FFmpeg; if not, write to the Free Software | 18 * License along with FFmpeg; if not, write to the Free Software |
| 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| 20 */ | 20 */ |
| 21 | 21 |
| 22 /** | 22 /** |
| 23 * MMX optimized version of (put|avg)_h264_chroma_mc8. | 23 * MMX optimized version of (put|avg)_h264_chroma_mc8. |
| 24 * H264_CHROMA_MC8_TMPL must be defined to the desired function name | 24 * H264_CHROMA_MC8_TMPL must be defined to the desired function name |
| 25 * H264_CHROMA_OP must be defined to empty for put and pavgb/pavgusb for avg | 25 * H264_CHROMA_OP must be defined to empty for put and pavgb/pavgusb for avg |
| 26 * H264_CHROMA_MC8_MV0 must be defined to a (put|avg)_pixels8 function | 26 * H264_CHROMA_MC8_MV0 must be defined to a (put|avg)_pixels8 function |
| 27 */ | 27 */ |
| 28 static void H264_CHROMA_MC8_TMPL(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*
/, int stride, int h, int x, int y, const uint64_t *rnd_reg) | 28 static void H264_CHROMA_MC8_TMPL(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*
/, int stride, int h, int x, int y, const uint64_t *rnd_reg) |
| 29 { | 29 { |
| 30 DECLARE_ALIGNED_8(uint64_t, AA); | 30 DECLARE_ALIGNED(8, uint64_t, AA); |
| 31 DECLARE_ALIGNED_8(uint64_t, DD); | 31 DECLARE_ALIGNED(8, uint64_t, DD); |
| 32 int i; | 32 int i; |
| 33 | 33 |
| 34 if(y==0 && x==0) { | 34 if(y==0 && x==0) { |
| 35 /* no filter needed */ | 35 /* no filter needed */ |
| 36 H264_CHROMA_MC8_MV0(dst, src, stride, h); | 36 H264_CHROMA_MC8_MV0(dst, src, stride, h); |
| 37 return; | 37 return; |
| 38 } | 38 } |
| 39 | 39 |
| 40 assert(x<8 && y<8 && x>=0 && y>=0); | 40 assert(x<8 && y<8 && x>=0 && y>=0); |
| 41 | 41 |
| (...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 "add %4, %0\n\t" | 295 "add %4, %0\n\t" |
| 296 "sub $1, %2\n\t" | 296 "sub $1, %2\n\t" |
| 297 "jnz 1b\n\t" | 297 "jnz 1b\n\t" |
| 298 : "+r" (dst), "+r"(src), "+r"(h) | 298 : "+r" (dst), "+r"(src), "+r"(h) |
| 299 : "m" (ff_pw_32), "r"((x86_reg)stride) | 299 : "m" (ff_pw_32), "r"((x86_reg)stride) |
| 300 : "%esi"); | 300 : "%esi"); |
| 301 | 301 |
| 302 } | 302 } |
| 303 #endif | 303 #endif |
| 304 | 304 |
| OLD | NEW |