diff options
-rw-r--r-- | docs/plugins/gst_plugins_cache.json | 42 | ||||
-rw-r--r-- | gst-libs/gst/audio/gstaudiodecoder.c | 24 |
2 files changed, 65 insertions, 1 deletions
diff --git a/docs/plugins/gst_plugins_cache.json b/docs/plugins/gst_plugins_cache.json index b991083d6..f16c11e2c 100644 --- a/docs/plugins/gst_plugins_cache.json +++ b/docs/plugins/gst_plugins_cache.json @@ -10972,6 +10972,20 @@ "type": "gboolean", "writable": true }, + "max-errors": { + "blurb": "Max consecutive decoder errors before returning flow error", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "10", + "max": "2147483647", + "min": "-1", + "mutable": "null", + "readable": true, + "type": "gint", + "writable": true + }, "min-latency": { "blurb": "Aggregate output data to a minimum of latency time (ns)", "conditionally-available": false, @@ -19525,6 +19539,20 @@ } }, "properties": { + "max-errors": { + "blurb": "Max consecutive decoder errors before returning flow error", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "10", + "max": "2147483647", + "min": "-1", + "mutable": "null", + "readable": true, + "type": "gint", + "writable": true + }, "qos": { "blurb": "Handle Quality-of-Service events from downstream", "conditionally-available": false, @@ -21154,6 +21182,20 @@ } }, "properties": { + "max-errors": { + "blurb": "Max consecutive decoder errors before returning flow error", + "conditionally-available": false, + "construct": false, + "construct-only": false, + "controllable": false, + "default": "10", + "max": "2147483647", + "min": "-1", + "mutable": "null", + "readable": true, + "type": "gint", + "writable": true + }, "min-latency": { "blurb": "Aggregate output data to a minimum of latency time (ns)", "conditionally-available": false, diff --git a/gst-libs/gst/audio/gstaudiodecoder.c b/gst-libs/gst/audio/gstaudiodecoder.c index 028824733..cef4cbbd6 100644 --- a/gst-libs/gst/audio/gstaudiodecoder.c +++ b/gst-libs/gst/audio/gstaudiodecoder.c @@ -142,7 +142,8 @@ enum PROP_0, PROP_LATENCY, PROP_TOLERANCE, - PROP_PLC + PROP_PLC, + PROP_MAX_ERRORS }; #define DEFAULT_LATENCY 0 @@ -150,6 +151,7 @@ enum #define DEFAULT_PLC FALSE #define DEFAULT_DRAINABLE TRUE #define DEFAULT_NEEDS_FORMAT FALSE +#define DEFAULT_MAX_ERRORS GST_AUDIO_DECODER_MAX_ERRORS typedef struct _GstAudioDecoderContext { @@ -408,6 +410,20 @@ gst_audio_decoder_class_init (GstAudioDecoderClass * klass) "Perform packet loss concealment (if supported)", DEFAULT_PLC, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + /** + * GstAudioDecoder:max-errors: + * + * Maximum number of tolerated consecutive decode errors. See + * gst_audio_decoder_set_max_errors() for more details. + * + * Since: 1.18 + */ + g_object_class_install_property (gobject_class, PROP_MAX_ERRORS, + g_param_spec_int ("max-errors", "Max errors", + "Max consecutive decoder errors before returning flow error", + -1, G_MAXINT, DEFAULT_MAX_ERRORS, + G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)); + audiodecoder_class->sink_event = GST_DEBUG_FUNCPTR (gst_audio_decoder_sink_eventfunc); audiodecoder_class->src_event = @@ -3104,6 +3120,9 @@ gst_audio_decoder_get_property (GObject * object, guint prop_id, case PROP_PLC: g_value_set_boolean (value, dec->priv->plc); break; + case PROP_MAX_ERRORS: + g_value_set_int (value, gst_audio_decoder_get_max_errors (dec)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -3128,6 +3147,9 @@ gst_audio_decoder_set_property (GObject * object, guint prop_id, case PROP_PLC: dec->priv->plc = g_value_get_boolean (value); break; + case PROP_MAX_ERRORS: + gst_audio_decoder_set_max_errors (dec, g_value_get_int (value)); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; |