Mercurial > libavcodec.hg
comparison ps2/mpegvideo_mmi.c @ 2967:ef2149182f1c libavcodec
COSMETICS: Remove all trailing whitespace.
author | diego |
---|---|
date | Sat, 17 Dec 2005 18:14:38 +0000 |
parents | 72ac356803ea |
children | bfabfdf9ce55 |
comparison
equal
deleted
inserted
replaced
2966:564788471dd4 | 2967:ef2149182f1c |
---|---|
15 * License along with this library; if not, write to the Free Software | 15 * License along with this library; if not, write to the Free Software |
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | 16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
17 * | 17 * |
18 * MMI optimization by Leon van Stuivenberg | 18 * MMI optimization by Leon van Stuivenberg |
19 */ | 19 */ |
20 | 20 |
21 #include "../dsputil.h" | 21 #include "../dsputil.h" |
22 #include "../mpegvideo.h" | 22 #include "../mpegvideo.h" |
23 #include "../avcodec.h" | 23 #include "../avcodec.h" |
24 | 24 |
25 static void dct_unquantize_h263_mmi(MpegEncContext *s, | 25 static void dct_unquantize_h263_mmi(MpegEncContext *s, |
26 DCTELEM *block, int n, int qscale) | 26 DCTELEM *block, int n, int qscale) |
27 { | 27 { |
28 int level=0, qmul, qadd; | 28 int level=0, qmul, qadd; |
29 int nCoeffs; | 29 int nCoeffs; |
30 | 30 |
31 assert(s->block_last_index[n]>=0); | 31 assert(s->block_last_index[n]>=0); |
32 | 32 |
33 qadd = (qscale - 1) | 1; | 33 qadd = (qscale - 1) | 1; |
34 qmul = qscale << 1; | 34 qmul = qscale << 1; |
35 | 35 |
36 if (s->mb_intra) { | 36 if (s->mb_intra) { |
37 if (!s->h263_aic) { | 37 if (!s->h263_aic) { |
38 if (n < 4) | 38 if (n < 4) |
39 level = block[0] * s->y_dc_scale; | 39 level = block[0] * s->y_dc_scale; |
40 else | 40 else |
41 level = block[0] * s->c_dc_scale; | 41 level = block[0] * s->c_dc_scale; |
42 }else { | 42 }else { |
43 qadd = 0; | 43 qadd = 0; |
44 level = block[0]; | 44 level = block[0]; |
45 } | 45 } |
46 nCoeffs= 63; //does not allways use zigzag table | 46 nCoeffs= 63; //does not allways use zigzag table |
47 } else { | 47 } else { |
48 nCoeffs= s->intra_scantable.raster_end[ s->block_last_index[n] ]; | 48 nCoeffs= s->intra_scantable.raster_end[ s->block_last_index[n] ]; |
49 } | 49 } |
50 | 50 |
51 asm volatile( | 51 asm volatile( |
52 "add $14, $0, %3 \n\t" | 52 "add $14, $0, %3 \n\t" |
53 "pcpyld $8, %0, %0 \n\t" | 53 "pcpyld $8, %0, %0 \n\t" |
54 "pcpyh $8, $8 \n\t" //r8 = qmul | 54 "pcpyh $8, $8 \n\t" //r8 = qmul |
55 "pcpyld $9, %1, %1 \n\t" | 55 "pcpyld $9, %1, %1 \n\t" |
56 "pcpyh $9, $9 \n\t" //r9 = qadd | 56 "pcpyh $9, $9 \n\t" //r9 = qadd |
57 ".p2align 2 \n\t" | 57 ".p2align 2 \n\t" |
58 "1: \n\t" | 58 "1: \n\t" |
59 "lq $10, 0($14) \n\t" //r10 = level | 59 "lq $10, 0($14) \n\t" //r10 = level |
60 "addi $14, $14, 16 \n\t" //block+=8 | 60 "addi $14, $14, 16 \n\t" //block+=8 |
61 "addi %2, %2, -8 \n\t" | 61 "addi %2, %2, -8 \n\t" |
62 "pcgth $11, $0, $10 \n\t" //r11 = level < 0 ? -1 : 0 | 62 "pcgth $11, $0, $10 \n\t" //r11 = level < 0 ? -1 : 0 |
63 "pcgth $12, $10, $0 \n\t" //r12 = level > 0 ? -1 : 0 | 63 "pcgth $12, $10, $0 \n\t" //r12 = level > 0 ? -1 : 0 |
64 "por $12, $11, $12 \n\t" | 64 "por $12, $11, $12 \n\t" |
65 "pmulth $10, $10, $8 \n\t" | 65 "pmulth $10, $10, $8 \n\t" |
66 "paddh $13, $9, $11 \n\t" | 66 "paddh $13, $9, $11 \n\t" |
67 "pxor $13, $13, $11 \n\t" //r13 = level < 0 ? -qadd : qadd | 67 "pxor $13, $13, $11 \n\t" //r13 = level < 0 ? -qadd : qadd |
68 "pmfhl.uw $11 \n\t" | 68 "pmfhl.uw $11 \n\t" |
69 "pinteh $10, $11, $10 \n\t" //r10 = level * qmul | 69 "pinteh $10, $11, $10 \n\t" //r10 = level * qmul |
70 "paddh $10, $10, $13 \n\t" | 70 "paddh $10, $10, $13 \n\t" |
78 } | 78 } |
79 | 79 |
80 | 80 |
81 void MPV_common_init_mmi(MpegEncContext *s) | 81 void MPV_common_init_mmi(MpegEncContext *s) |
82 { | 82 { |
83 s->dct_unquantize_h263_intra = | 83 s->dct_unquantize_h263_intra = |
84 s->dct_unquantize_h263_inter = dct_unquantize_h263_mmi; | 84 s->dct_unquantize_h263_inter = dct_unquantize_h263_mmi; |
85 } | 85 } |
86 | 86 |
87 | 87 |