
Hi,
I have a question:
I need to create a view that hold 12 bit channel data packed as follow:
0000R0000G0000B0000;0000R0000G0000B0000;0000R0000G0000B0000;....
Meaning that each channel is shifted by 4 bits.
The pixel is holden on 48 bits = 6 bytes.
I have created my view like as follow:
/// My 12 bits special rgb packed to 6 bytes
typedef const packed_channel_reference

Hi Eloi, I'm not sure if I can following here. How many channels do
you have? How big is the channel size including the the 4 bits?
Couldn't you just create a 64bit ( assuming 4 channels by ( 12 + 4
bits ) per channels ) pixel type and when looping through all channels
per pixel you blend out ( using & operator with 0x0FFF ) the unwanted
bits?
Sorry, when my explanation is a bit cryptic. Kinda busy right now.
Regards,
Christian
On Wed, Dec 16, 2009 at 5:17 AM, Eloi Du Bois
Hi,
I have a question: I need to create a view that hold 12 bit channel data packed as follow:
0000R0000G0000B0000;0000R0000G0000B0000;0000R0000G0000B0000;.... Meaning that each channel is shifted by 4 bits. The pixel is holden on 48 bits = 6 bytes.
I have created my view like as follow: /// My 12 bits special rgb packed to 6 bytes typedef const packed_channel_reference
rgb12_packed_channel0_t; typedef const packed_channel_reference rgb12_packed_channel1_t; typedef const packed_channel_reference rgb12_packed_channel2_t; typedef mpl::vector3 rgb12_packed_channels_t; typedef packed_pixel , rgb12_packed_channels_t, rgb_layout_t> rgb12_packed_pixel_t; typedef view_type_from_pixel ::type rgb12_packed_view_t; The thing is that I would now like to copy data to another rgb16_view_t... But this is not working because, in my opinion, 48 bits is between 32 and 64. I have been thinking of the solution that Christian gave me and that consist on doing something like this: T p( pData, 0 );
for( typename DST_V::y_coord_t y = 0; y < height; ++y ) { typename DST_V::x_iterator it = dst.row_begin( y );
for( typename DST_V::x_coord_t x = 0; x < width; ++x ) { color_convert( *p, *it ); ++p; ++it; } }
where T is a bit_aligned_pixel_iterator and DST_V=rgb16_view_t but this can't be working on my case because channels are shifted by 4 bits !
If you could help me, I would really appreciate. I think all those cases are a good robustness test for gil.
Regards, Eloi.
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users

Hi Eloi,
Try calling copy_and_convert_pixels. I believe it does what you want.
Lubomir
From: boost-users-bounces@lists.boost.org [mailto:boost-users-bounces@lists.boost.org] On Behalf Of Eloi Du Bois
Sent: Wednesday, December 16, 2009 2:18 AM
To: boost-users@lists.boost.org
Subject: [Boost-users] [GIL] Packing to 6 bytes
Hi,
I have a question:
I need to create a view that hold 12 bit channel data packed as follow:
0000R0000G0000B0000;0000R0000G0000B0000;0000R0000G0000B0000;....
Meaning that each channel is shifted by 4 bits.
The pixel is holden on 48 bits = 6 bytes.
I have created my view like as follow:
/// My 12 bits special rgb packed to 6 bytes
typedef const packed_channel_reference

Thank you Lubomir, I will check this soon :)
Happy new year !
Eloi.
2010/1/4 Lubomir Bourdev
Hi Eloi,
Try calling copy_and_convert_pixels. I believe it does what you want.
Lubomir
*From:* boost-users-bounces@lists.boost.org [mailto: boost-users-bounces@lists.boost.org] *On Behalf Of *Eloi Du Bois *Sent:* Wednesday, December 16, 2009 2:18 AM *To:* boost-users@lists.boost.org *Subject:* [Boost-users] [GIL] Packing to 6 bytes
Hi,
I have a question: I need to create a view that hold 12 bit channel data packed as follow:
0000R0000G0000B0000;0000R0000G0000B0000;0000R0000G0000B0000;.... Meaning that each channel is shifted by 4 bits. The pixel is holden on 48 bits = 6 bytes.
I have created my view like as follow: /// My 12 bits special rgb packed to 6 bytes typedef const packed_channel_reference
rgb12_packed_channel0_t; typedef const packed_channel_reference rgb12_packed_channel1_t; typedef const packed_channel_reference rgb12_packed_channel2_t; typedef mpl::vector3 rgb12_packed_channels_t; typedef packed_pixel , rgb12_packed_channels_t, rgb_layout_t> rgb12_packed_pixel_t; typedef view_type_from_pixel ::type rgb12_packed_view_t; The thing is that I would now like to copy data to another rgb16_view_t... But this is not working because, in my opinion, 48 bits is between 32 and 64. I have been thinking of the solution that Christian gave me and that consist on doing something like this: T p( pData, 0 );
for( typename DST_V::y_coord_t y = 0; y < height; ++y ) { typename DST_V::x_iterator it = dst.row_begin( y );
for( typename DST_V::x_coord_t x = 0; x < width; ++x ) { color_convert( *p, *it ); ++p; ++it; } }
where T is a bit_aligned_pixel_iterator and DST_V=rgb16_view_t but this can't be working on my case because channels are shifted by 4 bits !
If you could help me, I would really appreciate. I think all those cases are a good robustness test for gil.
Regards, Eloi.
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org http://lists.boost.org/mailman/listinfo.cgi/boost-users
participants (3)
-
Christian Henning
-
Eloi Du Bois
-
Lubomir Bourdev