From 4a485200b91bb9ca82c7064b136e8ff35ee5f28b Mon Sep 17 00:00:00 2001 From: gb Date: Wed, 5 May 2010 15:36:25 +0000 Subject: [PATCH] Add gst_vaapidecode_ensure_display() helper for set-caps. --- gst/vaapidecode/gstvaapidecode.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/gst/vaapidecode/gstvaapidecode.c b/gst/vaapidecode/gstvaapidecode.c index 38924fe16e..dd1f2ab613 100644 --- a/gst/vaapidecode/gstvaapidecode.c +++ b/gst/vaapidecode/gstvaapidecode.c @@ -160,11 +160,14 @@ error_commit_buffer: } static gboolean -gst_vaapidecode_create(GstVaapiDecode *decode) +gst_vaapidecode_ensure_display(GstVaapiDecode *decode) { GstVaapiVideoSink *sink; GstVaapiDisplay *display; + if (decode->display) + return TRUE; + /* Look for a downstream vaapisink */ sink = gst_vaapi_video_sink_lookup(GST_ELEMENT(decode)); if (!sink) @@ -175,10 +178,18 @@ gst_vaapidecode_create(GstVaapiDecode *decode) return FALSE; decode->display = g_object_ref(display); + return TRUE; +} + +static gboolean +gst_vaapidecode_create(GstVaapiDecode *decode) +{ + if (!gst_vaapidecode_ensure_display(decode)) + return FALSE; if (decode->use_ffmpeg) decode->decoder = - gst_vaapi_decoder_ffmpeg_new(display, decode->decoder_caps); + gst_vaapi_decoder_ffmpeg_new(decode->display, decode->decoder_caps); return decode->decoder != NULL; }