Commit graph

4877 commits

Author SHA1 Message Date
Jan Schmidt
03c24b64c6 Releasing 0.10.2
Original commit message from CVS:
Releasing 0.10.2
2006-02-09 11:22:38 +00:00
Jan Schmidt
79adf3a92a Update .po files
Original commit message from CVS:
Update .po files
2006-02-08 17:35:05 +00:00
Jan Schmidt
5b22ee1976 Oops, jumping the gun with the ChangeLog entry
Original commit message from CVS:
Oops, jumping the gun with the ChangeLog entry
2006-02-08 17:18:20 +00:00
Jan Schmidt
1a63276051 configure.ac: Bump core and plugins-base requirement to 0.10.2.2 for API additions (and 1 migration of gst_bin_find_u...
Original commit message from CVS:
* configure.ac:
Bump core and plugins-base requirement to 0.10.2.2
for API additions (and 1 migration of gst_bin_find_unconnected_pad)
2006-02-08 17:16:46 +00:00
Tim-Philipp Müller
66310b80de ext/: Register musicbrainz tags.
Original commit message from CVS:
* ext/flac/gstflac.c: (plugin_init):
* ext/speex/gstspeex.c: (plugin_init):
Register musicbrainz tags.
2006-02-08 17:12:40 +00:00
Thomas Vander Stichele
8a4adb4ab9 remove unused var
Original commit message from CVS:
remove unused var
2006-02-07 18:31:31 +00:00
Thomas Vander Stichele
6342cdf0ec gst/qtdemux/qtdemux.c: use the correct variable to check if we can calculate the last chunk. Looks like an obvious b...
Original commit message from CVS:

* gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header),
(qtdemux_parse_trak):
use the correct variable to check if we can calculate
the last chunk.  Looks like an obvious bug, and makes
the dump of offsets comparable to other tools
2006-02-07 18:01:17 +00:00
Thomas Vander Stichele
6aac14d041 gst/qtdemux/qtdemux.c: clean up some debugging, using _OBJECT, moving recurring messages to LOG level
Original commit message from CVS:

* gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header),
(qtdemux_parse_trak):
clean up some debugging, using _OBJECT, moving recurring
messages to LOG level
2006-02-07 17:54:42 +00:00
Tim-Philipp Müller
02a3d611a8 ext/gconf/gconf.h: Remove declaration of function that no longer exists.
Original commit message from CVS:
* ext/gconf/gconf.h:
Remove declaration of function that no longer exists.
2006-02-07 16:23:33 +00:00
Zaheer Abbas Merali
02a1c7994c ext/shout2/gstshout2.c: Make shout2 work for non ogg streams
Original commit message from CVS:
2006-02-07  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

* ext/shout2/gstshout2.c: (gst_shout2send_render),
(gst_shout2send_setcaps), (gst_shout2send_change_state):
Make shout2 work for non ogg streams
2006-02-07 13:39:08 +00:00
Wim Taymans
21dbd4eb9a gst/udp/gstmultiudpsink.*: Updated docs.
Original commit message from CVS:
* gst/udp/gstmultiudpsink.c: (gst_multiudpsink_class_init),
(gst_multiudpsink_render), (gst_multiudpsink_get_property),
(gst_multiudpsink_init_send), (gst_multiudpsink_add),
(gst_multiudpsink_remove), (gst_multiudpsink_clear),
(gst_multiudpsink_get_stats), (gst_multiudpsink_change_state):
* gst/udp/gstmultiudpsink.h:
Updated docs.
Added properties bytes-served, bytes_to_serve.
Post proper error messages,
Emit client added signal too.
2006-02-06 17:26:43 +00:00
Wim Taymans
2651b40adf gst/qtdemux/qtdemux.*: Some QT demux loving.
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (gst_qtdemux_handle_src_query),
(gst_qtdemux_handle_src_event), (gst_qtdemux_loop_header),
(qtdemux_inflate), (qtdemux_parse), (qtdemux_parse_trak),
(qtdemux_parse_udta), (qtdemux_tag_add_str), (qtdemux_tag_add_num),
(qtdemux_tag_add_gnre), (gst_qtdemux_handle_esds),
(qtdemux_video_caps), (qtdemux_audio_caps):
* gst/qtdemux/qtdemux.h:
Some QT demux loving.
Handle seeking in a less broken way.
Fix AMR caps to match the AMR decoder.
Set first timestamp on AMR samples to 0 for now.
Remove some \n in DEBUG strings.
Use _scale_int for maximum precision.
2006-02-06 15:41:25 +00:00
Thomas Vander Stichele
5118effe7a adding docs for multiudpsink
Original commit message from CVS:
adding docs for multiudpsink
2006-02-06 15:31:16 +00:00
Thomas Vander Stichele
1dffb8370c gst/level/gstlevel.c: peak below decay is not necessarily an error, so don't ERROR log
Original commit message from CVS:

* gst/level/gstlevel.c: (gst_level_transform_ip):
peak below decay is not necessarily an error, so don't ERROR log
2006-02-06 15:28:56 +00:00
Thomas Vander Stichele
5cfa2c1a0c cvs versions
Original commit message from CVS:
cvs versions
2006-02-06 15:27:06 +00:00
Tim-Philipp Müller
dce4937fb1 gst/matroska/ebml-write.*: Make sure we send a newsegment event in BYTES format before sending buffers (#328531).
Original commit message from CVS:
* gst/matroska/ebml-write.c: (gst_ebml_write_reset),
(gst_ebml_write_flush_cache), (gst_ebml_write_element_push),
(gst_ebml_write_seek):
* gst/matroska/ebml-write.h:
Make sure we send a newsegment event in BYTES format
before sending buffers (#328531).
2006-02-06 14:25:34 +00:00
Tim-Philipp Müller
3a27956d47 Pass unhandled queries upstream instead of just dropping them (#326446). Update query type arrays here and there.
Original commit message from CVS:
* ext/dv/gstdvdemux.c: (gst_dvdemux_src_query),
(gst_dvdemux_sink_query):
* ext/flac/gstflacdec.c: (gst_flac_dec_src_query):
* ext/speex/gstspeexdec.c: (speex_get_query_types),
(speex_dec_src_query):
* ext/speex/gstspeexenc.c: (gst_speexenc_src_query),
(gst_speexenc_sink_query):
* gst/avi/gstavidemux.c: (gst_avi_demux_handle_src_query):
* gst/matroska/matroska-demux.c:
(gst_matroska_demux_get_src_query_types),
(gst_matroska_demux_handle_src_query):
* gst/wavparse/gstwavparse.c: (gst_wavparse_get_query_types),
(gst_wavparse_pad_query):
Pass unhandled queries upstream instead of just dropping
them (#326446). Update query type arrays here and there.
2006-02-06 12:18:45 +00:00
Tim-Philipp Müller
323331a051 tests/check/elements/matroskamux.c: Collectpads in core got changed and now also holds a reference to any pad that is...
Original commit message from CVS:
* tests/check/elements/matroskamux.c: (setup_src_pad):
Collectpads in core got changed and now also holds a
reference to any pad that is part of it. Fix refcount
checks in test case accordingly.
2006-02-06 11:57:52 +00:00
Tim-Philipp Müller
6f224b2556 gst/apetag/gstapedemux.h: Fix include, for now GstTagDemux is in the apetag dir.
Original commit message from CVS:
* gst/apetag/gstapedemux.h:
Fix include, for now GstTagDemux is in the apetag dir.
2006-02-06 11:41:43 +00:00
Tim-Philipp Müller
7142afe639 docs/plugins/: Add cdio plugin to docs.
Original commit message from CVS:
* docs/plugins/Makefile.am:
* docs/plugins/gst-plugins-good-plugins-docs.sgml:
* docs/plugins/gst-plugins-good-plugins-sections.txt:
* docs/plugins/inspect/plugin-cdio.xml:
Add cdio plugin to docs.
* ext/cdio/gstcdiocddasrc.c:
Add gtk-doc blurb.
* ext/cdio/gstcdio.c:
The plugin is called 'cdio' not 'cddio'.
2006-02-06 11:34:23 +00:00
Tim-Philipp Müller
5bc69ce9bd Add APE tag demuxer (#325649).
Original commit message from CVS:
* configure.ac:
* docs/plugins/Makefile.am:
* docs/plugins/gst-plugins-good-plugins-docs.sgml:
* docs/plugins/gst-plugins-good-plugins-sections.txt:
* docs/plugins/gst-plugins-good-plugins.hierarchy:
* docs/plugins/inspect/plugin-apetag.xml:
* gst/apetag/Makefile.am:
* gst/apetag/gstapedemux.c:
* gst/apetag/gstapedemux.h:
* gst/apetag/gsttagdemux.c:
* gst/apetag/gsttagdemux.h:
Add APE tag demuxer (#325649).
2006-02-06 10:56:07 +00:00
Jan Schmidt
059527abc0 ext/gconf/: Ignore changing the GConf key to "". Ignore GConf key updates that don't actually change the string.
Original commit message from CVS:
* ext/gconf/gconf.c: (gst_gconf_get_default_audio_sink),
(gst_gconf_get_default_video_sink),
(gst_gconf_get_default_audio_src),
(gst_gconf_get_default_video_src):
* ext/gconf/gconf.h:
* ext/gconf/gstgconfaudiosink.c: (gst_gconf_audio_sink_reset),
(gst_gconf_audio_sink_init), (gst_gconf_audio_sink_dispose),
(do_toggle_element):
* ext/gconf/gstgconfaudiosink.h:
* ext/gconf/gstgconfaudiosrc.c: (gst_gconf_audio_src_reset),
(gst_gconf_audio_src_init), (gst_gconf_audio_src_dispose),
(do_toggle_element):
* ext/gconf/gstgconfaudiosrc.h:
* ext/gconf/gstgconfvideosink.c: (gst_gconf_video_sink_reset),
(gst_gconf_video_sink_init), (gst_gconf_video_sink_dispose),
(do_toggle_element):
* ext/gconf/gstgconfvideosink.h:
* ext/gconf/gstgconfvideosrc.c: (gst_gconf_video_src_reset),
(gst_gconf_video_src_init), (gst_gconf_video_src_dispose),
(do_toggle_element):
* ext/gconf/gstgconfvideosrc.h:
Ignore changing the GConf key to "". Ignore GConf key updates
that don't actually change the string.
For now, ignore the GConf key when the state is > READY, as
it breaks streaming. Sometime it will be nice to bring the
new sink online even mid-stream, by sending NEWSEGMENT info
and possibly prerolling.
(Fixes #326736)
2006-02-05 22:22:56 +00:00
Jan Schmidt
07c1dceae0 gst/goom/: Make goom reentrant by moving all important static variables into instance structures.
Original commit message from CVS:
* gst/goom/filters.c: (zoomFilterNew), (calculatePXandPY),
(setPixelRGB), (setPixelRGB_), (getPixelRGB), (getPixelRGB_),
(zoomFilterSetResolution), (zoomFilterDestroy),
(zoomFilterFastRGB), (pointFilter):
* gst/goom/filters.h:
* gst/goom/goom_core.c: (goom_init), (goom_set_resolution),
(goom_update), (goom_close):
* gst/goom/goom_core.h:
* gst/goom/goom_tools.h:
* gst/goom/graphic.c:
* gst/goom/gstgoom.c: (gst_goom_class_init), (gst_goom_init),
(gst_goom_dispose), (gst_goom_src_setcaps), (gst_goom_chain):
* gst/goom/gstgoom.h:
* gst/goom/lines.c: (goom_lines):
* gst/goom/lines.h:
Make goom reentrant by moving all important static variables
into instance structures.
(Fixes #329181)
2006-02-05 20:43:49 +00:00
Tim-Philipp Müller
4b5490014f gst/avi/gstavidemux.*: Third attempt, use gst_pad_is_linked() this time.
Original commit message from CVS:
* gst/avi/gstavidemux.c: (gst_avi_demux_parse_stream),
(gst_avi_demux_all_source_pads_unlinked),
(gst_avi_demux_process_next_entry):
* gst/avi/gstavidemux.h:
Third attempt, use gst_pad_is_linked() this time.
2006-02-04 15:41:43 +00:00
Jan Schmidt
4836bfbcf7 gst/id3demux/id3v2frames.c: Adjust for data length indicators when parsing (Fixes #329810)
Original commit message from CVS:
* gst/id3demux/id3v2frames.c: (id3demux_id3v2_parse_frame),
(parse_split_strings):
Adjust for data length indicators when parsing (Fixes #329810)
Fix stupid bug parsing UTF-8 tag text.
Output tag strings with multiple fields as multiple tags, so the
app gets all the data.
2006-02-04 13:30:12 +00:00
Edgard Lima
9410acd1fa Fixed a bug add in last commit, where no event is send. Thanks Tim to show me.
Original commit message from CVS:
Fixed a bug add in last commit, where no event is send. Thanks Tim to show me.
2006-02-03 20:05:20 +00:00
Edgard Lima
789a7b20ac Just make it compile with --disable-gst-debug.
Original commit message from CVS:
Just make it compile with --disable-gst-debug.
2006-02-03 18:07:35 +00:00
Christian Schaller
7ddee515d2 update spec file
Original commit message from CVS:
update spec file
2006-02-03 16:55:42 +00:00
Jan Schmidt
1d6e1c999a gst/id3demux/id3v2frames.c: Never output a tag with a null contents string.
Original commit message from CVS:
* gst/id3demux/id3v2frames.c: (parse_text_identification_frame),
(id3v2_tag_to_taglist), (id3v2_genre_string_to_taglist),
(id3v2_genre_fields_to_taglist):
Never output a tag with a null contents string.
2006-02-03 13:06:24 +00:00
Tim-Philipp Müller
9a64d2bb3a gst/avi/gstavidemux.c: Only pause if all pads are unlinked AND we've tried to send data on all of them at least once.
Original commit message from CVS:
* gst/avi/gstavidemux.c: (gst_avi_demux_all_source_pads_unlinked):
Only pause if all pads are unlinked AND we've tried to send data
on all of them at least once.
2006-02-02 21:00:16 +00:00
Tim-Philipp Müller
00ed57af01 gst/avi/gstavidemux.c: Make loop function/task pause itself when all source pads are unlinked.
Original commit message from CVS:
* gst/avi/gstavidemux.c: (gst_avi_demux_all_source_pads_unlinked),
(gst_avi_demux_process_next_entry), (gst_avi_demux_loop):
Make loop function/task pause itself when all source pads are
unlinked.
2006-02-02 12:29:24 +00:00
Tim-Philipp Müller
4062420223 Use new functions from core to render a bin from a string. Fixes build. Up requirements to core CVS.
Original commit message from CVS:
* configure.ac:
* ext/gconf/gconf.c: (gst_gconf_render_bin_from_key):
Use new functions from core to render a bin from a
string. Fixes build. Up requirements to core CVS.
2006-02-02 10:47:15 +00:00
Tim-Philipp Müller
638225aebb gst/auparse/gstauparse.c: Don't push buffers into the adapter that we are going to push downstream again without fram...
Original commit message from CVS:
* gst/auparse/gstauparse.c: (gst_au_parse_chain):
Don't push buffers into the adapter that we are going to
push downstream again without framing anyway. Also, the
adaptor takes ownership of buffers put into it (fixes
auparse pushing invalid buffers for .au files with
ADPCM contents). Finally, set caps on all outgoing buffers.
2006-02-01 11:01:04 +00:00
Jan Schmidt
1e661e8ff3 gst/id3demux/: Someone should kick my butt. Remove ID3v1 tags from the end of the file.
Original commit message from CVS:

* gst/id3demux/gstid3demux.c: (gst_id3demux_chain),
(gst_id3demux_read_id3v1), (gst_id3demux_sink_activate),
(gst_id3demux_send_tag_event):
* gst/id3demux/id3tags.c: (id3demux_read_id3v1_tag):
Someone should kick my butt. Remove ID3v1 tags from the end of the
file.

Improve error messages. Send the TAG message as soon as we complete
typefinding, instead of waiting until we send the first buffer.
Downstream tag event is still sent before the first buffer.
2006-01-30 23:13:05 +00:00
Tim-Philipp Müller
d258c36a9f ext/wavpack/gstwavpackdec.c: Add debug category, use boilerplate macros, fix handling of widths of 32 bits.
Original commit message from CVS:
* ext/wavpack/gstwavpackdec.c: (gst_wavpack_dec_setcaps),
(gst_wavpack_dec_base_init), (gst_wavpack_dec_dispose),
(gst_wavpack_dec_class_init), (gst_wavpack_dec_sink_event),
(gst_wavpack_dec_init), (gst_wavpack_dec_format_samples),
(gst_wavpack_dec_chain), (gst_wavpack_dec_plugin_init):
Add debug category, use boilerplate macros, fix handling
of widths of 32 bits.
* ext/wavpack/gstwavpackparse.c: (gst_wavpack_parse_base_init),
(gst_wavpack_parse_dispose), (gst_wavpack_parse_class_init),
(gst_wavpack_parse_index_get_last_entry),
(gst_wavpack_parse_index_get_entry_from_sample),
(gst_wavpack_parse_index_append_entry), (gst_wavpack_parse_reset),
(gst_wavpack_parse_src_query),
(gst_wavpack_parse_scan_to_find_sample),
(gst_wavpack_parse_send_newsegment),
(gst_wavpack_parse_handle_seek_event),
(gst_wavpack_parse_src_event), (gst_wavpack_parse_init),
(gst_wavpack_parse_get_upstream_length),
(gst_wavpack_parse_pull_buffer),
(gst_wavpack_parse_create_src_pad), (gst_wavpack_parse_loop),
(gst_wavpack_parse_change_state),
(gst_wavepack_parse_sink_activate),
(gst_wavepack_parse_sink_activate_pull),
(gst_wavpack_parse_plugin_init):
* ext/wavpack/gstwavpackparse.h:
Rewrite a bit, mostly to fix flow logic and to make seeking work.
Fix buffer/event refcounting. Add some debug statements. Add
width of 32 to source pad template caps. Use boilerplate macros.
2006-01-29 20:07:49 +00:00
Andy Wingo
f45b92e3f0 ext/dv/: Call dv_set_error_log (dv_decoder_t *, NULL); after dv_decoder_new to not have warings flooding stderr. this...
Original commit message from CVS:
2006-01-27  Jan Gerber  <j@bootlab.org>

Reviewed by: Andy Wingo <wingo@pobox.com>

* ext/dv/gstdvdec.c (gst_dvdec_change_state):
* ext/dv/gstdvdemux.c (gst_dvdemux_change_state):
Call dv_set_error_log (dv_decoder_t *, NULL); after dv_decoder_new
to not have warings flooding stderr. this is the suggested way
also used in dvgrab and kino. (#328336)
2006-01-27 12:17:56 +00:00
Jan Schmidt
6b789d2dd1 sys/oss/gstosssink.c: Free the device name string when finalised.
Original commit message from CVS:
* sys/oss/gstosssink.c: (gst_oss_sink_class_init),
(gst_oss_sink_init), (gst_oss_sink_finalise):
Free the device name string when finalised.
2006-01-27 01:43:07 +00:00
Tim-Philipp Müller
7814b56eee gst/qtdemux/qtdemux.c: Fix wrong memcpy source pointer.
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (qtdemux_parse_trak):
Fix wrong memcpy source pointer.
2006-01-26 16:23:42 +00:00
Tim-Philipp Müller
916d083e99 gst/id3demux/gstid3demux.c: Don't put function calls in g_return_if_fail() statements, or they'll be replaced with NO...
Original commit message from CVS:
* gst/id3demux/gstid3demux.c: (gst_id3demux_remove_srcpad):
Don't put function calls in g_return_if_fail() statements,
or they'll be replaced with NOOPs if someone compiles with
G_DISABLE_CHECKS defined.
2006-01-25 22:05:28 +00:00
Jan Schmidt
6021f2b54f changelog surgery
Original commit message from CVS:
changelog surgery
2006-01-25 20:33:05 +00:00
Jan Schmidt
73c1153f52 gst/id3demux/id3v2frames.c: Never trust ANY information encoded in a media file, especially when it's giving you size...
Original commit message from CVS:
* gst/id3demux/id3v2frames.c: (id3demux_id3v2_parse_frame):
Never trust ANY information encoded in a media file, especially
when it's giving you sizes. (Fixes #328452)
2006-01-25 18:23:05 +00:00
Edgard Lima
d653e45ce4 I'm too lazy to comment this
Original commit message from CVS:
Patch written by Kai Vehmanen <kai.vehmanen@nokia.com> applied. See bug #325148.
2006-01-24 18:03:46 +00:00
Edward Hervey
98acdd1dc3 gst/qtdemux/qtdemux.c: More coherent framerate setting on caps.
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (gst_qtdemux_loop_header),
(gst_qtdemux_add_stream), (qtdemux_parse_trak):
More coherent framerate setting on caps.
If sample_size is available, use that for the samples' duration in
the index. This enables single frame streams to work (and I imagine
fixes some other cases).
Tested on testsuite, no regression.
2006-01-24 11:58:53 +00:00
Edward Hervey
593a09066d gst/matroska/: Added recognition of Real Audio and Video streams in matroska demuxer.
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroska_demux_video_caps),
(gst_matroska_demux_audio_caps), (gst_matroska_demux_plugin_init):
* gst/matroska/matroska-ids.h:
Added recognition of Real Audio and Video streams in matroska demuxer.
2006-01-23 18:39:31 +00:00
Edward Hervey
07d2fd89cb gst/qtdemux/qtdemux.c: Added codec recognition for: _ VP31 : video/x-vp3 _ AVDJ : image/jpeg _ dvcp, dvc : video/x-d...
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (qtdemux_parse_trak),
(qtdemux_video_caps), (qtdemux_audio_caps):
Added codec recognition for:
_ VP31 : video/x-vp3
_ AVDJ : image/jpeg
_ dvcp, dvc  : video/x-dv, systemstream=(boolean)false
_ 0x6d730017 : audio/x-adpcm, layout=(string)quicktime
2006-01-23 15:10:55 +00:00
Jan Schmidt
7ca387e542 gst/id3demux/id3v2frames.c: Remove errant break statement, and fix compilation with older GCC.
Original commit message from CVS:
* gst/id3demux/id3v2frames.c: (id3v2_tag_to_taglist):
Remove errant break statement, and fix compilation with
older GCC.
2006-01-23 14:32:47 +00:00
Jan Schmidt
70db0f6985 Mention that my last commit fixes #328241
Original commit message from CVS:

Mention that my last commit fixes #328241
2006-01-23 12:04:12 +00:00
Tim-Philipp Müller
948743037b sys/sunaudio/: Export functions that are needed in other parts of the code, makes the mixer actually work; adjust mag...
Original commit message from CVS:
Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>
* sys/sunaudio/gstsunaudiomixerctrl.c:
* sys/sunaudio/gstsunaudiosink.c: (gst_sunaudiosink_init):
Export functions that are needed in other parts of the code,
makes the mixer actually work; adjust magic minimum buffer-time
value from 3ms to 5ms to work around stuttering during mp3
playback (#327765).
2006-01-23 11:06:34 +00:00
Tim-Philipp Müller
00c44209d8 gst/matroska/matroska-mux.c: Fix possible deadlock in matroska muxer (#327825).
Original commit message from CVS:
Reviewed by: Tim-Philipp Müller  <tim at centricular dot net>
* gst/matroska/matroska-mux.c: (gst_matroska_mux_best_pad),
(gst_matroska_mux_write_data), (gst_matroska_mux_collected):
Fix possible deadlock in matroska muxer (#327825).
2006-01-23 10:44:03 +00:00
Jens Granseuer
f42029d79f C89 fixes: declare variables at the beginning of a block and
Original commit message from CVS:
* ext/libpng/gstpngenc.c: (gst_pngenc_chain):
* gst/avi/gstavidemux.c: (gst_avi_demux_invert):
* gst/rtp/gstrtpmp4vdepay.c: (gst_rtp_mp4v_depay_setcaps):
* gst/rtsp/sdpmessage.h:
* gst/udp/gstdynudpsink.c: (gst_dynudpsink_render):
* gst/udp/gstmultiudpsink.c: (gst_multiudpsink_get_stats):
C89 fixes: declare variables at the beginning of a block and
make gcc-2.9x happy (#328264; patch by: Jens Granseuer
<jensgr at gmx dot net>).
2006-01-23 09:59:03 +00:00