remove repack code from affine
just done in compat wrapper now
This commit is contained in:
parent
223cb02305
commit
29eed7b2b5
4
TODO
4
TODO
@ -1,7 +1,3 @@
|
|||||||
- some vips8 operators repack labq after processing ... new policy: accept any
|
|
||||||
format and never repack
|
|
||||||
|
|
||||||
|
|
||||||
- seen some leaks from
|
- seen some leaks from
|
||||||
|
|
||||||
vips dzsave --layout google wtc.jpg x
|
vips dzsave --layout google wtc.jpg x
|
||||||
|
@ -4241,14 +4241,22 @@ static int
|
|||||||
im__affinei( VipsImage *in, VipsImage *out,
|
im__affinei( VipsImage *in, VipsImage *out,
|
||||||
VipsInterpolate *interpolate, VipsTransformation *trn )
|
VipsInterpolate *interpolate, VipsTransformation *trn )
|
||||||
{
|
{
|
||||||
VipsImage *x;
|
VipsImage **t = (VipsImage **)
|
||||||
|
vips_object_local_array( VIPS_OBJECT( out ), 2 );
|
||||||
|
|
||||||
VipsArea *oarea;
|
VipsArea *oarea;
|
||||||
|
gboolean repack;
|
||||||
|
|
||||||
oarea = (VipsArea *) vips_array_int_newv( 4,
|
oarea = (VipsArea *) vips_array_int_newv( 4,
|
||||||
trn->oarea.left, trn->oarea.top,
|
trn->oarea.left, trn->oarea.top,
|
||||||
trn->oarea.width, trn->oarea.height );
|
trn->oarea.width, trn->oarea.height );
|
||||||
|
|
||||||
if( vips_affine( in, &x,
|
/* vips7 affine would repack labq and im_benchmark() depends upon
|
||||||
|
* this.
|
||||||
|
*/
|
||||||
|
repack = in->Coding == IM_CODING_LABQ;
|
||||||
|
|
||||||
|
if( vips_affine( in, &t[0],
|
||||||
trn->a, trn->b, trn->c, trn->d,
|
trn->a, trn->b, trn->c, trn->d,
|
||||||
"interpolate", interpolate,
|
"interpolate", interpolate,
|
||||||
"oarea", oarea,
|
"oarea", oarea,
|
||||||
@ -4258,15 +4266,18 @@ im__affinei( VipsImage *in, VipsImage *out,
|
|||||||
vips_area_unref( oarea );
|
vips_area_unref( oarea );
|
||||||
return( -1 );
|
return( -1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
vips_area_unref( oarea );
|
vips_area_unref( oarea );
|
||||||
|
in = t[0];
|
||||||
|
|
||||||
if( im_copy( x, out ) ) {
|
if( repack ) {
|
||||||
g_object_unref( x );
|
if( vips_colourspace( in, &t[1],
|
||||||
return( -1 );
|
VIPS_INTERPRETATION_LABQ, NULL ) )
|
||||||
|
return( -1 );
|
||||||
|
in = t[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
g_object_unref( x );
|
if( vips_image_write( in, out ) )
|
||||||
|
return( -1 );
|
||||||
|
|
||||||
return( 0 );
|
return( 0 );
|
||||||
}
|
}
|
||||||
|
@ -384,7 +384,6 @@ vips_affine_build( VipsObject *object )
|
|||||||
vips_object_local_array( object, 4 );
|
vips_object_local_array( object, 4 );
|
||||||
|
|
||||||
VipsImage *in;
|
VipsImage *in;
|
||||||
gboolean repack;
|
|
||||||
VipsDemandStyle hint;
|
VipsDemandStyle hint;
|
||||||
int window_size;
|
int window_size;
|
||||||
int window_offset;
|
int window_offset;
|
||||||
@ -464,13 +463,11 @@ vips_affine_build( VipsObject *object )
|
|||||||
return( -1 );
|
return( -1 );
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Unpack labq for processing ... we repack after, see below.
|
/* Unpack labq for processing.
|
||||||
*/
|
*/
|
||||||
repack = FALSE;
|
|
||||||
if( in->Coding == VIPS_CODING_LABQ ) {
|
if( in->Coding == VIPS_CODING_LABQ ) {
|
||||||
if( vips_LabQ2LabS( in, &t[0], NULL ) )
|
if( vips_LabQ2LabS( in, &t[0], NULL ) )
|
||||||
return( -1 );
|
return( -1 );
|
||||||
repack = TRUE;
|
|
||||||
in = t[0];
|
in = t[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -505,17 +502,6 @@ vips_affine_build( VipsObject *object )
|
|||||||
in, affine ) )
|
in, affine ) )
|
||||||
return( -1 );
|
return( -1 );
|
||||||
|
|
||||||
if( repack ) {
|
|
||||||
VipsImage *x;
|
|
||||||
|
|
||||||
if( vips_LabS2LabQ( resample->out, &x, NULL ) )
|
|
||||||
return( -1 );
|
|
||||||
|
|
||||||
VIPS_UNREF( resample->out );
|
|
||||||
|
|
||||||
resample->out = x;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Finally: can now set Xoffset/Yoffset.
|
/* Finally: can now set Xoffset/Yoffset.
|
||||||
*/
|
*/
|
||||||
resample->out->Xoffset = affine->trn.odx - affine->trn.oarea.left;
|
resample->out->Xoffset = affine->trn.odx - affine->trn.oarea.left;
|
||||||
|
Loading…
Reference in New Issue
Block a user