static gboolean gst_video_test_src_query (GstBaseSrc * bsrc, GstQuery * query) { gboolean res; GstVideoTestSrc *src; src = GST_VIDEO_TEST_SRC (bsrc); switch (GST_QUERY_TYPE (query)) { case GST_QUERY_CONVERT: { GstFormat src_fmt, dest_fmt; gint64 src_val, dest_val; gst_query_parse_convert (query, &src_fmt, &src_val, &dest_fmt, &dest_val); res = gst_video_info_convert (&src->info, src_fmt, src_val, dest_fmt, &dest_val); gst_query_set_convert (query, src_fmt, src_val, dest_fmt, dest_val); break; } default: res = GST_BASE_SRC_CLASS (parent_class)->query (bsrc, query); break; } return res; }
static gboolean gst_gl_test_src_query (GstBaseSrc * bsrc, GstQuery * query) { gboolean res = FALSE; GstGLTestSrc *src; src = GST_GL_TEST_SRC (bsrc); switch (GST_QUERY_TYPE (query)) { case GST_QUERY_CONTEXT: { const gchar *context_type; GstContext *context, *old_context; res = gst_gl_handle_context_query ((GstElement *) src, query, &src->display, &src->other_context); if (src->display) gst_gl_display_filter_gl_api (src->display, SUPPORTED_GL_APIS); gst_query_parse_context_type (query, &context_type); if (g_strcmp0 (context_type, "gst.gl.local_context") == 0) { GstStructure *s; gst_query_parse_context (query, &old_context); if (old_context) context = gst_context_copy (old_context); else context = gst_context_new ("gst.gl.local_context", FALSE); s = gst_context_writable_structure (context); gst_structure_set (s, "context", GST_TYPE_GL_CONTEXT, src->context, NULL); gst_query_set_context (query, context); gst_context_unref (context); res = src->context != NULL; } GST_LOG_OBJECT (src, "context query of type %s %i", context_type, res); if (res) return res; break; } case GST_QUERY_CONVERT: { GstFormat src_fmt, dest_fmt; gint64 src_val, dest_val; gst_query_parse_convert (query, &src_fmt, &src_val, &dest_fmt, &dest_val); res = gst_video_info_convert (&src->out_info, src_fmt, src_val, dest_fmt, &dest_val); gst_query_set_convert (query, src_fmt, src_val, dest_fmt, dest_val); return res; } default: break; } return GST_BASE_SRC_CLASS (parent_class)->query (bsrc, query); }