static inline gboolean check_default (AudioConvertCtx * ctx, const GstAudioFormatInfo * fmt) { if (!DOUBLE_INTERMEDIATE_FORMAT (ctx)) { return GST_AUDIO_FORMAT_INFO_FORMAT (fmt) == GST_AUDIO_FORMAT_S32; } else { return GST_AUDIO_FORMAT_INFO_FORMAT (fmt) == GST_AUDIO_FORMAT_F64; } }
/** * gst_audio_format_build_integer: * @sign: signed or unsigned format * @endianness: G_LITTLE_ENDIAN or G_BIG_ENDIAN * @width: amount of bits used per sample * @depth: amount of used bits in @width * * Construct a #GstAudioFormat with given parameters. * * Returns: a #GstAudioFormat or GST_AUDIO_FORMAT_UNKNOWN when no audio format * exists with the given parameters. */ GstAudioFormat gst_audio_format_build_integer (gboolean sign, gint endianness, gint width, gint depth) { gint i, e; for (i = 0; i < G_N_ELEMENTS (formats); i++) { GstAudioFormatInfo *finfo = &formats[i]; /* must be int */ if (!GST_AUDIO_FORMAT_INFO_IS_INTEGER (finfo)) continue; /* width and depth must match */ if (width != GST_AUDIO_FORMAT_INFO_WIDTH (finfo)) continue; if (depth != GST_AUDIO_FORMAT_INFO_DEPTH (finfo)) continue; /* if there is endianness, it must match */ e = GST_AUDIO_FORMAT_INFO_ENDIANNESS (finfo); if (e && e != endianness) continue; /* check sign */ if ((sign && !GST_AUDIO_FORMAT_INFO_IS_SIGNED (finfo)) || (!sign && GST_AUDIO_FORMAT_INFO_IS_SIGNED (finfo))) continue; return GST_AUDIO_FORMAT_INFO_FORMAT (finfo); } return GST_AUDIO_FORMAT_UNKNOWN; }
/** * gst_audio_format_from_string: * @format: a format string * * Convert the @format string to its #GstAudioFormat. * * Returns: the #GstAudioFormat for @format or GST_AUDIO_FORMAT_UNKNOWN when the * string is not a known format. */ GstAudioFormat gst_audio_format_from_string (const gchar * format) { guint i; for (i = 0; i < G_N_ELEMENTS (formats); i++) { if (strcmp (GST_AUDIO_FORMAT_INFO_NAME (&formats[i]), format) == 0) return GST_AUDIO_FORMAT_INFO_FORMAT (&formats[i]); } return GST_AUDIO_FORMAT_UNKNOWN; }