From 40e9cff5bc1d759cfc54af6fd9e88f5178efeee6 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Fri, 3 Dec 2004 18:13:43 +0000 Subject: 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. --- ext/musepack/gstmusepackdec.c | 34 +++++++++++++++++++++------------- ext/musepack/gstmusepackdec.cpp | 34 +++++++++++++++++++++------------- 2 files changed, 42 insertions(+), 26 deletions(-) (limited to 'ext/musepack') diff --git a/ext/musepack/gstmusepackdec.c b/ext/musepack/gstmusepackdec.c index 08f8d569..a86828c2 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 08f8d569..a86828c2 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; -- cgit v1.2.1