diff --git a/ChangeLog b/ChangeLog index 8b1e3c13da..6bc5a60b23 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2007-12-10 Tim-Philipp Müller + + * gst-libs/gst/pbutils/descriptions.c: (formats), + (format_info_get_desc): + * tests/check/libs/pbutils.c: (GST_START_TEST), (caps_strings), + (GST_START_TEST): + Add one or two missing formats. Generate ADPCM description + dynamically depending on layout/format. + 2007-12-09 Sebastian Dröge * configure.ac: diff --git a/gst-libs/gst/pbutils/descriptions.c b/gst-libs/gst/pbutils/descriptions.c index 4ba1145e6d..cc060b6c96 100644 --- a/gst-libs/gst/pbutils/descriptions.c +++ b/gst-libs/gst/pbutils/descriptions.c @@ -76,8 +76,6 @@ static const FormatInfo formats[] = { {"audio/ac3", "AC-3 (ATSC A/52)", 0}, {"audio/x-private-ac3", "DVD AC-3 (ATSC A/52)", 0}, {"audio/x-private1-ac3", "DVD AC-3 (ATSC A/52)", 0}, - {"audio/x-adpcm", "ADPCM", 0}, - {"audio/aiff", "Audio Interchange File Format (AIFF)", 0}, {"audio/x-alaw", "A-Law", 0}, {"audio/amr", "Adaptive Multi Rate (AMR)", 0}, {"audio/AMR", "Adaptive Multi Rate (AMR)", 0}, @@ -85,7 +83,7 @@ static const FormatInfo formats[] = { {"audio/iLBC-sh", "Internet Low Bitrate Codec (iLBC)", 0}, {"audio/ms-gsm", "MS GSM", 0}, {"audio/qcelp", "QCELP", 0}, - {"audio/x-adpcm", "ADPCM", 0}, /* TODO: different variants */ + {"audio/aiff", "Audio Interchange File Format (AIFF)", 0}, {"audio/x-aiff", "Audio Interchange File Format (AIFF)", 0}, {"audio/x-alac", N_("Apple Lossless Audio (ALAC)"), 0}, {"audio/x-amr-nb-sh", "Adaptive Multi Rate NarrowBand (AMR-NB)", 0}, @@ -106,6 +104,7 @@ static const FormatInfo formats[] = { {"audio/x-mod", "Module Music Format (MOD)", 0}, {"audio/x-mulaw", "Mu-Law", 0}, {"audio/x-musepack", "Musepack (MPC)", 0}, + {"audio/x-nellymoser", "Nellymoser Asao", 0}, {"audio/x-nist", "Sphere NIST", 0}, {"audio/x-nsf", "Nintendo NSF", 0}, {"audio/x-paris", "Ensoniq PARIS", 0}, @@ -207,6 +206,7 @@ static const FormatInfo formats[] = { /* formats with dynamic descriptions */ {"audio/mpeg", NULL, 0}, + {"audio/x-adpcm", NULL, 0}, {"audio/x-mace", NULL, 0}, {"audio/x-pn-realaudio", NULL, 0}, {"audio/x-raw-int", NULL, 0}, @@ -463,6 +463,35 @@ format_info_get_desc (const FormatInfo * info, const GstCaps * caps) GST_WARNING ("Unexpected acrversion in %" GST_PTR_FORMAT, caps); return g_strdup ("ATI VCR"); } + } else if (strcmp (info->type, "audio/x-adpcm") == 0) { + const GValue *layout_val; + + layout_val = gst_structure_get_value (s, "layout"); + if (layout_val != NULL && G_VALUE_HOLDS_STRING (layout_val)) { + const gchar *layout; + + if ((layout = g_value_get_string (layout_val))) { + gchar *layout_upper, *ret; + + if (strcmp (layout, "swf") == 0) + return g_strdup ("Shockwave ADPCM"); + if (strcmp (layout, "microsoft") == 0) + return g_strdup ("Microsoft ADPCM"); + if (strcmp (layout, "quicktime") == 0) + return g_strdup ("Quicktime ADPCM"); + if (strcmp (layout, "westwood") == 0) + return g_strdup ("Westwood ADPCM"); + if (strcmp (layout, "yamaha") == 0) + return g_strdup ("Yamaha ADPCM"); + /* FIXME: other layouts: sbpro2, sbpro3, sbpro4, ct, g726, ea, + * adx, xa, 4xm, smjpeg, dk4, dk3, dvi */ + layout_upper = g_ascii_strup (layout, -1); + ret = g_strdup_printf ("%s ADPCM", layout_upper); + g_free (layout_upper); + return ret; + } + } + return g_strdup ("ADPCM"); } else if (strcmp (info->type, "audio/mpeg") == 0) { gint ver = 0, layer = 0; diff --git a/tests/check/libs/pbutils.c b/tests/check/libs/pbutils.c index 36fd7b6d68..a07858113e 100644 --- a/tests/check/libs/pbutils.c +++ b/tests/check/libs/pbutils.c @@ -291,6 +291,11 @@ static const gchar *caps_strings[] = { "application/x-rtp, encoding-name=(string)TPM", "application/x-rtp, media=(string)woohoo", /* formats with dynamic descriptions */ + "audio/x-adpcm", + "audio/x-adpcm, layout=(string)dvi", + "audio/x-adpcm, layout=(string)swf", + "audio/x-adpcm, layout=(string)microsoft", + "audio/x-adpcm, layout=(string)quicktime", "audio/mpeg, mpegversion=(int)4", "audio/mpeg, mpegversion=(int)1, layer=(int)1", "audio/mpeg, mpegversion=(int)1, layer=(int)2",