summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/plugins/gst_plugins_cache.json42
-rw-r--r--gst-libs/gst/audio/gstaudiodecoder.c24
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;