summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog14
-rw-r--r--configure.ac2
-rw-r--r--gst/auparse/gstauparse.c39
-rw-r--r--gst/auparse/gstauparse.h4
4 files changed, 17 insertions, 42 deletions
diff --git a/ChangeLog b/ChangeLog
index 82e38de6..b611de6a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2007-03-29 Sebastian Dröge <slomo@circular-chaos.org>
+
+ * configure.ac:
+ Require gst-plugins-base CVS for audioconvert with non-native
+ float support and width/depth fix in libgstriff.
+
+ Patch by: René Stadler <mail at renestadler dot de>
+
+ * gst/auparse/gstauparse.c: (gst_au_parse_reset),
+ (gst_au_parse_parse_header), (gst_au_parse_chain):
+ * gst/auparse/gstauparse.h:
+ Don't swap the floats ourself if they're not in native endianness.
+ Instead let audioconvert handle this. Fixes #339838.
+
2007-03-29 Wim Taymans <wim@fluendo.com>
* gst/rtp/gstasteriskh263.h:
diff --git a/configure.ac b/configure.ac
index d0210d1b..e4294372 100644
--- a/configure.ac
+++ b/configure.ac
@@ -47,7 +47,7 @@ AM_PROG_LIBTOOL
dnl *** required versions of GStreamer stuff ***
GST_REQ=0.10.11.1
-GSTPB_REQ=0.10.11.1
+GSTPB_REQ=0.10.12.1
dnl *** autotools stuff ****
diff --git a/gst/auparse/gstauparse.c b/gst/auparse/gstauparse.c
index 4664984c..64bdd7a2 100644
--- a/gst/auparse/gstauparse.c
+++ b/gst/auparse/gstauparse.c
@@ -158,7 +158,6 @@ gst_au_parse_reset (GstAuParse * auparse)
auparse->encoding = 0;
auparse->samplerate = 0;
auparse->channels = 0;
- auparse->float_swap = 0;
gst_adapter_clear (auparse->adapter);
@@ -283,8 +282,6 @@ gst_au_parse_parse_header (GstAuParse * auparse)
* http://www.tsp.ece.mcgill.ca/MMSP/Documents/AudioFormats/AU/Samples.html
*/
- auparse->float_swap = 0;
-
switch (auparse->encoding) {
case 1: /* 8-bit ISDN mu-law G.711 */
law = 1;
@@ -363,13 +360,9 @@ gst_au_parse_parse_header (GstAuParse * auparse)
tempcaps = gst_caps_new_simple ("audio/x-raw-float",
"rate", G_TYPE_INT, auparse->samplerate,
"channels", G_TYPE_INT, auparse->channels,
- "endianness", G_TYPE_INT, G_BYTE_ORDER,
+ "endianness", G_TYPE_INT, auparse->endianness,
"width", G_TYPE_INT, depth, NULL);
auparse->sample_size = auparse->channels * depth / 8;
- if (auparse->endianness != G_BYTE_ORDER) {
- GST_DEBUG_OBJECT (auparse, "need to swap float byte order ourselves!");
- auparse->float_swap = depth;
- }
} else if (layout[0]) {
tempcaps = gst_caps_new_simple ("audio/x-adpcm",
"layout", G_TYPE_STRING, layout, NULL);
@@ -474,35 +467,7 @@ gst_au_parse_chain (GstPad * pad, GstBuffer * buf)
}
data = gst_adapter_peek (auparse->adapter, sendnow);
-
- /* audioconvert only handles floats in native endianness ... */
- switch (auparse->float_swap) {
- case 32:{
- guint32 *indata = (guint32 *) data;
- guint32 *outdata = (guint32 *) GST_BUFFER_DATA (outbuf);
- gint i;
-
- for (i = 0; i < (sendnow / sizeof (guint32)); ++i) {
- outdata[i] = GUINT32_SWAP_LE_BE (indata[i]);
- }
- break;
- }
- case 64:{
- guint64 *indata = (guint64 *) data;
- guint64 *outdata = (guint64 *) GST_BUFFER_DATA (outbuf);
- gint i;
-
- for (i = 0; i < (sendnow / sizeof (guint64)); ++i) {
- outdata[i] = GUINT64_SWAP_LE_BE (indata[i]);
- }
- break;
- }
- default:{
- memcpy (GST_BUFFER_DATA (outbuf), data, sendnow);
- break;
- }
- }
-
+ memcpy (GST_BUFFER_DATA (outbuf), data, sendnow);
gst_adapter_flush (auparse->adapter, sendnow);
auparse->buffer_offset += sendnow;
diff --git a/gst/auparse/gstauparse.h b/gst/auparse/gstauparse.h
index a74d6818..55d13e21 100644
--- a/gst/auparse/gstauparse.h
+++ b/gst/auparse/gstauparse.h
@@ -62,10 +62,6 @@ struct _GstAuParse {
guint samplerate;
guint endianness;
guint channels;
-
- /* audioconvert only handles float in native endianness,
- * so we need to swap endianness here ourselves for now */
- guint float_swap; /* 0, 32 or 64 */
};
struct _GstAuParseClass {