Author: jwrdegoede
Update of /cvs/free/rpms/gstreamer-plugins-ugly/F-8
In directory se02.es.rpmfusion.net:/tmp/cvs-serv32669
Modified Files:
.cvsignore sources
Added Files:
gst-plugins-ugly-0.10.6-asf-seek.patch
gst-plugins-ugly-0.10.6-dvdread.patch
gstreamer-plugins-ugly-mpegaudioparse.patch
gstreamer-plugins-ugly.spec
Log Message:
* Wed Jul 23 2008 Hans de Goede <j.w.r.degoede(a)hhs.nl> 0.10.6-6
- Release bump for rpmfusion
gst-plugins-ugly-0.10.6-asf-seek.patch:
--- NEW FILE gst-plugins-ugly-0.10.6-asf-seek.patch ---
diff -up gst-plugins-ugly-0.10.6/gst/asfdemux/gstasfdemux.c.seek
gst-plugins-ugly-0.10.6/gst/asfdemux/gstasfdemux.c
--- gst-plugins-ugly-0.10.6/gst/asfdemux/gstasfdemux.c.seek 2007-08-24 14:13:36.000000000
+0200
+++ gst-plugins-ugly-0.10.6/gst/asfdemux/gstasfdemux.c 2007-08-24 14:12:33.000000000
+0200
@@ -492,19 +492,35 @@ gst_asf_demux_handle_seek_event (GstASFD
/* FIXME: should check the KEY_UNIT flag; need to adjust last_stop to
* real start of data and segment_start to indexed time for key unit seek*/
if (!gst_asf_demux_seek_index_lookup (demux, &packet, seek_time, &idx_time)) {
- /* Hackety hack, this sucks. We just seek to an earlier position
- * and let the sinks throw away the stuff before the segment start */
- if (flush && (accurate || keyunit_sync)) {
- seek_time -= 5 * GST_SECOND;
- if (seek_time < 0)
- seek_time = 0;
- }
+ /* First try to query our source to see if it can convert for us. This is
+ the case when our source is an mms stream, notice that in this case
+ gstmms will do a time based seek to get the byte offset, this is not a
+ problem as the seek to this offset needs to happen anway. */
+ gint64 offset;
+ GstFormat dest_format = GST_FORMAT_BYTES;
+
+ if (gst_pad_query_peer_convert (demux->sinkpad, GST_FORMAT_TIME, seek_time,
+ &dest_format, &offset) && dest_format == GST_FORMAT_BYTES) {
+ packet = (offset - demux->data_offset) / demux->packet_size;
+ GST_LOG_OBJECT (demux, "convert %" GST_TIME_FORMAT
+ " to bytes query result: %lld, data_ofset: %llu, packet_size: %u,"
+ " resulting packet: %u\n", GST_TIME_ARGS (seek_time), offset,
+ demux->data_offset, demux->packet_size, packet);
+ } else {
+ /* Hackety hack, this sucks. We just seek to an earlier position
+ * and let the sinks throw away the stuff before the segment start */
+ if (flush && (accurate || keyunit_sync)) {
+ seek_time -= 5 * GST_SECOND;
+ if (seek_time < 0)
+ seek_time = 0;
+ }
- packet = (guint) gst_util_uint64_scale (demux->num_packets,
- seek_time, demux->play_time);
+ packet = (guint) gst_util_uint64_scale (demux->num_packets,
+ seek_time, demux->play_time);
- if (packet > demux->num_packets)
- packet = demux->num_packets;
+ if (packet > demux->num_packets)
+ packet = demux->num_packets;
+ }
} else {
if (keyunit_sync) {
GST_DEBUG_OBJECT (demux, "key unit seek, adjust seek_time = %"
gst-plugins-ugly-0.10.6-dvdread.patch:
--- NEW FILE gst-plugins-ugly-0.10.6-dvdread.patch ---
diff -up gst-plugins-ugly-0.10.6/ext/dvdread/dvdreadsrc.c.dvdread
gst-plugins-ugly-0.10.6/ext/dvdread/dvdreadsrc.c
--- gst-plugins-ugly-0.10.6/ext/dvdread/dvdreadsrc.c.dvdread 2007-12-18 14:48:23.000000000
+0100
+++ gst-plugins-ugly-0.10.6/ext/dvdread/dvdreadsrc.c 2007-12-18 14:48:58.000000000 +0100
@@ -777,21 +777,21 @@ again:
}
/* read NAV packet */
-nav_retry:
-
len = DVDReadBlocks (src->dvd_title, src->cur_pack, 1, oneblock);
- if (len == 0)
+ if (len != 1)
goto read_error;
if (!gst_dvd_read_src_is_nav_pack (oneblock)) {
- GST_LOG_OBJECT (src, "Skipping nav packet @ pack %d", src->cur_pack);
- src->cur_pack++;
- goto nav_retry;
+ GST_LOG_OBJECT (src, "Expected nav packet @ pack %d", src->cur_pack);
+ goto read_error;
}
/* parse the contained dsi packet */
navRead_DSI (&dsi_pack, &oneblock[DSI_START_BYTE]);
- g_assert (src->cur_pack == dsi_pack.dsi_gi.nv_pck_lbn);
+ if (src->cur_pack != dsi_pack.dsi_gi.nv_pck_lbn) {
+ GST_ERROR ("src->cur_pack = %d, dsi_pack.dsi_gi.nv_pck_lbn = %d",
+ src->cur_pack, dsi_pack.dsi_gi.nv_pck_lbn);
+ }
/* determine where we go next. These values are the ones we
* mostly care about */
gstreamer-plugins-ugly-mpegaudioparse.patch:
--- NEW FILE gstreamer-plugins-ugly-mpegaudioparse.patch ---
diff -up gst-plugins-ugly-0.10.6/gst/mpegaudioparse/gstmpegaudioparse.h.orig
gst-plugins-ugly-0.10.6/gst/mpegaudioparse/gstmpegaudioparse.h
--- gst-plugins-ugly-0.10.6/gst/mpegaudioparse/gstmpegaudioparse.h.orig 2007-06-13
11:21:26.000000000 +0200
+++ gst-plugins-ugly-0.10.6/gst/mpegaudioparse/gstmpegaudioparse.h 2007-09-02
15:05:01.000000000 +0200
@@ -82,6 +82,9 @@ struct _GstMPEGAudioParse {
guchar xing_seek_table[100];
guint32 xing_vbr_scale;
guint xing_bitrate;
+
+ /* pending segment */
+ GstEvent *pending_segment;
};
struct _GstMPEGAudioParseClass {
diff -up gst-plugins-ugly-0.10.6/gst/mpegaudioparse/gstmpegaudioparse.c.orig
gst-plugins-ugly-0.10.6/gst/mpegaudioparse/gstmpegaudioparse.c
--- gst-plugins-ugly-0.10.6/gst/mpegaudioparse/gstmpegaudioparse.c.orig 2007-06-13
11:21:26.000000000 +0200
+++ gst-plugins-ugly-0.10.6/gst/mpegaudioparse/gstmpegaudioparse.c 2007-09-02
15:04:25.000000000 +0200
@@ -329,6 +329,7 @@ gst_mp3parse_sink_event (GstPad * pad, G
{
gboolean res;
GstMPEGAudioParse *mp3parse;
+ GstEvent **eventp;
mp3parse = GST_MP3PARSE (gst_pad_get_parent (pad));
@@ -379,12 +380,18 @@ gst_mp3parse_sink_event (GstPad * pad, G
GST_DEBUG_OBJECT (mp3parse, "Pushing newseg rate %g, applied rate %g, "
"format %d, start %lld, stop %lld, pos %lld\n",
rate, applied_rate, format, start, stop, pos);
- res = gst_pad_push_event (mp3parse->srcpad, event);
+ /* save the segment for later, right before we push a new buffer so that
+ * the caps are fixed and the next linked element can receive the segment. */
+ eventp = &mp3parse->pending_segment;
+ gst_event_replace (eventp, event);
+ res = TRUE;
break;
}
case GST_EVENT_FLUSH_STOP:
/* Clear our adapter and set up for a new position */
gst_adapter_clear (mp3parse->adapter);
+ eventp = &mp3parse->pending_segment;
+ gst_event_replace (eventp, NULL);
res = gst_pad_push_event (mp3parse->srcpad, event);
break;
default:
@@ -483,6 +490,12 @@ gst_mp3parse_emit_frame (GstMPEGAudioPar
mp3parse->srcpad, taglist);
}
+ /* push any pending segment now */
+ if (mp3parse->pending_segment) {
+ gst_pad_push_event (mp3parse->srcpad, mp3parse->pending_segment);
+ mp3parse->pending_segment = NULL;
+ }
+
return gst_pad_push (mp3parse->srcpad, outbuf);
}
***** Error reading new file: [Errno 2] No such file or directory:
'gstreamer-plugins-ugly.spec'
Index: .cvsignore
===================================================================
RCS file: /cvs/free/rpms/gstreamer-plugins-ugly/F-8/.cvsignore,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- .cvsignore 4 May 2008 13:32:16 -0000 1.1
+++ .cvsignore 24 Jul 2008 09:49:57 -0000 1.2
@@ -0,0 +1 @@
+gst-plugins-ugly-0.10.6.tar.bz2
Index: sources
===================================================================
RCS file: /cvs/free/rpms/gstreamer-plugins-ugly/F-8/sources,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- sources 4 May 2008 13:32:16 -0000 1.1
+++ sources 24 Jul 2008 09:49:57 -0000 1.2
@@ -0,0 +1 @@
+f1016148ecbfba968c0ef1773066988b gst-plugins-ugly-0.10.6.tar.bz2