[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.
|