[Hdrflow-svn] SF.net SVN: hdrflow: [360] trunk/lib/openlibraries/src/openimagelib/il/ utility.cpp
Status: Pre-Alpha
Brought to you by:
glslang
From: <gl...@us...> - 2007-10-18 20:30:14
|
Revision: 360 http://hdrflow.svn.sourceforge.net/hdrflow/?rev=360&view=rev Author: glslang Date: 2007-10-18 13:30:13 -0700 (Thu, 18 Oct 2007) Log Message: ----------- + merge from olibs cvs Modified Paths: -------------- trunk/lib/openlibraries/src/openimagelib/il/utility.cpp Modified: trunk/lib/openlibraries/src/openimagelib/il/utility.cpp =================================================================== --- trunk/lib/openlibraries/src/openimagelib/il/utility.cpp 2007-10-14 14:46:13 UTC (rev 359) +++ trunk/lib/openlibraries/src/openimagelib/il/utility.cpp 2007-10-18 20:30:13 UTC (rev 360) @@ -576,25 +576,37 @@ pointer dst = dst_img->data( ); size_type dst_rem = dst_img->pitch( ) - dst_img->linesize( ); + size_type y_src_rem = src_img->pitch( ) - src_img->linesize( ); int uv_offset; + const_pointer pu = src_img->data( 1 ); + int ppu = src_img->pitch( 1 ); + const_pointer pv = src_img->data( 2 ); + int ppv = src_img->pitch( 2 ); + + const_pointer Y = src_img->data( 0 ); + const_pointer U, V; + + int mx = dst_width * x_factor; + int x = 0; + for ( int y = 0; y < dst_height; y ++ ) { - const_pointer Y = src_img->data( 0 ) + ( y * src_img->pitch( 0 ) ); - const_pointer U = src_img->data( 1 ) + ( ( y * y_factor ) >> 8 ) * src_img->pitch( 1 ); - const_pointer V = src_img->data( 2 ) + ( ( y * y_factor ) >> 8 ) * src_img->pitch( 2 ); + U = pu + ( ( y * y_factor ) >> 8 ) * ppu; + V = pv + ( ( y * y_factor ) >> 8 ) * ppv; - for ( int x = 0; x < dst_width; x ++ ) + for( x = 0; x < mx; x += x_factor ) { - uv_offset = ( x * x_factor ) >> 8; - *dst ++ = ( unsigned char )( *Y ++ ); - *dst ++ = ( unsigned char )( U[ uv_offset ] ); - *dst ++ = ( unsigned char )( *Y ++ ); - *dst ++ = ( unsigned char )( V[ uv_offset ] ); - } + uv_offset = x >> 8; + *dst ++ = *Y ++; + *dst ++ = U[ uv_offset ]; + *dst ++ = *Y ++; + *dst ++ = V[ uv_offset ]; + } dst += dst_rem; + Y += y_src_rem; } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |