auto-unpack RAD in affine

This commit is contained in:
John Cupitt 2014-01-22 10:02:38 +00:00
parent 1c4c9bd48e
commit bf9fc7f855
3 changed files with 17 additions and 7 deletions

View File

@ -1,3 +1,6 @@
22/1/14 started 7.38.2
- auto RAD decode for affine
19/1/14 started 7.38.1
- bump soname, thanks benjamin
- better conversion to and from scrgb/xyz for rad (hdr)

View File

@ -2,7 +2,7 @@
# also update the version number in the m4 macros below
AC_INIT([vips], [7.38.1], [vipsip@jiscmail.ac.uk])
AC_INIT([vips], [7.38.2], [vipsip@jiscmail.ac.uk])
# required for gobject-introspection
AC_PREREQ(2.62)
@ -17,7 +17,7 @@ AC_CONFIG_MACRO_DIR([m4])
# user-visible library versioning
m4_define([vips_major_version], [7])
m4_define([vips_minor_version], [38])
m4_define([vips_micro_version], [1])
m4_define([vips_micro_version], [2])
m4_define([vips_version],
[vips_major_version.vips_minor_version.vips_micro_version])
@ -37,7 +37,7 @@ VIPS_VERSION_STRING=$VIPS_VERSION-`date`
# binary interface changes not backwards compatible?: reset age to 0
LIBRARY_CURRENT=37
LIBRARY_REVISION=0
LIBRARY_REVISION=1
LIBRARY_AGE=0
# patched into include/vips/version.h

View File

@ -79,6 +79,8 @@
* 14/12/12
* - redone as a class
* - added input space translation
* 22/1/14
* - auto RAD decode
*/
/*
@ -392,7 +394,7 @@ vips_affine_build( VipsObject *object )
if( VIPS_OBJECT_CLASS( vips_affine_parent_class )->build( object ) )
return( -1 );
if( vips_check_coding_noneorlabq( class->nickname, resample->in ) )
if( vips_check_coding_known( class->nickname, resample->in ) )
return( -1 );
if( vips_check_vector_length( class->nickname,
affine->matrix->n, 4 ) )
@ -463,23 +465,28 @@ vips_affine_build( VipsObject *object )
return( -1 );
}
/* Unpack labq for processing.
/* Unpack for processing.
*/
if( in->Coding == VIPS_CODING_LABQ ) {
if( vips_LabQ2LabS( in, &t[0], NULL ) )
return( -1 );
in = t[0];
}
else if( in->Coding == VIPS_CODING_RAD ) {
if( vips_rad2float( in, &t[1], NULL ) )
return( -1 );
in = t[1];
}
/* Add new pixels around the input so we can interpolate at the edges.
*/
if( vips_embed( in, &t[1],
if( vips_embed( in, &t[2],
window_offset, window_offset,
in->Xsize + window_size, in->Ysize + window_size,
"extend", VIPS_EXTEND_COPY,
NULL ) )
return( -1 );
in = t[1];
in = t[2];
/* Normally SMALLTILE ... except if this is a size up/down affine.
*/