annotate x86/rv40dsp_mmx.c @ 9694:39f6d1f21ef8 libavcodec

Add offset argument to encode_422_bitstream() to control where in the source data array to start encoding. Change all calls to pass zero for this new argument for equivalent behavior. This is a restructure to support a forthcoming bug fix.
author heydowns
date Sat, 23 May 2009 19:30:35 +0000
parents cc64e1343397
children 34a65026fa06
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
8519
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
1 /*
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
2 * Copyright (c) 2008 Konstantin Shishkov, Mathieu Velten
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
3 *
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
4 * MMX-optimized DSP functions for RV40, based on H.264 optimizations by
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
5 * Michael Niedermayer and Loren Merritt
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
6 *
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
7 * This file is part of FFmpeg.
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
8 *
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
9 * FFmpeg is free software; you can redistribute it and/or
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
10 * modify it under the terms of the GNU Lesser General Public
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
11 * License as published by the Free Software Foundation; either
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
12 * version 2.1 of the License, or (at your option) any later version.
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
13 *
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
14 * FFmpeg is distributed in the hope that it will be useful,
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
17 * Lesser General Public License for more details.
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
18 *
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
19 * You should have received a copy of the GNU Lesser General Public
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
20 * License along with FFmpeg; if not, write to the Free Software
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
22 */
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
23
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
24 #include "dsputil_mmx.h"
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
25
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
26 /* bias interleaved with bias div 8, use p+1 to access bias div 8 */
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
27 DECLARE_ALIGNED_8(static const uint64_t, rv40_bias_reg[4][8]) = {
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
28 { 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0010001000100010ULL, 0x0002000200020002ULL,
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
29 0x0020002000200020ULL, 0x0004000400040004ULL, 0x0010001000100010ULL, 0x0002000200020002ULL },
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
30 { 0x0020002000200020ULL, 0x0004000400040004ULL, 0x001C001C001C001CULL, 0x0003000300030003ULL,
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
31 0x0020002000200020ULL, 0x0004000400040004ULL, 0x001C001C001C001CULL, 0x0003000300030003ULL },
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
32 { 0x0000000000000000ULL, 0x0000000000000000ULL, 0x0020002000200020ULL, 0x0004000400040004ULL,
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
33 0x0010001000100010ULL, 0x0002000200020002ULL, 0x0020002000200020ULL, 0x0004000400040004ULL },
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
34 { 0x0020002000200020ULL, 0x0004000400040004ULL, 0x001C001C001C001CULL, 0x0003000300030003ULL,
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
35 0x0020002000200020ULL, 0x0004000400040004ULL, 0x001C001C001C001CULL, 0x0003000300030003ULL }
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
36 };
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
37
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
38 static void put_rv40_chroma_mc8_mmx(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y)
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
39 {
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
40 put_h264_chroma_generic_mc8_mmx(dst, src, stride, h, x, y, &rv40_bias_reg[y>>1][x&(~1)]);
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
41 }
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
42 static void put_rv40_chroma_mc4_mmx(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y)
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
43 {
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
44 put_h264_chroma_generic_mc4_mmx(dst, src, stride, h, x, y, &rv40_bias_reg[y>>1][x&(~1)]);
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
45 }
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
46 static void avg_rv40_chroma_mc8_mmx2(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y)
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
47 {
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
48 avg_h264_chroma_generic_mc8_mmx2(dst, src, stride, h, x, y, &rv40_bias_reg[y>>1][x&(~1)]);
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
49 }
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
50 static void avg_rv40_chroma_mc4_mmx2(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y)
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
51 {
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
52 avg_h264_chroma_generic_mc4_mmx2(dst, src, stride, h, x, y, &rv40_bias_reg[y>>1][x&(~1)]);
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
53 }
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
54 static void avg_rv40_chroma_mc8_3dnow(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y)
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
55 {
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
56 avg_h264_chroma_generic_mc8_3dnow(dst, src, stride, h, x, y, &rv40_bias_reg[y>>1][x&(~1)]);
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
57 }
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
58 static void avg_rv40_chroma_mc4_3dnow(uint8_t *dst/*align 8*/, uint8_t *src/*align 1*/, int stride, int h, int x, int y)
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
59 {
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
60 avg_h264_chroma_generic_mc4_3dnow(dst, src, stride, h, x, y, &rv40_bias_reg[y>>1][x&(~1)]);
cc64e1343397 Use H264 MMX chroma functions to accelerate RV40 decoding.
cehoyos
parents:
diff changeset
61 }