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 |