From f448977dbd55c040bc7772cf4a04167af39208a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim-Philipp=20M=C3=BCller?= Date: Fri, 23 Aug 2013 18:52:44 +0100 Subject: [PATCH] audioconvert: remove unnecessary deep nesting in fixate function Makes it easier to read and removes two levels of indentation. --- gst/audioconvert/gstaudioconvert.c | 132 ++++++++++++++--------------- 1 file changed, 66 insertions(+), 66 deletions(-) diff --git a/gst/audioconvert/gstaudioconvert.c b/gst/audioconvert/gstaudioconvert.c index 7217fdc565..30cd215e2f 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 GstAudioFormatInfo *t_info; + GstAudioFormatFlags t_flags; + const GValue *val; + const gchar *fname; - 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)) + continue; - 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; - 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; - } - } + /* 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