From 40e9cff5bc1d759cfc54af6fd9e88f5178efeee6 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Fri, 3 Dec 2004 18:13:43 +0000 Subject: [PATCH] ext/musepack/gstmusepackdec.cpp: There's also floating point libmusepacks. Original commit message from CVS: * ext/musepack/gstmusepackdec.cpp: There's also floating point libmusepacks. --- ChangeLog | 5 +++++ ext/musepack/gstmusepackdec.c | 34 ++++++++++++++++++++------------- ext/musepack/gstmusepackdec.cpp | 34 ++++++++++++++++++++------------- 3 files changed, 47 insertions(+), 26 deletions(-) diff --git a/ChangeLog b/ChangeLog index 332e9f2782..fd74d88818 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2004-12-03 Ronald S. Bultje + + * ext/musepack/gstmusepackdec.cpp: + There's also floating point libmusepacks. + 2004-12-03 Ronald S. Bultje * ext/faad/gstfaad.c: (gst_faad_chanpos_from_gst), diff --git a/ext/musepack/gstmusepackdec.c b/ext/musepack/gstmusepackdec.c index 08f8d56955..a86828c2b9 100644 --- a/ext/musepack/gstmusepackdec.c +++ b/ext/musepack/gstmusepackdec.c @@ -30,14 +30,24 @@ static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink", GST_STATIC_CAPS ("audio/x-musepack") ); +#ifdef MPC_FIXED_POINT +#define BASE_CAPS \ + "audio/x-raw-int, " \ + "signed = (bool) TRUE, " \ + "width = (int) 32, " \ + "depth = (int) 32" +#else +#define BASE_CAPS \ + "audio/x-raw-float, " \ + "width = (int) 32, " \ + "buffer-frames = (int) 0" +#endif + static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, - GST_STATIC_CAPS ("audio/x-raw-int, " + GST_STATIC_CAPS (BASE_CAPS ", " "endianness = (int) BYTE_ORDER, " - "signed = (bool) TRUE, " - "width = (int) 32, " - "depth = (int) 32, " "rate = (int) [ 8000, 96000 ], " "channels = (int) [ 1, 2 ]") ); @@ -352,6 +362,7 @@ static gboolean gst_musepack_stream_init (GstMusepackDec * musepackdec) { StreamInfo si = StreamInfo (); + GstCaps *caps; if (musepackdec->dec) delete musepackdec->dec; @@ -379,15 +390,12 @@ gst_musepack_stream_init (GstMusepackDec * musepackdec) return FALSE; } - if (!gst_pad_set_explicit_caps (musepackdec->srcpad, - gst_caps_new_simple ("audio/x-raw-int", - "width", G_TYPE_INT, 32, - "depth", G_TYPE_INT, 32, - "endianness", G_TYPE_INT, G_BYTE_ORDER, - "channels", G_TYPE_INT, si.simple.Channels, - "rate", G_TYPE_INT, si.simple.SampleFreq, - "signed", G_TYPE_BOOLEAN, TRUE, - NULL))) { + caps = gst_caps_from_string (BASE_CAPS); + gst_caps_set_simple (caps, + "endianness", G_TYPE_INT, G_BYTE_ORDER, + "channels", G_TYPE_INT, si.simple.Channels, + "rate", G_TYPE_INT, si.simple.SampleFreq, NULL); + if (!gst_pad_set_explicit_caps (musepackdec->srcpad, caps)) { GST_ELEMENT_ERROR (musepackdec, CORE, NEGOTIATION, (NULL), (NULL)); delete musepackdec->dec; musepackdec->dec = NULL; diff --git a/ext/musepack/gstmusepackdec.cpp b/ext/musepack/gstmusepackdec.cpp index 08f8d56955..a86828c2b9 100644 --- a/ext/musepack/gstmusepackdec.cpp +++ b/ext/musepack/gstmusepackdec.cpp @@ -30,14 +30,24 @@ static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink", GST_STATIC_CAPS ("audio/x-musepack") ); +#ifdef MPC_FIXED_POINT +#define BASE_CAPS \ + "audio/x-raw-int, " \ + "signed = (bool) TRUE, " \ + "width = (int) 32, " \ + "depth = (int) 32" +#else +#define BASE_CAPS \ + "audio/x-raw-float, " \ + "width = (int) 32, " \ + "buffer-frames = (int) 0" +#endif + static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS, - GST_STATIC_CAPS ("audio/x-raw-int, " + GST_STATIC_CAPS (BASE_CAPS ", " "endianness = (int) BYTE_ORDER, " - "signed = (bool) TRUE, " - "width = (int) 32, " - "depth = (int) 32, " "rate = (int) [ 8000, 96000 ], " "channels = (int) [ 1, 2 ]") ); @@ -352,6 +362,7 @@ static gboolean gst_musepack_stream_init (GstMusepackDec * musepackdec) { StreamInfo si = StreamInfo (); + GstCaps *caps; if (musepackdec->dec) delete musepackdec->dec; @@ -379,15 +390,12 @@ gst_musepack_stream_init (GstMusepackDec * musepackdec) return FALSE; } - if (!gst_pad_set_explicit_caps (musepackdec->srcpad, - gst_caps_new_simple ("audio/x-raw-int", - "width", G_TYPE_INT, 32, - "depth", G_TYPE_INT, 32, - "endianness", G_TYPE_INT, G_BYTE_ORDER, - "channels", G_TYPE_INT, si.simple.Channels, - "rate", G_TYPE_INT, si.simple.SampleFreq, - "signed", G_TYPE_BOOLEAN, TRUE, - NULL))) { + caps = gst_caps_from_string (BASE_CAPS); + gst_caps_set_simple (caps, + "endianness", G_TYPE_INT, G_BYTE_ORDER, + "channels", G_TYPE_INT, si.simple.Channels, + "rate", G_TYPE_INT, si.simple.SampleFreq, NULL); + if (!gst_pad_set_explicit_caps (musepackdec->srcpad, caps)) { GST_ELEMENT_ERROR (musepackdec, CORE, NEGOTIATION, (NULL), (NULL)); delete musepackdec->dec; musepackdec->dec = NULL;