|
|
|
@ -59,39 +59,24 @@ static inline void idctRowCondDC (DCTELEM * row) |
|
|
|
|
#else |
|
|
|
|
#define ROW0_MASK 0xffffLL |
|
|
|
|
#endif |
|
|
|
|
if(sizeof(DCTELEM)==2){ |
|
|
|
|
if ( ((((uint64_t *)row)[0] & ~ROW0_MASK) | |
|
|
|
|
((uint64_t *)row)[1]) == 0) { |
|
|
|
|
temp = (row[0] << 3) & 0xffff; |
|
|
|
|
temp += temp << 16; |
|
|
|
|
temp += temp << 32; |
|
|
|
|
((uint64_t *)row)[0] = temp; |
|
|
|
|
((uint64_t *)row)[1] = temp; |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
}else{ |
|
|
|
|
if (!(row[1]|row[2]|row[3]|row[4]|row[5]|row[6]|row[7])) { |
|
|
|
|
row[0]=row[1]=row[2]=row[3]=row[4]=row[5]=row[6]=row[7]= row[0] << 3; |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
if (((((uint64_t *)row)[0] & ~ROW0_MASK) | ((uint64_t *)row)[1]) == 0) { |
|
|
|
|
temp = (row[0] << 3) & 0xffff; |
|
|
|
|
temp += temp << 16; |
|
|
|
|
temp += temp << 32; |
|
|
|
|
((uint64_t *)row)[0] = temp; |
|
|
|
|
((uint64_t *)row)[1] = temp; |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
#else |
|
|
|
|
if(sizeof(DCTELEM)==2){ |
|
|
|
|
if (!(((uint32_t*)row)[1] | |
|
|
|
|
((uint32_t*)row)[2] | |
|
|
|
|
((uint32_t*)row)[3] | |
|
|
|
|
row[1])) { |
|
|
|
|
temp = (row[0] << 3) & 0xffff; |
|
|
|
|
temp += temp << 16; |
|
|
|
|
((uint32_t*)row)[0]=((uint32_t*)row)[1] = |
|
|
|
|
if (!(((uint32_t*)row)[1] | |
|
|
|
|
((uint32_t*)row)[2] | |
|
|
|
|
((uint32_t*)row)[3] | |
|
|
|
|
row[1])) { |
|
|
|
|
temp = (row[0] << 3) & 0xffff; |
|
|
|
|
temp += temp << 16; |
|
|
|
|
((uint32_t*)row)[0]=((uint32_t*)row)[1] = |
|
|
|
|
((uint32_t*)row)[2]=((uint32_t*)row)[3] = temp; |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
}else{ |
|
|
|
|
if (!(row[1]|row[2]|row[3]|row[4]|row[5]|row[6]|row[7])) { |
|
|
|
|
row[0]=row[1]=row[2]=row[3]=row[4]=row[5]=row[6]=row[7]= row[0] << 3; |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|