gst-libs/gst/riff/riff-media.c: Do actually fix invalid RIFF fmt header values for...
authorTim-Philipp Müller <tim@centricular.net>
Sun, 20 Feb 2005 12:49:19 +0000 (12:49 +0000)
committerTim-Philipp Müller <tim@centricular.net>
Sun, 20 Feb 2005 12:49:19 +0000 (12:49 +0000)
Original commit message from CVS:
* gst-libs/gst/riff/riff-media.c:
(gst_riff_create_audio_caps_with_data):
Do actually fix invalid RIFF fmt header values for alaw
and mulaw audio instead of just saying so.

* gst/wavparse/gstwavparse.c: (gst_wavparse_fmt):
Give gst_riff_create_audio_caps_with_data() a chance to
fix up broken format header fields before extracting any
parameters from the header. (fixes #167633)

ChangeLog
gst-libs/gst/riff/riff-media.c

index 0fbd2c1817c526ab9fe4f1fdbef366f95f406613..3847878db69e5918ed89314800b173e8e6b5ce5b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2005-02-20  Tim-Philipp Müller  <tim at centricular dot net>
+
+       * gst-libs/gst/riff/riff-media.c:
+       (gst_riff_create_audio_caps_with_data):
+         Do actually fix invalid RIFF fmt header values for alaw
+         and mulaw audio instead of just saying so.
+
+       * gst/wavparse/gstwavparse.c: (gst_wavparse_fmt):
+         Give gst_riff_create_audio_caps_with_data() a chance to
+         fix up broken format header fields before extracting any
+         parameters from the header. (fixes #167633)
+
 2005-02-19  Martin Holters  <martin.holters@gmx.de>
 
        Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>
index b93ff8699876c9cb06ee68605055a782678c8975..2d3ac28ebd2eff532cb74361d31b23d42405c3f7 100644 (file)
@@ -458,6 +458,15 @@ gst_riff_create_audio_caps_with_data (guint16 codec_id,
       if (strf != NULL && strf->size != 8) {
         GST_WARNING ("invalid depth (%d) of mulaw audio, overwriting.",
             strf->size);
+        strf->size = 8;
+        strf->av_bps = 8;
+        strf->blockalign = strf->av_bps * strf->channels;
+      }
+      if (strf != NULL && (strf->av_bps == 0 || strf->blockalign == 0)) {
+        GST_WARNING ("fixing av_bps (%d) and blockalign (%d) of mulaw audio",
+            strf->av_bps, strf->blockalign);
+        strf->av_bps = strf->size;
+        strf->blockalign = strf->av_bps * strf->channels;
       }
       caps = gst_caps_new_simple ("audio/x-mulaw", NULL);
       if (codec_name)
@@ -468,6 +477,15 @@ gst_riff_create_audio_caps_with_data (guint16 codec_id,
       if (strf != NULL && strf->size != 8) {
         GST_WARNING ("invalid depth (%d) of alaw audio, overwriting.",
             strf->size);
+        strf->size = 8;
+        strf->av_bps = 8;
+        strf->blockalign = strf->av_bps * strf->channels;
+      }
+      if (strf != NULL && (strf->av_bps == 0 || strf->blockalign == 0)) {
+        GST_WARNING ("fixing av_bps (%d) and blockalign (%d) of alaw audio",
+            strf->av_bps, strf->blockalign);
+        strf->av_bps = strf->size;
+        strf->blockalign = strf->av_bps * strf->channels;
       }
       caps = gst_caps_new_simple ("audio/x-alaw", NULL);
       if (codec_name)