summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Otte <otte@gnome.org>2004-01-14 00:53:52 +0000
committerBenjamin Otte <otte@gnome.org>2004-01-14 00:53:52 +0000
commit9a9f767369ed4ddc8803e62bfcdb9403813220d5 (patch)
tree46d7e710a9ae199b81fe480b33e21223c778176b
parentf4c6604e6c4295d1c580860386f7e69ea50dcdaa (diff)
use element time.
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
-rw-r--r--ChangeLog32
-rw-r--r--ext/aalib/gstaasink.c6
-rw-r--r--ext/esd/esdsink.c21
-rw-r--r--ext/libcaca/gstcacasink.c12
-rw-r--r--gst/matroska/matroska-demux.c10
-rw-r--r--gst/udp/gstudpsink.c8
-rw-r--r--sys/oss/gstosssink.c58
7 files changed, 44 insertions, 103 deletions
diff --git a/ChangeLog b/ChangeLog
index a76eaddb..4c8bbb45 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,37 @@
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):
* ext/flac/gstflacenc.c: (add_one_tag):
length is already host endian, no need to convert. Fixes playback of
diff --git a/ext/aalib/gstaasink.c b/ext/aalib/gstaasink.c
index 74cd167d..521bb713 100644
--- a/ext/aalib/gstaasink.c
+++ b/ext/aalib/gstaasink.c
@@ -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,
diff --git a/ext/esd/esdsink.c b/ext/esd/esdsink.c
index f6c46222..1ea55453 100644
--- a/ext/esd/esdsink.c
+++ b/ext/esd/esdsink.c
@@ -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;
}
diff --git a/ext/libcaca/gstcacasink.c b/ext/libcaca/gstcacasink.c
index 1cd674e5..dfd66519 100644
--- a/ext/libcaca/gstcacasink.c
+++ b/ext/libcaca/gstcacasink.c
@@ -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 ();
diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c
index 1cd39196..4e6f0e69 100644
--- a/gst/matroska/matroska-demux.c
+++ b/gst/matroska/matroska-demux.c
@@ -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;
}
diff --git a/gst/udp/gstudpsink.c b/gst/udp/gstudpsink.c
index 4773d291..c9a7cdc7 100644
--- a/gst/udp/gstudpsink.c
+++ b/gst/udp/gstudpsink.c
@@ -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);
diff --git a/sys/oss/gstosssink.c b/sys/oss/gstosssink.c
index dd0a2f36..58bb16b9 100644
--- a/sys/oss/gstosssink.c
+++ b/sys/oss/gstosssink.c
@@ -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))