`gst_audio_format_info_fill_silence()` not properly checking the validity of its
input may lead it into an infinite loop.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2800>
{
guint8 *dptr = dest;
- g_return_if_fail (info != NULL);
+ g_return_if_fail (GST_AUDIO_FORMAT_INFO_IS_VALID_RAW (info));
g_return_if_fail (dest != NULL);
if (info->flags & GST_AUDIO_FORMAT_FLAG_FLOAT ||
GST_AUDIO_API
GType gst_audio_format_info_get_type (void);
+/**
+ * GST_AUDIO_FORMAT_INFO_IS_VALID_RAW:
+ *
+ * Tests that the given #GstAudioFormatInfo represents a valid un-encoded
+ * format.
+ *
+ * Since: 1.22
+ */
+#define GST_AUDIO_FORMAT_INFO_IS_VALID_RAW(info) \
+ (info != NULL && (info)->format > GST_AUDIO_FORMAT_ENCODED && \
+ (info)->width > 0 && (info)->depth > 0)
+
#define GST_AUDIO_FORMAT_INFO_FORMAT(info) ((info)->format)
#define GST_AUDIO_FORMAT_INFO_NAME(info) ((info)->name)
#define GST_AUDIO_FORMAT_INFO_FLAGS(info) ((info)->flags)