Esempio n. 1
0
static void
update_image (APP_STATE_T * state, GstBuffer * buffer)
{
    GstVideoGLTextureUploadMeta *meta = NULL;

    if (state->current_buffer) {
        gst_buffer_unref (state->current_buffer);
    } else {
        /* Setup the model world */
        init_model_proj (state);
        TRACE_VC_MEMORY ("after init_model_proj");

        /* initialize the OGLES texture(s) */
        init_textures (state, buffer);
        TRACE_VC_MEMORY ("after init_textures");
    }
    state->current_buffer = gst_buffer_ref (buffer);

    TRACE_VC_MEMORY_ONCE_FOR_ID ("before GstVideoGLTextureUploadMeta", gid0);

    if (state->can_avoid_upload) {
        GstMemory *mem = gst_buffer_peek_memory (state->current_buffer, 0);
        g_assert (gst_is_gl_memory (mem));
        state->tex = ((GstGLMemory *) mem)->tex_id;
    } else if ((meta = gst_buffer_get_video_gl_texture_upload_meta (buffer))) {
        if (meta->n_textures == 1) {
            guint ids[4] = { state->tex, 0, 0, 0 };
            if (!gst_video_gl_texture_upload_meta_upload (meta, ids)) {
                GST_WARNING ("failed to upload to texture");
            }
        }
    }

    TRACE_VC_MEMORY_ONCE_FOR_ID ("after GstVideoGLTextureUploadMeta", gid1);
}
Esempio n. 2
0
static void
render_scene (APP_STATE_T * state)
{
    update_model (state);
    redraw_scene (state);
    TRACE_VC_MEMORY_ONCE_FOR_ID ("after render_scene", gid2);
}
Esempio n. 3
0
static void
update_image (APP_STATE_T * state, GstBuffer * buffer)
{
  GstMemory *mem = gst_buffer_peek_memory (buffer, 0);

  if (state->current_mem) {
    gst_memory_unref (state->current_mem);
  }
  state->current_mem = gst_memory_ref (mem);

  TRACE_VC_MEMORY_ONCE_FOR_ID ("before glEGLImageTargetTexture2DOES", gid0);

  glBindTexture (GL_TEXTURE_2D, state->tex);
  glEGLImageTargetTexture2DOES (GL_TEXTURE_2D,
      gst_egl_image_memory_get_image (mem));

  TRACE_VC_MEMORY_ONCE_FOR_ID ("after glEGLImageTargetTexture2DOES", gid1);
}