summaryrefslogtreecommitdiff
path: root/gst/audioconvert
diff options
context:
space:
mode:
authorTim-Philipp Müller <tim@centricular.net>2013-08-23 18:52:44 +0100
committerTim-Philipp Müller <tim@centricular.net>2013-08-23 18:53:48 +0100
commitf448977dbd55c040bc7772cf4a04167af39208a0 (patch)
tree9f8a7c2c4116faa78dae14373d2b6607a11740cc /gst/audioconvert
parentf678411c6e4bd9b9004dc6718a8c5dc9575fde5a (diff)
audioconvert: remove unnecessary deep nesting in fixate function
Makes it easier to read and removes two levels of indentation.
Diffstat (limited to 'gst/audioconvert')
-rw-r--r--gst/audioconvert/gstaudioconvert.c138
1 files changed, 69 insertions, 69 deletions
diff --git a/gst/audioconvert/gstaudioconvert.c b/gst/audioconvert/gstaudioconvert.c
index 7217fdc56..30cd215e2 100644
--- a/gst/audioconvert/gstaudioconvert.c
+++ b/gst/audioconvert/gstaudioconvert.c
@@ -443,6 +443,7 @@ gst_audio_convert_fixate_format (GstBaseTransform * base, GstStructure * ins,
const GValue *format;
const GstAudioFormatInfo *in_info, *out_info = NULL;
GstAudioFormatFlags in_flags, out_flags = 0;
+ gint i, len;
in_format = gst_structure_get_string (ins, "format");
if (!in_format)
@@ -453,6 +454,10 @@ gst_audio_convert_fixate_format (GstBaseTransform * base, GstStructure * ins,
if (format == NULL)
return;
+ /* nothing to fixate? */
+ if (!GST_VALUE_HOLDS_LIST (format))
+ return;
+
in_info =
gst_audio_format_get_info (gst_audio_format_from_string (in_format));
if (!in_info)
@@ -462,77 +467,72 @@ gst_audio_convert_fixate_format (GstBaseTransform * base, GstStructure * ins,
in_flags &= ~(GST_AUDIO_FORMAT_FLAG_UNPACK);
in_flags &= ~(GST_AUDIO_FORMAT_FLAG_SIGNED);
- if (GST_VALUE_HOLDS_LIST (format)) {
- gint i, len;
-
- len = gst_value_list_get_size (format);
- for (i = 0; i < len; i++) {
- const GValue *val;
- const gchar *fname;
-
- val = gst_value_list_get_value (format, i);
- if (G_VALUE_HOLDS_STRING (val)) {
- const GstAudioFormatInfo *t_info;
- GstAudioFormatFlags t_flags;
-
- fname = g_value_get_string (val);
- t_info =
- gst_audio_format_get_info (gst_audio_format_from_string (fname));
- if (!t_info)
- continue;
- /* accept input format immediately */
- if (strcmp (fname, in_format) == 0) {
- out_info = t_info;
- break;
- }
-
- t_flags = GST_AUDIO_FORMAT_INFO_FLAGS (t_info);
- t_flags &= ~(GST_AUDIO_FORMAT_FLAG_UNPACK);
- t_flags &= ~(GST_AUDIO_FORMAT_FLAG_SIGNED);
-
- if (GST_AUDIO_FORMAT_INFO_DEPTH (t_info) ==
- GST_AUDIO_FORMAT_INFO_DEPTH (in_info) && (!out_info
- || GST_AUDIO_FORMAT_INFO_DEPTH (out_info) !=
- GST_AUDIO_FORMAT_INFO_DEPTH (in_info)
- || (t_flags == in_flags && out_flags != in_flags))) {
- /* Prefer to use the first format that has the same depth with the same
- * flags, and if none with the same flags exist use the first other one
- * that has the same depth */
- out_info = t_info;
- out_flags = t_flags;
- } else if (GST_AUDIO_FORMAT_INFO_DEPTH (t_info) >=
- GST_AUDIO_FORMAT_INFO_DEPTH (in_info) && (!out_info
- || GST_AUDIO_FORMAT_INFO_DEPTH (in_info) >
- GST_AUDIO_FORMAT_INFO_DEPTH (out_info)
- || (GST_AUDIO_FORMAT_INFO_DEPTH (out_info) >=
- GST_AUDIO_FORMAT_INFO_DEPTH (in_info) && t_flags == in_flags
- && out_flags != in_flags))) {
- /* Otherwise use the first format that has a higher depth with the same flags,
- * if none with the same flags exist use the first other one that has a higher
- * depth */
- out_info = t_info;
- out_flags = t_flags;
- } else if (!out_info
- || (GST_AUDIO_FORMAT_INFO_DEPTH (t_info) >
- GST_AUDIO_FORMAT_INFO_DEPTH (out_info)
- && GST_AUDIO_FORMAT_INFO_DEPTH (out_info) <
- GST_AUDIO_FORMAT_INFO_DEPTH (in_info)) || (t_flags == in_flags
- && out_flags != in_flags
- && GST_AUDIO_FORMAT_INFO_DEPTH (out_info) ==
- GST_AUDIO_FORMAT_INFO_DEPTH (t_info))) {
- /* Else get at least the one with the highest depth, ideally with the same flags */
- out_info = t_info;
- out_flags = t_flags;
- }
- }
+ len = gst_value_list_get_size (format);
+ for (i = 0; i < len; i++) {
+ const GstAudioFormatInfo *t_info;
+ GstAudioFormatFlags t_flags;
+ const GValue *val;
+ const gchar *fname;
+
+ val = gst_value_list_get_value (format, i);
+ if (!G_VALUE_HOLDS_STRING (val))
+ continue;
+
+ fname = g_value_get_string (val);
+ t_info = gst_audio_format_get_info (gst_audio_format_from_string (fname));
+ if (!t_info)
+ continue;
+
+ /* accept input format immediately */
+ if (strcmp (fname, in_format) == 0) {
+ out_info = t_info;
+ break;
}
- if (out_info)
- gst_structure_set (outs, "format", G_TYPE_STRING,
- GST_AUDIO_FORMAT_INFO_NAME (out_info), NULL);
- } else {
- /* nothing to fixate */
- return;
+
+ t_flags = GST_AUDIO_FORMAT_INFO_FLAGS (t_info);
+ t_flags &= ~(GST_AUDIO_FORMAT_FLAG_UNPACK);
+ t_flags &= ~(GST_AUDIO_FORMAT_FLAG_SIGNED);
+
+ if (GST_AUDIO_FORMAT_INFO_DEPTH (t_info) ==
+ GST_AUDIO_FORMAT_INFO_DEPTH (in_info) && (!out_info
+ || GST_AUDIO_FORMAT_INFO_DEPTH (out_info) !=
+ GST_AUDIO_FORMAT_INFO_DEPTH (in_info)
+ || (t_flags == in_flags && out_flags != in_flags))) {
+ /* Prefer to use the first format that has the same depth with the same
+ * flags, and if none with the same flags exist use the first other one
+ * that has the same depth */
+ out_info = t_info;
+ out_flags = t_flags;
+ } else if (GST_AUDIO_FORMAT_INFO_DEPTH (t_info) >=
+ GST_AUDIO_FORMAT_INFO_DEPTH (in_info) && (!out_info
+ || GST_AUDIO_FORMAT_INFO_DEPTH (in_info) >
+ GST_AUDIO_FORMAT_INFO_DEPTH (out_info)
+ || (GST_AUDIO_FORMAT_INFO_DEPTH (out_info) >=
+ GST_AUDIO_FORMAT_INFO_DEPTH (in_info) && t_flags == in_flags
+ && out_flags != in_flags))) {
+ /* Otherwise use the first format that has a higher depth with the same flags,
+ * if none with the same flags exist use the first other one that has a higher
+ * depth */
+ out_info = t_info;
+ out_flags = t_flags;
+ } else if (!out_info
+ || (GST_AUDIO_FORMAT_INFO_DEPTH (t_info) >
+ GST_AUDIO_FORMAT_INFO_DEPTH (out_info)
+ && GST_AUDIO_FORMAT_INFO_DEPTH (out_info) <
+ GST_AUDIO_FORMAT_INFO_DEPTH (in_info)) || (t_flags == in_flags
+ && out_flags != in_flags
+ && GST_AUDIO_FORMAT_INFO_DEPTH (out_info) ==
+ GST_AUDIO_FORMAT_INFO_DEPTH (t_info))) {
+ /* Else get at least the one with the highest depth, ideally with the same flags */
+ out_info = t_info;
+ out_flags = t_flags;
+ }
+
}
+
+ if (out_info)
+ gst_structure_set (outs, "format", G_TYPE_STRING,
+ GST_AUDIO_FORMAT_INFO_NAME (out_info), NULL);
}
static void