[gst-cvs] gst-plugins-bad: qtmux: Only accept stream-format='none' aac

Thiago Sousa Santos thiagoss at kemper.freedesktop.org
Mon Jan 11 07:34:24 PST 2010


Module: gst-plugins-bad
Branch: master
Commit: 5b8b363310cae46e63c6bebfae0bf24da9e1d92e
URL:    http://cgit.freedesktop.org/gstreamer/gst-plugins-bad/commit/?id=5b8b363310cae46e63c6bebfae0bf24da9e1d92e

Author: Thiago Santos <thiago.sousa.santos at collabora.co.uk>
Date:   Mon Jan 11 10:34:32 2010 -0300

qtmux: Only accept stream-format='none' aac

Only accept raw aac streams (stream-format=none) to avoid
generating invalid files.

Fixes #604925

---

 gst/qtmux/gstqtmux.c    |   21 +++++++++++++++++++--
 gst/qtmux/gstqtmuxmap.c |    1 +
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/gst/qtmux/gstqtmux.c b/gst/qtmux/gstqtmux.c
index 1773092..ba0978e 100644
--- a/gst/qtmux/gstqtmux.c
+++ b/gst/qtmux/gstqtmux.c
@@ -1717,6 +1717,7 @@ gst_qt_mux_audio_sink_set_caps (GstPad * pad, GstCaps * caps)
   AudioSampleEntry entry = { 0, };
   AtomInfo *ext_atom = NULL;
   gint constant_size = 0;
+  const gchar *stream_format;
 
   /* find stream data */
   qtpad = (GstQTPad *) gst_pad_get_element_private (pad);
@@ -1787,8 +1788,20 @@ gst_qt_mux_audio_sink_set_caps (GstPad * pad, GstCaps * caps)
         }
         break;
       case 4:
-        /* AAC */
-        entry.fourcc = FOURCC_mp4a;
+
+        /* check stream-format */
+        stream_format = gst_structure_get_string (structure, "stream-format");
+        if (stream_format) {
+          if (strcmp (stream_format, "none") != 0) {
+            GST_WARNING_OBJECT (qtmux, "Unsupported AAC stream-format %s, "
+                "please use 'none'", stream_format);
+            goto refuse_caps;
+          }
+        } else {
+          GST_WARNING_OBJECT (qtmux, "No stream-format present in caps, "
+              "assuming 'none'");
+        }
+
         if (!codec_data || GST_BUFFER_SIZE (codec_data) < 2)
           GST_WARNING_OBJECT (qtmux, "no (valid) codec_data for AAC audio");
         else {
@@ -1800,6 +1813,10 @@ gst_qt_mux_audio_sink_set_caps (GstPad * pad, GstCaps * caps)
             GST_WARNING_OBJECT (qtmux,
                 "non-LC AAC may not run well on (Apple) QuickTime/iTunes");
         }
+
+        /* AAC */
+        entry.fourcc = FOURCC_mp4a;
+
         if (format == GST_QT_MUX_FORMAT_QT)
           ext_atom = build_mov_aac_extension (qtpad->trak, codec_data);
         else
diff --git a/gst/qtmux/gstqtmuxmap.c b/gst/qtmux/gstqtmuxmap.c
index 4c225a3..c402198 100644
--- a/gst/qtmux/gstqtmuxmap.c
+++ b/gst/qtmux/gstqtmuxmap.c
@@ -119,6 +119,7 @@
 #define AAC_CAPS \
   "audio/mpeg, " \
   "mpegversion = (int) 4, " \
+  "stream-format = (string) none, " \
   COMMON_AUDIO_CAPS (8, MAX)
 
 #define AMR_CAPS \





More information about the Gstreamer-commits mailing list