cache->ctx = gst_object_ref (ctx);
gst_video_info_init (&cache->input_info);
- cache->convert = gst_gl_color_convert_new (cache->ctx);
- cache->configured = FALSE;
#if HAVE_IOS
CFMutableDictionaryRef cache_attrs =
gst_object_unref (cache->pool);
#endif
#endif
- gst_object_unref (cache->convert);
gst_object_unref (cache->ctx);
if (cache->in_caps)
gst_caps_unref (cache->in_caps);
gst_caps_features_add (features, GST_CAPS_FEATURE_MEMORY_GL_MEMORY);
gst_video_info_from_caps (&cache->input_info, in_caps);
- cache->configured = FALSE;
if (cache->in_caps)
gst_caps_unref (cache->in_caps);
if (cache->out_caps)
return;
}
- if (!cache->configured) {
- cache->in_caps = gst_caps_make_writable (cache->in_caps);
-#if HAVE_IOS
- gst_caps_set_simple (cache->in_caps, "texture-target", G_TYPE_STRING, GST_GL_TEXTURE_TARGET_2D_STR, NULL);
-#else
- gst_caps_set_simple (cache->in_caps, "texture-target", G_TYPE_STRING, GST_GL_TEXTURE_TARGET_RECTANGLE_STR, NULL);
-#endif
- gst_caps_set_simple (cache->out_caps, "texture-target", G_TYPE_STRING, "2D", NULL);
-
- if (!gst_gl_color_convert_set_caps (cache->convert, cache->in_caps, cache->out_caps)) {
- if (mem1)
- gst_memory_unref (mem1);
- if (mem2)
- gst_memory_unref (mem2);
- gst_buffer_unref (buffer);
-
- return;
- }
-
- cache->configured = TRUE;
- }
-
gst_buffer_append_memory (buffer, mem1);
if (mem2)
gst_buffer_append_memory (buffer, mem2);
- data->output_buffer = gst_gl_color_convert_perform (cache->convert, buffer);
- gst_buffer_unref (buffer);
+ data->output_buffer = buffer;
}
GstBuffer *
CFSTR ("RequireHardwareAcceleratedVideoDecoder");
#endif
-#define GST_VTDEC_VIDEO_FORMAT_STR "NV12"
-
#define VIDEO_SRC_CAPS \
- "video/x-raw(" GST_CAPS_FEATURE_MEMORY_GL_MEMORY "), " \
- "format = (string) RGBA, " \
- "width = " GST_VIDEO_SIZE_RANGE ", " \
- "height = " GST_VIDEO_SIZE_RANGE ", " \
- "framerate = " GST_VIDEO_FPS_RANGE ", " \
- "texture-target = (string) 2D " \
- " ; " \
- GST_VIDEO_CAPS_MAKE(GST_VTDEC_VIDEO_FORMAT_STR) ";"
+ GST_VIDEO_CAPS_MAKE_WITH_FEATURES(GST_CAPS_FEATURE_MEMORY_GL_MEMORY,\
+ "NV12") ", " \
+ "texture-target = (string) rectangle;" \
+ GST_VIDEO_CAPS_MAKE("NV12") ";"
G_DEFINE_TYPE (GstVtdec, gst_vtdec, GST_TYPE_VIDEO_DECODER);
output_textures =
gst_caps_features_contains (features,
GST_CAPS_FEATURE_MEMORY_GL_MEMORY);
+ if (output_textures)
+ gst_caps_set_simple (output_state->caps,
+ "texture-target", G_TYPE_STRING, GST_GL_TEXTURE_TARGET_RECTANGLE_STR,
+ NULL);
}
gst_caps_unref (caps);