2 ** Planar 2 Chunky routine (C) 2009 Fredrik Wikstrom
5 static void p2c_2 (const uint16_t *planar
, uint32_t plane_size
, uint8_t *chunky
,
6 uint32_t width
, uint32_t height
)
9 const uint16_t *pp1
, *pp2
;
10 uint32_t cd1
, cd2
, cd3
, cd4
;
13 cp
= (uint32_t *)chunky
;
15 pp2
= (const uint16_t *)((const uint8_t *)pp1
+ plane_size
);
16 for (y
= 0; y
< height
; y
++) {
17 for (x
= 0; x
< width
; x
++) {
21 #ifdef WORDS_BIGENDIAN
22 cd1
= ((pd1
<< 9 ) & 0x01000000)|((pd2
<< 10) & 0x02000000);
24 cd2
= ((pd1
<< 13) & 0x01000000)|((pd2
<< 14) & 0x02000000);
26 cd3
= ((pd1
<< 17) & 0x01000000)|((pd2
<< 18) & 0x02000000);
28 cd4
= ((pd1
<< 21) & 0x01000000)|((pd2
<< 22) & 0x02000000);
30 cd1
|= ((pd1
<< 2 ) & 0x00010000)|((pd2
<< 3 ) & 0x00020000);
32 cd2
|= ((pd1
<< 6 ) & 0x00010000)|((pd2
<< 7 ) & 0x00020000);
34 cd3
|= ((pd1
<< 10) & 0x00010000)|((pd2
<< 11) & 0x00020000);
36 cd4
|= ((pd1
<< 14) & 0x00010000)|((pd2
<< 15) & 0x00020000);
38 cd1
|= ((pd1
>> 5 ) & 0x00000100)|((pd2
>> 4 ) & 0x00000200);
40 cd2
|= ((pd1
>> 1 ) & 0x00000100)|((pd2
) & 0x00000200);
42 cd3
|= ((pd1
<< 3 ) & 0x00000100)|((pd2
<< 4 ) & 0x00000200);
44 cd4
|= ((pd1
<< 7 ) & 0x00000100)|((pd2
<< 8 ) & 0x00000200);
46 cd1
|= ((pd1
>> 12) & 0x00000001)|((pd2
>> 11) & 0x00000002);
48 cd2
|= ((pd1
>> 8 ) & 0x00000001)|((pd2
>> 7 ) & 0x00000002);
50 cd3
|= ((pd1
>> 4 ) & 0x00000001)|((pd2
>> 3 ) & 0x00000002);
52 cd4
|= ((pd1
) & 0x00000001)|((pd2
<< 1 ) & 0x00000002);
54 cd1
= ((pd1
>> 7 ) & 0x00000001)|((pd2
>> 6 ) & 0x00000002);
56 cd2
= ((pd1
>> 3 ) & 0x00000001)|((pd2
>> 2 ) & 0x00000002);
58 cd3
= ((pd1
>> 15) & 0x00000001)|((pd2
>> 14) & 0x00000002);
60 cd4
= ((pd1
>> 11) & 0x00000001)|((pd2
>> 10) & 0x00000002);
62 cd1
|= ((pd1
<< 2 ) & 0x00000100)|((pd2
<< 3 ) & 0x00000200);
64 cd2
|= ((pd1
<< 6 ) & 0x00000100)|((pd2
<< 7 ) & 0x00000200);
66 cd3
|= ((pd1
>> 6 ) & 0x00000100)|((pd2
>> 5 ) & 0x00000200);
68 cd4
|= ((pd1
>> 2 ) & 0x00000100)|((pd2
>> 1 ) & 0x00000200);
70 cd1
|= ((pd1
<< 11) & 0x00010000)|((pd2
<< 12) & 0x00020000);
72 cd2
|= ((pd1
<< 15) & 0x00010000)|((pd2
<< 16) & 0x00020000);
74 cd3
|= ((pd1
<< 3 ) & 0x00010000)|((pd2
<< 4 ) & 0x00020000);
76 cd4
|= ((pd1
<< 7 ) & 0x00010000)|((pd2
<< 8 ) & 0x00020000);
78 cd1
|= ((pd1
<< 20) & 0x01000000)|((pd2
<< 21) & 0x02000000);
80 cd2
|= ((pd1
<< 24) & 0x01000000)|((pd2
<< 25) & 0x02000000);
82 cd3
|= ((pd1
<< 12) & 0x01000000)|((pd2
<< 13) & 0x02000000);
84 cd4
|= ((pd1
<< 16) & 0x01000000)|((pd2
<< 17) & 0x02000000);