use element time.
authorBenjamin Otte <otte@gnome.org>
Wed, 14 Jan 2004 00:53:52 +0000 (00:53 +0000)
committerBenjamin Otte <otte@gnome.org>
Wed, 14 Jan 2004 00:53:52 +0000 (00:53 +0000)
Original commit message from CVS:
2004-01-14  Benjamin Otte  <in7y118@public.uni-hamburg.de>

* ext/aalib/gstaasink.c: (gst_aasink_chain):
* ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event):
* ext/esd/esdsink.c: (gst_esdsink_chain):
* ext/libcaca/gstcacasink.c: (gst_cacasink_chain):
* ext/mas/massink.c: (gst_massink_chain):
* ext/sdl/sdlvideosink.c: (gst_sdlvideosink_chain):
* gst/matroska/matroska-demux.c: (gst_matroska_demux_parse_index),
(gst_matroska_demux_parse_metadata):
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_loop),
(gst_mpeg_parse_release_locks):
* gst/tcp/gsttcpsink.c: (gst_tcpsink_chain):
* gst/udp/gstudpsink.c: (gst_udpsink_chain):
* gst/videotestsrc/gstvideotestsrc.c: (gst_videotestsrc_get):
* sys/oss/gstosssink.c: (gst_osssink_init), (gst_osssink_chain),
(gst_osssink_change_state):
* sys/v4l/gstv4lmjpegsink.c: (gst_v4lmjpegsink_chain):
* sys/ximage/ximagesink.c: (gst_ximagesink_chain):
* sys/xvideo/xvideosink.c: (gst_xvideosink_chain),
(gst_xvideosink_release_locks):
* sys/xvimage/xvimagesink.c: (gst_xvimagesink_chain):
use element time.
* ext/alsa/gstalsaclock.c: (gst_alsa_clock_start),
(gst_alsa_clock_stop):
* gst-libs/gst/audio/audioclock.c: (gst_audio_clock_set_active),
(gst_audio_clock_get_internal_time):
simplify for use with new clocking code.
* testsuite/alsa/Makefile.am:
* testsuite/alsa/sinesrc.c: (sinesrc_init), (sinesrc_force_caps):
fix testsuite for new caps system

ChangeLog
ext/aalib/gstaasink.c
ext/esd/esdsink.c
ext/libcaca/gstcacasink.c
gst/matroska/matroska-demux.c
gst/udp/gstudpsink.c
sys/oss/gstosssink.c

index a76eaddb41472f5c43ead6382ff0fc030dcda779..4c8bbb4501b6484e3176c83b94ae32a9426ff220 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,35 @@
+2004-01-14  Benjamin Otte  <in7y118@public.uni-hamburg.de>
+
+       * ext/aalib/gstaasink.c: (gst_aasink_chain):
+       * ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event):
+       * ext/esd/esdsink.c: (gst_esdsink_chain):
+       * ext/libcaca/gstcacasink.c: (gst_cacasink_chain):
+       * ext/mas/massink.c: (gst_massink_chain):
+       * ext/sdl/sdlvideosink.c: (gst_sdlvideosink_chain):
+       * gst/matroska/matroska-demux.c: (gst_matroska_demux_parse_index),
+       (gst_matroska_demux_parse_metadata):
+       * gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_loop),
+       (gst_mpeg_parse_release_locks):
+       * gst/tcp/gsttcpsink.c: (gst_tcpsink_chain):
+       * gst/udp/gstudpsink.c: (gst_udpsink_chain):
+       * gst/videotestsrc/gstvideotestsrc.c: (gst_videotestsrc_get):
+       * sys/oss/gstosssink.c: (gst_osssink_init), (gst_osssink_chain),
+       (gst_osssink_change_state):
+       * sys/v4l/gstv4lmjpegsink.c: (gst_v4lmjpegsink_chain):
+       * sys/ximage/ximagesink.c: (gst_ximagesink_chain):
+       * sys/xvideo/xvideosink.c: (gst_xvideosink_chain),
+       (gst_xvideosink_release_locks):
+       * sys/xvimage/xvimagesink.c: (gst_xvimagesink_chain):
+         use element time.
+       * ext/alsa/gstalsaclock.c: (gst_alsa_clock_start),
+       (gst_alsa_clock_stop):
+       * gst-libs/gst/audio/audioclock.c: (gst_audio_clock_set_active),
+       (gst_audio_clock_get_internal_time):
+         simplify for use with new clocking code.
+       * testsuite/alsa/Makefile.am:
+       * testsuite/alsa/sinesrc.c: (sinesrc_init), (sinesrc_force_caps):
+         fix testsuite for new caps system
+
 2004-01-14  Benjamin Otte  <in7y118@public.uni-hamburg.de>
 
        * ext/flac/gstflacdec.c: (gst_flacdec_update_metadata):
index 74cd167dba47280df6696228b58d3e0f69bde693..521bb713fc1aa6fafc7637373ecea8c80dc47b2a 100644 (file)
@@ -356,10 +356,8 @@ gst_aasink_chain (GstPad *pad, GstData *_data)
 
   GST_DEBUG ("videosink: clock wait: %" G_GUINT64_FORMAT, GST_BUFFER_TIMESTAMP(buf));
 
-  if (aasink->clock) {
-    GstClockID id = gst_clock_new_single_shot_id (aasink->clock, GST_BUFFER_TIMESTAMP(buf));
-    gst_element_clock_wait (GST_ELEMENT (aasink), id, NULL);
-    gst_clock_id_free (id);
+  if (aasink->clock && GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
+    gst_element_wait (GST_ELEMENT (aasink), GST_BUFFER_TIMESTAMP (buf));
   }
 
   aa_render (aasink->context, &aasink->ascii_parms, 
index f6c462229e02d6d2341edcc4d011116980b69e0f..1ea55453050ff11f91801c2c1aca1e70fb1045f8 100644 (file)
@@ -280,10 +280,7 @@ gst_esdsink_chain (GstPad *pad, GstData *_data)
        gint64 value;
 
        if (gst_event_discont_get_value (event, GST_FORMAT_TIME, &value)) {
-         if (!gst_clock_handle_discont (esdsink->clock, value)){
-           gst_audio_clock_set_active (GST_AUDIO_CLOCK (esdsink->provided_clock),
-               FALSE);
-         }
+         gst_element_set_time (GST_ELEMENT (esdsink), value);
          esdsink->handled = 0;
        }
        esdsink->resync = TRUE;
@@ -306,25 +303,13 @@ gst_esdsink_chain (GstPad *pad, GstData *_data)
       if (esdsink->clock){
        gint delay = 0;
        gint64 queued;
-       GstClockTimeDiff jitter;
 
        delay = gst_esdsink_get_latency (esdsink);
        queued = delay * GST_SECOND / esdsink->frequency;
 
        if (esdsink->resync && esdsink->sync) {
-         GstClockID id = gst_clock_new_single_shot_id (esdsink->clock,
-             GST_BUFFER_TIMESTAMP (buf) - queued);
-
-         gst_element_clock_wait (GST_ELEMENT (esdsink), id, &jitter);
-         gst_clock_id_free (id);
-
-         if (jitter >= 0){
-           gst_clock_handle_discont (esdsink->clock,
-               GST_BUFFER_TIMESTAMP (buf) - queued + jitter);
-           to_write = size;
-           gst_audio_clock_set_active ((GstAudioClock *)esdsink->provided_clock, TRUE);
-           esdsink->resync = FALSE;
-         }
+         gst_element_wait (GST_ELEMENT (esdsink), GST_BUFFER_TIMESTAMP (buf) - queued); 
+
        }else{
          to_write = size;
        }
index 1cd674e5e946a016eb3d0389dcfbf33f0a995487..dfd6651975c5f035ab06c8a766a45486c8540714 100644 (file)
@@ -335,19 +335,11 @@ gst_cacasink_chain (GstPad *pad, GstData *_data)
 
   cacasink = GST_CACASINK (gst_pad_get_parent (pad));
 
-  if (GST_VIDEOSINK_CLOCK (cacasink) && time != -1) {
-    GstClockReturn ret;
-
-    cacasink->id = gst_clock_new_single_shot_id (
-                       GST_VIDEOSINK_CLOCK (cacasink), time);
-
+  if (cacasink->clock && GST_CLOCK_TIME_IS_VALID (time)) {
     GST_DEBUG ("videosink: clock %s wait: %" G_GUINT64_FORMAT " %u", 
                GST_OBJECT_NAME (GST_VIDEOSINK_CLOCK (cacasink)),
                time, GST_BUFFER_SIZE (buf));
-
-    ret = gst_clock_id_wait (cacasink->id, &jitter);
-    gst_clock_id_free (cacasink->id);
-    cacasink->id = NULL;
+    gst_element_wait (GST_ELEMENT (cacasink), GST_BUFFER_TIMESTAMP (buf));
   }
 
   caca_clear ();
index 1cd3919665dbc223aa47c28bf1121f82b7ac2a06..4e6f0e69aa6f31b300cf64cfb6fbfaad1564eba2 100644 (file)
@@ -1225,7 +1225,6 @@ gst_matroska_demux_parse_index (GstMatroskaDemux *demux,
 
   if (prevent_eos) {
     length = gst_bytestream_length (ebml->bs);
-    gst_clock_set_active (demux->clock, FALSE);
   }
 
   while (res) {
@@ -1391,10 +1390,6 @@ gst_matroska_demux_parse_index (GstMatroskaDemux *demux,
     }
   }
 
-  if (prevent_eos) {
-    gst_clock_set_active (demux->clock, TRUE);
-  }
-
   return res;
 }
 
@@ -1496,7 +1491,6 @@ gst_matroska_demux_parse_metadata (GstMatroskaDemux *demux,
 
   if (prevent_eos) {
     length = gst_bytestream_length (ebml->bs);
-    gst_clock_set_active (demux->clock, FALSE);
   }
 
   while (res) {
@@ -1531,10 +1525,6 @@ gst_matroska_demux_parse_metadata (GstMatroskaDemux *demux,
     }
   }
 
-  if (prevent_eos) {
-    gst_clock_set_active (demux->clock, TRUE);
-  }
-
   return res;
 }
 
index 4773d2919b9f3eef99722dbefa84c1671ddeb03e..c9a7cdc741c921e80cb3ecb67814d6b90989c5e8 100644 (file)
@@ -274,12 +274,8 @@ gst_udpsink_chain (GstPad *pad, GstData *_data)
 
   udpsink = GST_UDPSINK (GST_OBJECT_PARENT (pad));
   
-  if (udpsink->clock) {
-    GstClockID id = gst_clock_new_single_shot_id (udpsink->clock, GST_BUFFER_TIMESTAMP (buf));
-
-    GST_DEBUG ("udpsink: clock wait: %" G_GUINT64_FORMAT "\n", GST_BUFFER_TIMESTAMP (buf));
-    gst_element_clock_wait (GST_ELEMENT (udpsink), id, NULL);
-    gst_clock_id_free (id);
+  if (udpsink->clock && GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
+    gst_element_wait (GST_ELEMENT (udpsink), GST_BUFFER_TIMESTAMP (buf));
   }
   
   tolen = sizeof(udpsink->theiraddr);
index dd0a2f36ad38f9b75f2edad24116c9ce4570b2ba..58bb16b99485a97f04cbe0ddfce85dee613db96e 100644 (file)
@@ -204,7 +204,6 @@ gst_osssink_init (GstOssSink *osssink)
 
   osssink->bufsize = 4096;
   osssink->chunk_size = 4096;
-  osssink->resync = FALSE;
   osssink->mute = FALSE;
   osssink->sync = TRUE;
   osssink->provided_clock = gst_audio_clock_new ("ossclock", gst_osssink_get_time, osssink);
@@ -339,20 +338,6 @@ gst_osssink_chain (GstPad *pad, GstData *_data)
        gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssink->provided_clock), FALSE);
        gst_pad_event_default (pad, event);
         return;
-      case GST_EVENT_DISCONTINUOUS:
-      {
-       gint64 value;
-
-        ioctl (GST_OSSELEMENT (osssink)->fd, SNDCTL_DSP_RESET);
-       if (gst_event_discont_get_value (event, GST_FORMAT_TIME, &value)) {
-          if (!gst_clock_handle_discont (osssink->clock, value))
-            gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssink->provided_clock), FALSE);
-         osssink->handled = 0;
-       }
-        osssink->resync = TRUE;
-
-        break;
-      }
       default:
        gst_pad_event_default (pad, event);
         return;
@@ -372,44 +357,7 @@ gst_osssink_chain (GstPad *pad, GstData *_data)
   if (GST_OSSELEMENT (osssink)->fd >= 0) {
     if (!osssink->mute) {
       guchar *data = GST_BUFFER_DATA (buf);
-      gint size = GST_BUFFER_SIZE (buf);
-      gint to_write = 0;
-
-      if (osssink->clock) {
-        gint delay = 0;
-       gint64 queued;
-        GstClockTimeDiff jitter;
-    
-       delay = gst_osssink_get_delay (osssink);
-       queued = delay * GST_SECOND / GST_OSSELEMENT (osssink)->bps;
-
-       if  (osssink->resync && osssink->sync) {
-          GstClockID id = gst_clock_new_single_shot_id (osssink->clock, buftime - queued);
-
-          gst_element_clock_wait (GST_ELEMENT (osssink), id, &jitter);
-         gst_clock_id_free (id);
-
-          if (jitter >= 0) {
-            gst_clock_handle_discont (osssink->clock, buftime - queued + jitter);
-           to_write = size;
-            gst_audio_clock_set_active ((GstAudioClock*)osssink->provided_clock, TRUE);
-           osssink->resync = FALSE;
-          }
-       }
-       else {
-         to_write = size;
-        }
-      }
-      /* no clock, try to be as fast as possible */
-      else {
-        audio_buf_info ospace;
-
-        ioctl (GST_OSSELEMENT (osssink)->fd, SNDCTL_DSP_GETOSPACE, &ospace);
-
-        if (ospace.bytes >= size) {
-         to_write = size;
-       }
-      }
+      gint to_write = GST_BUFFER_SIZE (buf);
 
       while (to_write > 0) {
         gint done = write (GST_OSSELEMENT (osssink)->fd, data, 
@@ -425,6 +373,8 @@ gst_osssink_chain (GstPad *pad, GstData *_data)
          osssink->handled += done;
        }
       }
+    } else {
+      g_warning ("muting osssinks unimplemented wrt clocks!");
     }
   }
 
@@ -583,13 +533,11 @@ gst_osssink_change_state (GstElement *element)
     case GST_STATE_READY_TO_PAUSED:
       break;
     case GST_STATE_PAUSED_TO_PLAYING:
-      osssink->resync = TRUE;
       break;
     case GST_STATE_PLAYING_TO_PAUSED:
       if (GST_FLAG_IS_SET (element, GST_OSSSINK_OPEN)) 
         ioctl (GST_OSSELEMENT (osssink)->fd, SNDCTL_DSP_RESET, 0);
       gst_audio_clock_set_active (GST_AUDIO_CLOCK (osssink->provided_clock), FALSE);
-      osssink->resync = TRUE;
       break;
     case GST_STATE_PAUSED_TO_READY:
       if (GST_FLAG_IS_SET (element, GST_OSSSINK_OPEN))