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);