summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorAlessandro Decina <alessandro.d@gmail.com>2015-12-14 14:23:20 +1100
committerAlessandro Decina <alessandro.d@gmail.com>2015-12-16 17:03:03 +1100
commit07bf3796aa69f625d1503ab4a3cd013df832fa72 (patch)
tree6ec1fda5063e11d0d67c51ff0fa71839cc1b173f /sys
parent8ae003326157438c12c45589e050c5f446723f61 (diff)
downloadgstreamer-plugins-bad-07bf3796aa69f625d1503ab4a3cd013df832fa72.tar.gz
applemedia: vtdec: decouple outputting textures from outputting RGBA
We're going to be able to output NV12 textures soon.
Diffstat (limited to 'sys')
-rw-r--r--sys/applemedia/vtdec.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/sys/applemedia/vtdec.c b/sys/applemedia/vtdec.c
index 54640aeb2..bba3b28c0 100644
--- a/sys/applemedia/vtdec.c
+++ b/sys/applemedia/vtdec.c
@@ -259,6 +259,8 @@ gst_vtdec_negotiate (GstVideoDecoder * decoder)
GstGLContext *context;
GstVtdec *vtdec;
gboolean ret = TRUE;
+ GstCapsFeatures *features = NULL;
+ gboolean output_textures;
vtdec = GST_VTDEC (decoder);
templcaps =
@@ -275,16 +277,21 @@ gst_vtdec_negotiate (GstVideoDecoder * decoder)
structure = gst_caps_get_structure (caps, 0);
s = gst_structure_get_string (structure, "format");
format = gst_video_format_from_string (s);
- gst_caps_unref (caps);
+ features = gst_caps_get_features (caps, 0);
+ if (features)
+ features = gst_caps_features_copy (features);
output_state = gst_video_decoder_set_output_state (GST_VIDEO_DECODER (vtdec),
format, vtdec->video_info.width, vtdec->video_info.height,
vtdec->input_state);
output_state->caps = gst_video_info_to_caps (&output_state->info);
- if (output_state->info.finfo->format == GST_VIDEO_FORMAT_RGBA) {
- gst_caps_set_features (output_state->caps, 0,
- gst_caps_features_new (GST_CAPS_FEATURE_MEMORY_GL_MEMORY, NULL));
+ if (features) {
+ gst_caps_set_features (output_state->caps, 0, features);
+ output_textures =
+ gst_caps_features_contains (features,
+ GST_CAPS_FEATURE_MEMORY_GL_MEMORY);
}
+ gst_caps_unref (caps);
prevcaps = gst_pad_get_current_caps (decoder->srcpad);
if (!prevcaps || !gst_caps_is_equal (prevcaps, output_state->caps)) {
@@ -303,7 +310,7 @@ gst_vtdec_negotiate (GstVideoDecoder * decoder)
vtdec->texture_cache = NULL;
}
- if (output_state->info.finfo->format == GST_VIDEO_FORMAT_RGBA)
+ if (output_textures)
setup_texture_cache (vtdec, context);
}
}