diff --git a/ChangeLog b/ChangeLog index 5e6cfb2dcb..4115f2ba9e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2006-05-09 Tim-Philipp Müller + + Patch by: Mark Nauwelaerts + + * gst/avi/gstavimux.c: (gst_avi_mux_do_audio_buffer), + (gst_avi_mux_do_video_buffer): + Work around gst_buffer_make_metadata_writable() bug that + results in avimux marking all frames in the index as + keyframes (#340859). + 2006-05-08 Wim Taymans * gst/rtsp/rtspurl.c: (rtsp_url_parse): diff --git a/common b/common index 6b67aa6dd1..e41606ab2c 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit 6b67aa6dd111fb139e1be0f6a386e3ff84cce091 +Subproject commit e41606ab2c6a31be473de511b5fd776bd2593b56 diff --git a/gst/avi/gstavimux.c b/gst/avi/gstavimux.c index de070772f1..29c0f0cd1d 100644 --- a/gst/avi/gstavimux.c +++ b/gst/avi/gstavimux.c @@ -1317,7 +1317,6 @@ gst_avi_mux_do_audio_buffer (GstAviMux * avimux) gulong total_size, pad_bytes = 0; data = gst_collect_pads_pop (avimux->collect, avimux->audiocollectdata); - data = gst_avi_mux_strip_buffer (avimux, data); /* write a audio header + index entry */ if (GST_BUFFER_SIZE (data) & 1) { @@ -1336,7 +1335,10 @@ gst_avi_mux_do_audio_buffer (GstAviMux * avimux) GST_BUFFER_SIZE (data)); } + /* prepare buffers for sending */ gst_buffer_set_caps (header, GST_PAD_CAPS (avimux->srcpad)); + data = gst_avi_mux_strip_buffer (avimux, data); + if ((res = gst_pad_push (avimux->srcpad, header)) != GST_FLOW_OK) return res; if ((res = gst_pad_push (avimux->srcpad, data)) != GST_FLOW_OK) @@ -1364,7 +1366,6 @@ gst_avi_mux_do_video_buffer (GstAviMux * avimux) gulong total_size, pad_bytes = 0; data = gst_collect_pads_pop (avimux->collect, avimux->videocollectdata); - data = gst_avi_mux_strip_buffer (avimux, data); if (avimux->restart) { if ((res = gst_avi_mux_restart_file (avimux)) != GST_FLOW_OK) @@ -1404,7 +1405,10 @@ gst_avi_mux_do_video_buffer (GstAviMux * avimux) GST_BUFFER_SIZE (data)); } + /* prepare buffers for sending */ gst_buffer_set_caps (header, GST_PAD_CAPS (avimux->srcpad)); + data = gst_avi_mux_strip_buffer (avimux, data); + if ((res = gst_pad_push (avimux->srcpad, header)) != GST_FLOW_OK) return res; if ((res = gst_pad_push (avimux->srcpad, data)) != GST_FLOW_OK)