[MOVED FROM BAD 15/57] gst/flv/gstflvparse.c: Add mapping for Nellymoser ASAO audio...
authorEdward Hervey <bilboed@bilboed.com>
Mon, 12 Nov 2007 19:22:24 +0000 (19:22 +0000)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 12 May 2009 19:20:52 +0000 (21:20 +0200)
Original commit message from CVS:
* gst/flv/gstflvparse.c:
Add mapping for Nellymoser ASAO audio codec.
(gst_flv_parse_tag_audio), (gst_flv_parse_tag_video): Make sure we
actually have data to read at the end of the tag. This avoids trying
to allocate negative buffers.

gst/flv/gstflvparse.c

index a04c89e..87a63f5 100644 (file)
@@ -460,6 +460,9 @@ gst_flv_parse_tag_audio (GstFLVDemux * demux, const guint8 * data,
             "signed", G_TYPE_BOOLEAN, TRUE,
             "width", G_TYPE_INT, width, "depth", G_TYPE_INT, width, NULL);
         break;
+      case 6:
+        caps = gst_caps_new_simple ("audio/x-nellymoser", NULL);
+        break;
       default:
         GST_WARNING_OBJECT (demux, "unsupported audio codec tag %u", codec_tag);
     }
@@ -525,6 +528,9 @@ gst_flv_parse_tag_audio (GstFLVDemux * demux, const guint8 * data,
       case 3:
         caps = gst_caps_new_simple ("audio/x-raw-int", NULL);
         break;
+      case 6:
+        caps = gst_caps_new_simple ("audio/x-nellymoser", NULL);
+        break;
       default:
         GST_WARNING_OBJECT (demux, "unsupported audio codec tag %u", codec_tag);
     }
@@ -564,6 +570,12 @@ gst_flv_parse_tag_audio (GstFLVDemux * demux, const guint8 * data,
     }
   }
 
+  /* Check if we have anything to push */
+  if (demux->tag_data_size <= codec_data) {
+    GST_LOG_OBJECT (demux, "Nothing left in this tag, returning");
+    goto beach;
+  }
+
   /* Create buffer from pad */
   ret = gst_pad_alloc_buffer (demux->audio_pad, GST_BUFFER_OFFSET_NONE,
       demux->tag_data_size - codec_data, GST_PAD_CAPS (demux->audio_pad),
@@ -799,6 +811,12 @@ gst_flv_parse_tag_video (GstFLVDemux * demux, const guint8 * data,
     }
   }
 
+  /* Check if we have anything to push */
+  if (demux->tag_data_size <= codec_data) {
+    GST_LOG_OBJECT (demux, "Nothing left in this tag, returning");
+    goto beach;
+  }
+
   /* Create buffer from pad */
   ret = gst_pad_alloc_buffer (demux->video_pad, GST_BUFFER_OFFSET_NONE,
       demux->tag_data_size - codec_data, GST_PAD_CAPS (demux->video_pad),