Commit graph

917 commits

Author SHA1 Message Date
Benjamin Otte
322d247d16 ext/lame/gstlame.c: add debugging category, add error checks like checking return values of setup calls, make sure it...
Original commit message from CVS:
* ext/lame/gstlame.c: (gst_lame_sink_link), (gst_lame_init),
(gst_lame_chain), (gst_lame_setup), (gst_lame_change_state),
(plugin_init):
add debugging category, add error checks like checking return values
of setup calls, make sure it still works after
PLAYING=>NULL=>PLAYING, fix encoding of mono streams
2004-07-26 15:42:18 +00:00
Wim Taymans
a360280c71 gst/mpegstream/: Check for error codes from the negotiation functions. Make sure we really set the pad caps when a ne...
Original commit message from CVS:
* gst/mpegstream/gstmpegdemux.c: (gst_mpeg_demux_get_video_stream),
(gst_mpeg_demux_get_audio_stream),
(gst_mpeg_demux_process_private):
* gst/mpegstream/gstmpegparse.c: (gst_mpeg_parse_send_data):
Check for error codes from the negotiation functions. Make sure
we really set the pad caps when a new pad is created.
2004-07-26 15:17:25 +00:00
Thomas Vander Stichele
9d17d2d661 don't make function do two things
Original commit message from CVS:
don't make function do two things
2004-07-26 13:30:28 +00:00
Steve Lhomme
17615126c2 more plugins supported under windows
Original commit message from CVS:
more plugins supported under windows
2004-07-26 13:20:10 +00:00
Thomas Vander Stichele
a79c5196c8 add debugging, use correct size for shm segments
Original commit message from CVS:
add debugging, use correct size for shm segments
2004-07-26 13:00:27 +00:00
Johan Dahlin
6c1bc99dee gst/tcp/gsttcpclientsrc.c (gst_tcpclientsrc_get): Make sure that the pad is negotiated.
Original commit message from CVS:
* gst/tcp/gsttcpclientsrc.c (gst_tcpclientsrc_get): Make sure that
the pad is negotiated.

* gst/ffmpegcolorspace/gstffmpegcolorspace.c (gst_ffmpegcolorspace_chain): Ditto
2004-07-26 10:12:00 +00:00
Steve Lhomme
6fdc736b0a more plugins supported under windows
Original commit message from CVS:
more plugins supported under windows
2004-07-26 10:03:16 +00:00
Iain Holmes
f672cacc2f Set the explicit caps on the pad when the file is parsed as explicit caps get wiped during state changes. fixes bug #...
Original commit message from CVS:
Set the explicit caps on the pad when the file is parsed as explicit caps get wiped during state changes. fixes bug #148043
2004-07-25 15:05:06 +00:00
Benjamin Otte
0ad1b0a4e6 ext/mad/gstmad.c: fix mad plugin crashing on Sun (fixes #148289)
Original commit message from CVS:
reviewed by Benjamin Otte  <otte@gnome.org>
* ext/mad/gstmad.c:
fix mad plugin crashing on Sun (fixes #148289)
2004-07-25 14:08:58 +00:00
Steve Lhomme
a9b4c1d730 remove unused .def files
Original commit message from CVS:
remove unused .def files
2004-07-25 11:18:02 +00:00
Steve Lhomme
5559688599 Clean the local include
Original commit message from CVS:
Clean the local include
2004-07-25 10:28:05 +00:00
Steve Lhomme
e3dabfe9dc Copy the files where needed after building, cleaner projects
Original commit message from CVS:
Copy the files where needed after building, cleaner projects
2004-07-25 10:23:03 +00:00
Steve Lhomme
fdffa54178 Fix some 64 bits constants to be glib friendly
Original commit message from CVS:
Fix some 64 bits constants to be glib friendly
2004-07-24 21:16:15 +00:00
Steve Lhomme
bafc38bcbf Add the preliminary canvas to build plugins on Win32
Original commit message from CVS:
Add the preliminary canvas to build plugins on Win32
2004-07-24 21:11:31 +00:00
Benjamin Otte
d5f5085677 gst/audioconvert/gstaudioconvert.c: don't enfore negotiation from source side, it breaks sinesrc ! audioconvert ! oss...
Original commit message from CVS:
* gst/audioconvert/gstaudioconvert.c: (gst_audio_convert_link):
don't enfore negotiation from source side, it breaks
sinesrc ! audioconvert ! osssink
2004-07-23 17:40:16 +00:00
David Schleef
85eda4f235 gst/typefind/gsttypefindfunctions.c: Add typefind for ELF files, since they can easily be recognized as audio/mpeg.
Original commit message from CVS:
* gst/typefind/gsttypefindfunctions.c: (plugin_init): Add typefind
for ELF files, since they can easily be recognized as audio/mpeg.
(bug #147441)
2004-07-23 03:09:50 +00:00
Thomas Vander Stichele
769c94e3af fix videoscale for stride
Original commit message from CVS:
fix videoscale for stride
2004-07-22 18:07:14 +00:00
Zaheer Abbas Merali
bf097276b9 multifilesink plugin for creating new files every time a new media discontinuity event occurs
Original commit message from CVS:
2004-07-22  Zaheer Abbas Merali  <zaheerabbas at merali dot org>

* configure.ac:
* gst/Makefile.am:
* gst/multifilesink/Makefile.am:
* gst/multifilesink/gstmultifilesink.c:
(gst_multifilesink_get_formats),
(gst_multifilesink_get_query_types), (_do_init),
(gst_multifilesink_base_init), (gst_multifilesink_class_init),
(gst_multifilesink_init), (gst_multifilesink_dispose),
(gst_multifilesink_set_location), (gst_multifilesink_set_property),
(gst_multifilesink_get_property), (gst_multifilesink_open_file),
(gst_multifilesink_close_file), (gst_multifilesink_next_file),
(gst_multifilesink_pad_query), (gst_multifilesink_handle_event),
(gst_multifilesink_chain), (gst_multifilesink_change_state),
(gst_multifilesink_uri_get_type),
(gst_multifilesink_uri_get_protocols),
(gst_multifilesink_uri_get_uri), (gst_multifilesink_uri_set_uri),
(gst_multifilesink_uri_handler_init), (plugin_init):
* gst/multifilesink/gstmultifilesink.h:
* testsuite/Makefile.am:
* testsuite/multifilesink/Makefile.am:
* testsuite/multifilesink/fakesrc_test.c: (gst_newmedia_base_init),
(gst_newmedia_class_init), (gst_newmedia_init),
(gst_newmedia_chain), (gst_newmedia_trigger), (test_format),
(newfile_signal), (test_signal), (main):
multifilesink plugin for creating new files every time a new media
discontinuity event occurs
2004-07-22 17:57:04 +00:00
Wim Taymans
c9f15852da gst/alpha/: Stupid plugin to to RGBA to AYUV conversion because none of the colorspace plugins can handle that yet.
Original commit message from CVS:
* gst/alpha/Makefile.am:
* gst/alpha/gstalphacolor.c: (gst_alpha_color_get_type),
(gst_alpha_color_base_init), (gst_alpha_color_class_init),
(gst_alpha_color_init), (gst_alpha_color_set_property),
(gst_alpha_color_get_property), (gst_alpha_color_sink_link),
(transform), (gst_alpha_color_chain),
(gst_alpha_color_change_state), (plugin_init):
Stupid plugin to to RGBA to AYUV conversion because none of
the colorspace plugins can handle that yet.
2004-07-22 16:47:42 +00:00
Wim Taymans
0edbb4a19d More playback updates, attempt to fix things after the state change breakage.
Original commit message from CVS:
* examples/seeking/seek.c: (update_scale), (main):
* gst/playback/gstdecodebin.c: (gst_decode_bin_get_type),
(gst_decode_bin_class_init), (gst_decode_bin_is_dynamic),
(gst_decode_bin_factory_filter), (compare_ranks), (print_feature),
(gst_decode_bin_init), (gst_decode_bin_dispose),
(find_compatibles), (close_pad_link), (try_to_link_1), (new_pad),
(no_more_pads), (close_link), (type_found),
(gst_decode_bin_set_property), (gst_decode_bin_get_property),
(plugin_init):
* gst/playback/gstplaybasebin.c: (gst_play_base_bin_get_type),
(gst_play_base_bin_class_init), (gst_play_base_bin_init),
(gst_play_base_bin_dispose), (queue_overrun),
(gen_preroll_element), (remove_prerolls), (unknown_type),
(no_more_pads), (new_stream), (setup_source),
(gst_play_base_bin_set_property), (gst_play_base_bin_get_property),
(play_base_eos), (gst_play_base_bin_change_state),
(gst_play_base_bin_add_element),
(gst_play_base_bin_remove_element),
(gst_play_base_bin_mute_stream), (gst_play_base_bin_link_stream),
(gst_play_base_bin_unlink_stream),
(gst_play_base_bin_get_streaminfo):
* gst/playback/gstplaybin.c: (gen_video_element),
(gen_audio_element):
* gst/playback/gststreaminfo.h:
More playback updates, attempt to fix things after the state change
breakage.
2004-07-22 16:44:58 +00:00
Thomas Vander Stichele
e9bc7e575b comment algorithm
Original commit message from CVS:
comment algorithm
2004-07-22 16:43:15 +00:00
Thomas Vander Stichele
e4916f9cbb cleanup and commenting
Original commit message from CVS:
cleanup and commenting
2004-07-22 15:55:33 +00:00
Wim Taymans
8d9d369e83 ext/: More seeking fixes, oggdemux now supports seeking to time and uses the downstream element to convert granulepos...
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_init),
(gst_ogg_demux_get_formats), (gst_ogg_demux_src_query),
(gst_ogg_demux_src_event), (gst_ogg_demux_src_convert),
(gst_ogg_demux_handle_event), (gst_ogg_demux_seek_before),
(_find_chain_get_unknown_part), (_find_streams_check),
(gst_ogg_demux_push), (gst_ogg_pad_push):
* ext/theora/theoradec.c: (theora_get_formats),
(theora_dec_src_convert), (theora_dec_sink_convert),
(theora_dec_src_query), (theora_dec_src_event), (theora_dec_event),
(theora_dec_chain):
* ext/vorbis/vorbisdec.c: (vorbis_dec_get_formats),
(vorbis_dec_convert), (vorbis_dec_src_query),
(vorbis_dec_src_event), (vorbis_dec_event):
More seeking fixes, oggdemux now supports seeking to time and
uses the downstream element to convert granulepos to time.
Seeking in theora-only ogg files now works.
2004-07-21 16:48:20 +00:00
Wim Taymans
8caa0523e7 ext/: Added query/convert/formats functions to vorbis and theora decoders so that the outside world can use them too....
Original commit message from CVS:
* ext/theora/theoradec.c: (gst_theora_dec_init),
(theora_get_formats), (theora_get_event_masks),
(theora_get_query_types), (theora_dec_src_convert),
(theora_dec_sink_convert), (theora_dec_src_query),
(theora_dec_src_event), (theora_dec_event), (theora_dec_chain):
* ext/vorbis/vorbisdec.c: (vorbis_dec_get_formats),
(vorbis_get_event_masks), (vorbis_get_query_types),
(gst_vorbis_dec_init), (vorbis_dec_convert),
(vorbis_dec_src_query), (vorbis_dec_src_event), (vorbis_dec_event):
Added query/convert/formats functions to vorbis and theora decoders
so that the outside world can use them too. Fixed seeking on an
ogg/theora/vorbis file by disabling the seeking on the
theora srcpad.
2004-07-21 13:28:23 +00:00
Julien Moutte
a9aec497a5 sys/ximage/ximagesink.c: Optimize images creation for both elements. We don't create the image on caps nego or renego...
Original commit message from CVS:
2004-07-21  Julien MOUTTE  <julien@moutte.net>

* sys/ximage/ximagesink.c: (gst_ximagesink_ximage_new),
(gst_ximagesink_renegotiate_size), (gst_ximagesink_sink_link),
(gst_ximagesink_chain), (gst_ximagesink_set_xwindow_id): Optimize
images creation for both elements. We don't create the image on caps
nego or renego, we just destroy the internal one if present if it does
not match the needs. The chain function takes care of creating a new
image when needed.
* sys/xvimage/xvimagesink.c: (gst_xvimagesink_xvimage_new),
(gst_xvimagesink_xwindow_decorate), (gst_xvimagesink_sink_link),
(gst_xvimagesink_chain), (gst_xvimagesink_buffer_alloc),
(gst_xvimagesink_set_xwindow_id): Additionally xvimage now contains
the image format information. The buffer pool checks for the context
image format and discard images with different formats.
* sys/xvimage/xvimagesink.h: Adding im_format in the xvimage structure.
2004-07-21 11:02:32 +00:00
Thomas Vander Stichele
2244e97e47 don't needlessly do stuff; don't clutter my logs
Original commit message from CVS:
don't needlessly do stuff; don't clutter my logs
2004-07-21 09:23:40 +00:00
Ronald S. Bultje
b317ec2be2 gst-libs/gst/riff/riff-media.c: Fix double end-to-native symbol conversion (#148021).
Original commit message from CVS:
* gst-libs/gst/riff/riff-media.c:
(gst_riff_create_audio_caps_with_data):
Fix double end-to-native symbol conversion (#148021).
2004-07-20 21:06:35 +00:00
David Schleef
02ef2b6e5f sys/ximage/ximagesink.c: Don't use an Atom that doesn't exist.
Original commit message from CVS:
* sys/ximage/ximagesink.c: (gst_ximagesink_xwindow_decorate):
Don't use an Atom that doesn't exist.
2004-07-20 19:15:41 +00:00
Wim Taymans
2a50750258 gst/tcp/gstmultifdsink.*: More multifdsink stats. Avoid deadlock by releasing locks before sending out a signal.
Original commit message from CVS:
* gst/tcp/gstmultifdsink.c: (gst_multifdsink_class_init),
(gst_multifdsink_add), (gst_multifdsink_get_stats),
(gst_multifdsink_client_remove),
(gst_multifdsink_handle_client_write),
(gst_multifdsink_queue_buffer):
* gst/tcp/gstmultifdsink.h:
More multifdsink stats. Avoid deadlock by releasing locks
before sending out a signal.
2004-07-20 11:07:23 +00:00
Thomas Vander Stichele
caf652fb8a adding hungarian translation
Original commit message from CVS:
adding hungarian translation
2004-07-20 10:53:07 +00:00
Wim Taymans
36161f36fe gst/tcp/: Fixed the stupid marshal definition.
Original commit message from CVS:
* gst/tcp/gstmultifdsink.c: (gst_multifdsink_class_init),
(gst_multifdsink_add), (gst_multifdsink_client_remove),
(gst_multifdsink_handle_client_write),
(gst_multifdsink_queue_buffer):
* gst/tcp/gsttcp-marshal.list:
Fixed the stupid marshal definition.
2004-07-20 10:04:00 +00:00
Wim Taymans
f087fddb7e gst/tcp/gstmultifdsink.*: Added more stats, added timeout for a client, fixed some typos and added some comments.
Original commit message from CVS:
* gst/tcp/gstmultifdsink.c: (gst_multifdsink_class_init),
(gst_multifdsink_init), (gst_multifdsink_add),
(gst_multifdsink_client_remove),
(gst_multifdsink_handle_client_write),
(gst_multifdsink_queue_buffer), (gst_multifdsink_chain),
(gst_multifdsink_set_property), (gst_multifdsink_get_property),
(gst_multifdsink_init_send):
* gst/tcp/gstmultifdsink.h:
Added more stats, added timeout for a client, fixed some typos
and added some comments.
2004-07-20 09:55:04 +00:00
Wim Taymans
dec0f7adb9 gst/tcp/: Added get_stats method that returns a GValueArray of stats values.
Original commit message from CVS:
* gst/tcp/gstmultifdsink.c: (gst_multifdsink_class_init),
(gst_multifdsink_add), (gst_multifdsink_get_stats),
(gst_multifdsink_client_remove),
(gst_multifdsink_handle_client_write):
* gst/tcp/gstmultifdsink.h:
* gst/tcp/gsttcp-marshal.list:
Added get_stats method that returns a GValueArray of
stats values.
2004-07-20 08:36:04 +00:00
Benjamin Otte
6237eaed6a ext/ladspa/gstladspa.c: make sure longname, description and author are valid UTF-8
Original commit message from CVS:
* ext/ladspa/gstladspa.c: (gst_ladspa_base_init):
make sure longname, description and author are valid UTF-8
2004-07-19 21:44:49 +00:00
Thomas Vander Stichele
1a6f6848e9 respect SYNCHRONOUS after getting X context
Original commit message from CVS:
respect SYNCHRONOUS after getting X context
2004-07-19 11:33:32 +00:00
Thomas Vander Stichele
41eaccd23f make log less verbose
Original commit message from CVS:
make log less verbose
2004-07-18 16:58:08 +00:00
Thomas Vander Stichele
e5389e1809 add debug categories to matroska
Original commit message from CVS:
add debug categories to matroska
2004-07-18 15:58:03 +00:00
Wim Taymans
15e3042d5f ext/libpng/: Added png decoder.
Original commit message from CVS:
* ext/libpng/Makefile.am:
* ext/libpng/gstpng.c: (plugin_init):
* ext/libpng/gstpngdec.c: (user_error_fn), (user_warning_fn),
(gst_pngdec_get_type), (gst_pngdec_base_init),
(gst_pngdec_class_init), (gst_pngdec_sinklink), (gst_pngdec_init),
(gst_pngdec_src_getcaps), (user_read_data), (gst_pngdec_chain):
* ext/libpng/gstpngdec.h:
Added png decoder.
2004-07-16 10:56:31 +00:00
Julien Moutte
b10414dfb4 sys/: Getting the 2 video sinks synchronized again. Using internal data pointer of the x(v)image to store image's dat...
Original commit message from CVS:
2004-07-16  Julien MOUTTE  <julien@moutte.net>

* sys/ximage/ximagesink.c: (gst_ximagesink_handle_xerror),
(gst_ximagesink_check_xshm_calls), (gst_ximagesink_ximage_new),
(gst_ximagesink_ximage_destroy), (gst_ximagesink_sink_link),
(gst_ximagesink_chain), (gst_ximagesink_buffer_free),
(gst_ximagesink_buffer_alloc):
* sys/ximage/ximagesink.h:
* sys/xvimage/xvimagesink.c: (gst_xvimagesink_check_xshm_calls),
(gst_xvimagesink_xvimage_new), (gst_xvimagesink_xvimage_destroy),
(gst_xvimagesink_chain), (gst_xvimagesink_buffer_free),
(gst_xvimagesink_buffer_alloc):
* sys/xvimage/xvimagesink.h: Getting the 2 video sinks synchronized
again. Using internal data pointer of the x(v)image to store image's
data to be coherent with the buffer alloc mechanism. Investigated the
image destruction code to be sure that everything gets freed correctly.
2004-07-16 10:48:52 +00:00
Wim Taymans
b7715638af gst/playback/: Better error recovery. Added configurable preroll queue size. Faster detection of no-more-pads.
Original commit message from CVS:
* gst/playback/gstdecodebin.c: (gst_decode_bin_get_type),
(gst_decode_bin_class_init), (gst_decode_bin_is_dynamic),
(gst_decode_bin_factory_filter), (compare_ranks), (print_feature),
(gst_decode_bin_init), (gst_decode_bin_dispose),
(find_compatibles), (close_pad_link), (try_to_link_1), (new_pad),
(no_more_pads), (close_link), (type_found),
(gst_decode_bin_set_property), (gst_decode_bin_get_property),
(gst_decode_bin_change_state), (plugin_init):
* gst/playback/gstplaybasebin.c: (gst_play_base_bin_get_type),
(gst_play_base_bin_class_init), (gst_play_base_bin_init),
(gst_play_base_bin_dispose), (queue_overrun),
(gen_preroll_element), (remove_prerolls), (unknown_type),
(no_more_pads), (new_stream), (setup_source),
(gst_play_base_bin_set_property), (gst_play_base_bin_get_property),
(play_base_eos), (gst_play_base_bin_change_state),
(gst_play_base_bin_add_element),
(gst_play_base_bin_remove_element),
(gst_play_base_bin_mute_stream), (gst_play_base_bin_link_stream),
(gst_play_base_bin_unlink_stream),
(gst_play_base_bin_get_streaminfo):
* gst/playback/gstplaybasebin.h:
Better error recovery. Added configurable preroll queue size. Faster
detection of no-more-pads.
2004-07-16 10:45:33 +00:00
Wim Taymans
4d6a0cb39e gst-libs/gst/video/video.h: Added 32 bits RGBA. Not sure if we should use another mime-type for alpha rgb. Currently ...
Original commit message from CVS:
* gst-libs/gst/video/video.h:
Added 32 bits RGBA. Not sure if we should use another mime-type
for alpha rgb. Currently the presence of the alpha_mask property
signals an alpha channel. Ronald?
2004-07-16 10:40:54 +00:00
Wim Taymans
6280b05906 sys/: FPS seems to be 0.0 to MAX everywhere else.
Original commit message from CVS:
* sys/ximage/ximagesink.c: (gst_ximagesink_xcontext_get):
* sys/xvimage/xvimagesink.c: (gst_xvimagesink_get_xv_support):
FPS seems to be 0.0 to MAX everywhere else.
2004-07-16 10:33:27 +00:00
Ronald S. Bultje
4bd27986d3 gst-libs/gst/riff/riff-media.c: mp42/mp43 (no caps) exist too.
Original commit message from CVS:
* gst-libs/gst/riff/riff-media.c:
(gst_riff_create_video_caps_with_data):
mp42/mp43 (no caps) exist too.
* gst/matroska/matroska-demux.c: (gst_matroska_demux_video_caps):
Set pixel_width/height; we've got them in-caps.
* gst/typefind/gsttypefindfunctions.c: (plugin_init):
* gst/wavparse/gstwavparse.c: (plugin_init):
Both are valid primary.
* sys/oss/gstossmixer.c:
Remove i18n hack and enable translations.
2004-07-15 23:56:05 +00:00
Tim Ringenbach
5acca27963 sys/xvimage/xvimagesink.c:
Original commit message from CVS:
* sys/xvimage/xvimagesink.c: (gst_xvimagesink_check_xshm_calls),
(gst_xvimagesink_xvimage_new), (gst_xvimagesink_xvimage_destroy):
fix for non-shm xv. Original patch by Tim Ringenbach (fixes #147248)
2004-07-15 21:18:11 +00:00
Benjamin Otte
f4bbdba991 ext/alsa/gstalsa.c: disable some of the debugging code for now. Writing debugging to a buffer is broken in current al...
Original commit message from CVS:
* ext/alsa/gstalsa.c: (gst_alsa_open_audio),
(gst_alsa_sw_params_dump), (gst_alsa_hw_params_dump),
(gst_alsa_close_audio):
disable some of the debugging code for now. Writing debugging to a
buffer is broken in current alsalib releases.
2004-07-15 20:32:41 +00:00
Benjamin Otte
ddd5cad689 ext/mpeg2dec/gstmpeg2dec.c: use bufferpools
Original commit message from CVS:
* ext/mpeg2dec/gstmpeg2dec.c: (gst_mpeg2dec_alloc_buffer):
use bufferpools
2004-07-15 19:02:13 +00:00
Thomas Vander Stichele
44f6a2008b add debug categories
Original commit message from CVS:
add debug categories
2004-07-14 13:42:23 +00:00
Johan Dahlin
94a5340c95 gst/playback/gstplaybin.c (gst_play_bin_set_property)
Original commit message from CVS:
* gst/playback/gstplaybin.c (gst_play_bin_set_property)
(gst_play_bin_get_property): Impl.
2004-07-13 11:47:08 +00:00
Wim Taymans
38b4dce1fc ext/ogg/gstoggdemux.c: When trying to find the stream length, seek back N pages instead of just one, where N is the n...
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_seek_before):
When trying to find the stream length, seek back N pages
instead of just one, where N is the number of streams in
the current chain.
2004-07-13 10:38:25 +00:00
Wim Taymans
1d15366460 gst/: Set codec_data on caps for avidemuxer.
Original commit message from CVS:
* gst-libs/gst/riff/riff-media.c:
(gst_riff_create_audio_caps_with_data),
(gst_riff_create_audio_caps),
(gst_riff_create_audio_template_caps):
* gst-libs/gst/riff/riff-media.h:
* gst-libs/gst/riff/riff-read.c:
(gst_riff_read_strf_vids_with_data),
(gst_riff_read_strf_auds_with_data), (gst_riff_read_strf_auds):
* gst-libs/gst/riff/riff-read.h:
* gst/avi/gstavidemux.c: (gst_avi_demux_handle_src_query),
(gst_avi_demux_add_stream):
Set codec_data on caps for avidemuxer.
2004-07-13 10:24:29 +00:00