summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--gst/flv/gstflvparse.c11
2 files changed, 16 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 78f5366e..974db636 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
2008-10-27 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+ * gst/flv/gstflvparse.c: (gst_flv_parse_tag_audio),
+ (gst_flv_parse_tag_video):
+ If the caps change during playback and negotiation fails error out
+ instead of trying to continue.
+
+2008-10-27 Sebastian Dröge <sebastian.droege@collabora.co.uk>
+
* gst/flv/gstflvmux.c: (gst_flv_mux_audio_pad_setcaps),
(gst_flv_mux_request_new_pad), (gst_flv_mux_write_buffer),
(gst_flv_mux_collected):
diff --git a/gst/flv/gstflvparse.c b/gst/flv/gstflvparse.c
index d9cdb239..e7c4f144 100644
--- a/gst/flv/gstflvparse.c
+++ b/gst/flv/gstflvparse.c
@@ -606,7 +606,11 @@ gst_flv_parse_tag_audio (GstFLVDemux * demux, const guint8 * data,
GST_DEBUG_OBJECT (demux, "audio settings have changed, changing caps");
/* Negotiate caps */
- gst_flv_parse_audio_negotiate (demux, codec_tag, rate, channels, width);
+ if (!gst_flv_parse_audio_negotiate (demux, codec_tag, rate, channels,
+ width)) {
+ ret = GST_FLOW_ERROR;
+ goto beach;
+ }
}
/* Push taglist if present */
@@ -907,7 +911,10 @@ gst_flv_parse_tag_video (GstFLVDemux * demux, const guint8 * data,
GST_DEBUG_OBJECT (demux, "video settings have changed, changing caps");
- gst_flv_parse_video_negotiate (demux, codec_tag);
+ if (!gst_flv_parse_video_negotiate (demux, codec_tag)) {
+ ret = GST_FLOW_ERROR;
+ goto beach;
+ }
/* When we ve set pixel-aspect-ratio we use that boolean to detect a
* metadata tag that would come later and trigger a caps change */