From 72221ceb5e353ea9193c737e87e4daff6a0accec Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Mon, 12 Nov 2007 19:22:24 +0000 Subject: [PATCH] gst/flv/gstflvparse.c: Add mapping for Nellymoser ASAO audio codec. 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. --- ChangeLog | 8 ++++++++ gst/flv/gstflvparse.c | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/ChangeLog b/ChangeLog index 96b41c3dc5..7a0ce93c43 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2007-11-12 Edward Hervey + + * 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. + 2007-11-12 Edgard Lima * ext/metadata/README: diff --git a/gst/flv/gstflvparse.c b/gst/flv/gstflvparse.c index a04c89e9b0..87a63f5076 100644 --- a/gst/flv/gstflvparse.c +++ b/gst/flv/gstflvparse.c @@ -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),