From 251400a69b6f5e2dc39a4cc9d86c472a872d82c3 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Fri, 7 Jan 2011 13:04:11 +0100 Subject: [PATCH] encodebin: Add missing-plugin support https://bugzilla.gnome.org/show_bug.cgi?id=638903 --- gst/encoding/gstencodebin.c | 18 ++++++++++++++++++ gst/encoding/gstencodebin.h | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/gst/encoding/gstencodebin.c b/gst/encoding/gstencodebin.c index 311d8d3020..ada95f8f5f 100644 --- a/gst/encoding/gstencodebin.c +++ b/gst/encoding/gstencodebin.c @@ -94,6 +94,12 @@ * the GOP will be decoded/reencoded when needed to produce an encoded output * that fits exactly within the request GstSegment. * + * + * Missing plugin support. If a #GstElement is missing to encode/mux to the + * request profile formats, a missing-plugin #GstMessage will be posted on the + * #GstBus, allowing systems that support the missing-plugin system to offer the + * user a way to install the missing element. + * * * */ @@ -1259,6 +1265,11 @@ splitter_encoding_failure: no_encoder: GST_ERROR_OBJECT (ebin, "Couldn't create encoder for format %" GST_PTR_FORMAT, format); + /* missing plugin support */ + gst_element_post_message (GST_ELEMENT_CAST (ebin), + gst_missing_encoder_message_new (GST_ELEMENT_CAST (ebin), format)); + GST_ELEMENT_ERROR (ebin, CORE, MISSING_PLUGIN, (NULL), + ("Couldn't create encoder for format %" GST_PTR_FORMAT, format)); goto cleanup; no_muxer_pad: @@ -1456,6 +1467,13 @@ no_muxer: { GST_WARNING ("No available muxer for %" GST_PTR_FORMAT, gst_encoding_profile_get_format (ebin->profile)); + /* missing plugin support */ + gst_element_post_message (GST_ELEMENT_CAST (ebin), + gst_missing_encoder_message_new (GST_ELEMENT_CAST (ebin), + gst_encoding_profile_get_format (ebin->profile))); + GST_ELEMENT_ERROR (ebin, CORE, MISSING_PLUGIN, (NULL), + ("No available muxer for format %" GST_PTR_FORMAT, + gst_encoding_profile_get_format (ebin->profile))); return FALSE; } diff --git a/gst/encoding/gstencodebin.h b/gst/encoding/gstencodebin.h index 8082817de3..2d594b0f6d 100644 --- a/gst/encoding/gstencodebin.h +++ b/gst/encoding/gstencodebin.h @@ -22,7 +22,7 @@ #define __GST_ENCODEBIN_H__ #include -#include +#include #include "gstencode-marshal.h" #define GST_TYPE_ENCODE_BIN (gst_encode_bin_get_type()) -- 2.34.1