Hi All,
I have written a new "effect" for geometrictransform. It does image rotation. The code is appended below. If there is any interest, I will do the work to push it upstream. But I need a mentor to help guide the way. On the code itself. I modified the "circle" element, to do rotation. The changes were confined to the "map" function. I used the same parameters, but with different meaning. Thanks, Bert Douglas ------------------------------------------------------------------------ static gboolean circle_map (GstGeometricTransform * gt, gint x, gint y, gdouble * in_x, gdouble * in_y) { //GstCircleGeometricTransform *cgt = GST_CIRCLE_GEOMETRIC_TRANSFORM_CAST (gt); GstCircle *circle = GST_CIRCLE_CAST (gt); gint w, h; gdouble pad, sa; gdouble cix, ciy, cox, coy; // centers, in/out x/y gdouble ai, ao, ar; // angles, in/out/rotate (radians) gdouble r; // radius gdouble xi, yi, xo, yo; // positions in/out x/y // input and output image height and width w = gt->width; h = gt->height; // our parameters pad = circle->height; // padding on bottom and right of input image ar = circle->angle * M_PI / 180.0; // angle of rotation, degrees to radians sa = circle->spread_angle; // not used // get in and out centers cox = 0.5 * w; coy = 0.5 * h; cix = 0.5 * (w - pad); ciy = 0.5 * (h - pad); // convert output image position to polar form xo = x - cox; yo = y - coy; ao = atan2 (yo, xo); r = sqrt (xo * xo + yo * yo); // perform rotation backward to get input image rotation // this seems wrong, but rotation from in-->out is counterclockwise ai = ao + ar; // back to rectangular for input image position xi = r * cos (ai); yi = r * sin (ai); // restore center offset, return values to caller *in_x = xi + cix; *in_y = yi + ciy; GST_DEBUG_OBJECT (circle, "Inversely mapped %d %d into %lf %lf", x, y, *in_x, *in_y); return TRUE; } ------------------------------------------------------------------------------ This SF.net Dev2Dev email is sponsored by: Show off your parallel programming skills. Enter the Intel(R) Threading Challenge 2010. http://p.sf.net/sfu/intel-thread-sfd _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
On Thu, Sep 2, 2010 at 9:45 AM, Bert Douglas <[hidden email]> wrote: Hi All, Great! I can help you getting this in. Can you provide this as a git patch in bugzilla? In case you've never done this before, I could guide you through the details so you'd learn how to do it. I'm available on #gstreamer on freenode as 'thiagoss'. You can talk to me there or send me a private mail.
-- Thiago Sousa Santos ------------------------------------------------------------------------------ This SF.net Dev2Dev email is sponsored by: Show off your parallel programming skills. Enter the Intel(R) Threading Challenge 2010. http://p.sf.net/sfu/intel-thread-sfd _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |