// Range of coords is 0 to 100 for coordinates in the image.
// The coordinate locations are clockwise around the image.
- void process(VFrame *output,
- VFrame *input,
- VFrame *temp,
- int mode,
- float x1,
- float y1,
- float x2,
- float y2,
- float x3,
- float y3,
- float x4,
- float y4,
+ void process(VFrame *output, VFrame *input, VFrame *temp, int mode,
+ float x1, float y1, float x2, float y2,
+ float x3, float y3, float x4, float y4,
int forward);
// Do rotation with the affine/perspective transform.
// This removes some of the extremely faint artifacts in the trig rotation.
- void rotate(VFrame *output,
- VFrame *input,
- float angle);
+ void rotate(VFrame *output, VFrame *input, float angle);
void set_matrix(AffineMatrix *matrix);
+// set_matrix:
+// in x1,y1 - x2,y1 out x1,y1 - x2,y2 clockwise
+// | | | |
+// x1,y2 - x2,y2 x4,y4 - x3,y3
+//
+ void set_matrix( double in_x1, double in_y1, double in_x2, double in_y2,
+ double out_x1, double out_y1, double out_x2, double out_y2,
+ double out_x3, double out_y3, double out_x4, double out_y4);
// Set the viewport to transform. The transform is based on the input viewport.
// The output viewport clips the transformed output.
void set_in_viewport(int x, int y, int w, int h);
// Never used
void unset_pivot();
void unset_viewport();
+// default: AF_CUBIC
+ void set_interpolation(int type);
// To use OpenGL for the processing, set to 1
void set_opengl(int value);
void init_packages();
VFrame *input, *output, *temp;
int mode;
- enum
- {
+ enum {
PERSPECTIVE,
SHEER,
STRETCH,
// multiply directly by a matrix.
TRANSFORM
};
+ int interpolation;
+ enum {
+ AF_DEFAULT,
+ AF_NEAREST,
+ AF_LINEAR,
+ AF_CUBIC,
+ AF_MODES
+ };
// arbitrary matrix
AffineMatrix matrix;