Mercurial > libavcodec.hg
comparison dsputil.c @ 220:0b234715e205 libavcodec
(commit by michael)
mmx & mmx2 quantizer
c dct permutation bugfix
dont copy input on intra only encodings if it can be avoided
dont draw edges on intra only stuff
author | arpi_esp |
---|---|
date | Sun, 27 Jan 2002 13:30:18 +0000 |
parents | 73df666cacc7 |
children | ddb1a0e94cf4 |
comparison
equal
deleted
inserted
replaced
219:5b88ee1abf97 | 220:0b234715e205 |
---|---|
47 29, 22, 15, 23, 30, 37, 44, 51, | 47 29, 22, 15, 23, 30, 37, 44, 51, |
48 58, 59, 52, 45, 38, 31, 39, 46, | 48 58, 59, 52, 45, 38, 31, 39, 46, |
49 53, 60, 61, 54, 47, 55, 62, 63 | 49 53, 60, 61, 54, 47, 55, 62, 63 |
50 }; | 50 }; |
51 | 51 |
52 /* not permutated inverse zigzag_direct + 1 for MMX quantizer */ | |
53 UINT16 __align8 inv_zigzag_direct16[64]; | |
54 | |
55 /* not permutated zigzag_direct for MMX quantizer */ | |
56 UINT8 zigzag_direct_noperm[64]; | |
57 | |
52 UINT8 ff_alternate_horizontal_scan[64] = { | 58 UINT8 ff_alternate_horizontal_scan[64] = { |
53 0, 1, 2, 3, 8, 9, 16, 17, | 59 0, 1, 2, 3, 8, 9, 16, 17, |
54 10, 11, 4, 5, 6, 7, 15, 14, | 60 10, 11, 4, 5, 6, 7, 15, 14, |
55 13, 12, 19, 18, 24, 25, 32, 33, | 61 13, 12, 19, 18, 24, 25, 32, 33, |
56 26, 27, 20, 21, 22, 23, 28, 29, | 62 26, 27, 20, 21, 22, 23, 28, 29, |
79 0x12, 0x1A, 0x16, 0x1B, 0x13, 0x1E, 0x17, 0x1F, | 85 0x12, 0x1A, 0x16, 0x1B, 0x13, 0x1E, 0x17, 0x1F, |
80 0x02, 0x0A, 0x06, 0x0B, 0x03, 0x0E, 0x07, 0x0F, | 86 0x02, 0x0A, 0x06, 0x0B, 0x03, 0x0E, 0x07, 0x0F, |
81 0x30, 0x38, 0x34, 0x39, 0x31, 0x3C, 0x35, 0x3D, | 87 0x30, 0x38, 0x34, 0x39, 0x31, 0x3C, 0x35, 0x3D, |
82 0x22, 0x2A, 0x26, 0x2B, 0x23, 0x2E, 0x27, 0x2F, | 88 0x22, 0x2A, 0x26, 0x2B, 0x23, 0x2E, 0x27, 0x2F, |
83 0x32, 0x3A, 0x36, 0x3B, 0x33, 0x3E, 0x37, 0x3F, | 89 0x32, 0x3A, 0x36, 0x3B, 0x33, 0x3E, 0x37, 0x3F, |
90 }; | |
91 | |
92 /* a*inverse[b]>>32 == a/b for all 0<=a<=65536 && 2<=b<=255 */ | |
93 UINT32 inverse[256]={ | |
94 0, 4294967295U,2147483648U,1431655766, 1073741824, 858993460, 715827883, 613566757, | |
95 536870912, 477218589, 429496730, 390451573, 357913942, 330382100, 306783379, 286331154, | |
96 268435456, 252645136, 238609295, 226050911, 214748365, 204522253, 195225787, 186737709, | |
97 178956971, 171798692, 165191050, 159072863, 153391690, 148102321, 143165577, 138547333, | |
98 134217728, 130150525, 126322568, 122713352, 119304648, 116080198, 113025456, 110127367, | |
99 107374183, 104755300, 102261127, 99882961, 97612894, 95443718, 93368855, 91382283, | |
100 89478486, 87652394, 85899346, 84215046, 82595525, 81037119, 79536432, 78090315, | |
101 76695845, 75350304, 74051161, 72796056, 71582789, 70409300, 69273667, 68174085, | |
102 67108864, 66076420, 65075263, 64103990, 63161284, 62245903, 61356676, 60492498, | |
103 59652324, 58835169, 58040099, 57266231, 56512728, 55778797, 55063684, 54366675, | |
104 53687092, 53024288, 52377650, 51746594, 51130564, 50529028, 49941481, 49367441, | |
105 48806447, 48258060, 47721859, 47197443, 46684428, 46182445, 45691142, 45210183, | |
106 44739243, 44278014, 43826197, 43383509, 42949673, 42524429, 42107523, 41698712, | |
107 41297763, 40904451, 40518560, 40139882, 39768216, 39403370, 39045158, 38693400, | |
108 38347923, 38008561, 37675152, 37347542, 37025581, 36709123, 36398028, 36092163, | |
109 35791395, 35495598, 35204650, 34918434, 34636834, 34359739, 34087043, 33818641, | |
110 33554432, 33294321, 33038210, 32786010, 32537632, 32292988, 32051995, 31814573, | |
111 31580642, 31350127, 31122952, 30899046, 30678338, 30460761, 30246249, 30034737, | |
112 29826162, 29620465, 29417585, 29217465, 29020050, 28825284, 28633116, 28443493, | |
113 28256364, 28071682, 27889399, 27709467, 27531842, 27356480, 27183338, 27012373, | |
114 26843546, 26676816, 26512144, 26349493, 26188825, 26030105, 25873297, 25718368, | |
115 25565282, 25414008, 25264514, 25116768, 24970741, 24826401, 24683721, 24542671, | |
116 24403224, 24265352, 24129030, 23994231, 23860930, 23729102, 23598722, 23469767, | |
117 23342214, 23216040, 23091223, 22967740, 22845571, 22724695, 22605092, 22486740, | |
118 22369622, 22253717, 22139007, 22025474, 21913099, 21801865, 21691755, 21582751, | |
119 21474837, 21367997, 21262215, 21157475, 21053762, 20951060, 20849356, 20748635, | |
120 20648882, 20550083, 20452226, 20355296, 20259280, 20164166, 20069941, 19976593, | |
121 19884108, 19792477, 19701685, 19611723, 19522579, 19434242, 19346700, 19259944, | |
122 19173962, 19088744, 19004281, 18920561, 18837576, 18755316, 18673771, 18592933, | |
123 18512791, 18433337, 18354562, 18276457, 18199014, 18122225, 18046082, 17970575, | |
124 17895698, 17821442, 17747799, 17674763, 17602325, 17530479, 17459217, 17388532, | |
125 17318417, 17248865, 17179870, 17111424, 17043522, 16976156, 16909321, 16843010, | |
84 }; | 126 }; |
85 | 127 |
86 /* used to skip zeros at the end */ | 128 /* used to skip zeros at the end */ |
87 UINT8 zigzag_end[64]; | 129 UINT8 zigzag_end[64]; |
88 | 130 |
513 for(i=0; i<64; i++) permutation[i]= (i & 0x38) | ((i & 6) >> 1) | ((i & 1) << 2); | 555 for(i=0; i<64; i++) permutation[i]= (i & 0x38) | ((i & 6) >> 1) | ((i & 1) << 2); |
514 #endif | 556 #endif |
515 else | 557 else |
516 for(i=0; i<64; i++) permutation[i]=i; | 558 for(i=0; i<64; i++) permutation[i]=i; |
517 | 559 |
560 for(i=0; i<64; i++) inv_zigzag_direct16[zigzag_direct[i]]= i+1; | |
561 for(i=0; i<64; i++) zigzag_direct_noperm[i]= zigzag_direct[i]; | |
562 | |
518 if (use_permuted_idct) { | 563 if (use_permuted_idct) { |
519 /* permute for IDCT */ | 564 /* permute for IDCT */ |
520 for(i=0;i<64;i++) { | 565 for(i=0;i<64;i++) { |
521 j = zigzag_direct[i]; | 566 j = zigzag_direct[i]; |
522 zigzag_direct[i] = block_permute_op(j); | 567 zigzag_direct[i] = block_permute_op(j); |