diff options
author | Alessandro Decina <alessandro.d@gmail.com> | 2015-12-14 14:23:20 +1100 |
---|---|---|
committer | Alessandro Decina <alessandro.d@gmail.com> | 2015-12-16 17:03:03 +1100 |
commit | 07bf3796aa69f625d1503ab4a3cd013df832fa72 (patch) | |
tree | 6ec1fda5063e11d0d67c51ff0fa71839cc1b173f /sys | |
parent | 8ae003326157438c12c45589e050c5f446723f61 (diff) | |
download | gstreamer-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.c | 17 |
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); } } |