rsvgoverlay with cairo gl back end

pneves pneves at airborneprojects.com
Tue Aug 30 09:10:59 UTC 2016


Hello

I am trying to wrap my head around on how to use the cairo gl backend with
opengl. I have hacked around an integration of cairo and Gstreamer Open GL
constructs and a cairo surface. Basically it draws to an openGL texture. 

 GstGLContext *context = GST_GL_BASE_FILTER(overlay)->context;
    GstGLDisplay *current_display = gst_gl_context_get_display(context);
    void* display_ptr = (void*) gst_gl_display_get_handle(current_display);
    if (display_ptr == NULL)
        return FALSE;
    //
    cairo_device_t* device = cairo_glx_device_create(display_ptr,
            *((GLXContext*) gst_gl_context_get_gl_context(context)));
    overlay->image_width = 1920;
    overlay->image_height = 1080;
    surface = cairo_gl_surface_create_for_texture(device,
            CAIRO_CONTENT_COLOR_ALPHA, texture, 1920, 1080);

    cairo_device_destroy(device);

The problem is I am a bit lost about how I can overlay this texture in a
normal opengl stream. I have looked into gst_gl_filter_draw_fullscreen_quad
and gstgldeinterlace's way of binding to a texture but I am not really sure
of the correct way to do. 

I think that I always need to do the cairo operations inside the rendering
thread, and that is why most filtering functions point to a callback.
Correct me if I am wrong but I cannot easily find documentation.

Best regards
Paulo Neves

Best regards
Paulo Neves





--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/rsvgoverlay-with-cairo-gl-back-end-tp4679281.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.


More information about the gstreamer-devel mailing list