rpms/gstreamer-plugins-ugly/F-8 gst-plugins-ugly-0.10.6-asf-seek.patch, NONE, 1.1 gst-plugins-ugly-0.10.6-dvdread.patch, NONE, 1.1 gstreamer-plugins-ugly-mpegaudioparse.patch, NONE, 1.1 gstreamer-plugins-ugly.spec, NONE, 1.1 .cvsignore, 1.1, 1.2 sources, 1.1, 1.2

Hans de Goede jwrdegoede at rpmfusion.org
Thu Jul 24 11:49:58 CEST 2008


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 at 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



More information about the rpmfusion-commits mailing list