+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):
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,
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;
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;
}
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 ();
if (prevent_eos) {
length = gst_bytestream_length (ebml->bs);
- gst_clock_set_active (demux->clock, FALSE);
}
while (res) {
}
}
- if (prevent_eos) {
- gst_clock_set_active (demux->clock, TRUE);
- }
-
return res;
}
if (prevent_eos) {
length = gst_bytestream_length (ebml->bs);
- gst_clock_set_active (demux->clock, FALSE);
}
while (res) {
}
}
- if (prevent_eos) {
- gst_clock_set_active (demux->clock, TRUE);
- }
-
return res;
}
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);
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);
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;
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,
osssink->handled += done;
}
}
+ } else {
+ g_warning ("muting osssinks unimplemented wrt clocks!");
}
}
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))