Commit graph

6141 commits

Author SHA1 Message Date
Thijs Vermeir
56b3efb077 Add documentation for aspectratiocrop 2009-01-24 14:21:56 +01:00
Sebastian Dröge
0d34f33ac4 Update win32/common/config.h for the new development cycle 2009-01-24 13:21:39 +01:00
Sebastian Dröge
f2524f71d7 Add note that audioecho's reverb sounds metallic
Add a note to the docs that audioecho's reverb will
sound metallic. This happens because for a real
reverb filter additional filtering is necessary.

Also note which values should be used for the delay
property to get an echo effect.
2009-01-24 11:55:04 +01:00
Jan Schmidt
093e555473 More entries for the gitignores 2009-01-23 23:38:10 +00:00
Thijs Vermeir
3733a2ef8c skip video/x-raw-gray in videocrop unit test
A recent commit added video/x-raw-gray support to videocrop. However
this lets the videocrop unit test fail. Because videotestsrc can't
generate this format.
2009-01-23 20:36:27 +01:00
Thijs Vermeir
c1cb1e0c5b Add aspectratiocrop element. Fixes bug #527951
Add new aspectratiocrop element that crops the video
to a specified aspect ratio using videocrop.
2009-01-23 15:52:55 +01:00
Thijs Vermeir
1b82293248 Fix navigation event forwarding while cropping. Fixes bug #567992.
Fix the navigation event forwarding while cropping by adjusting
the mouse position by the amount of cropped pixels.
2009-01-23 10:49:28 +01:00
Brian Cameron
d818fb174b Fix linking on Solaris. Fixes bug #568809.
Check for the socket library which is needed
for socket() on Solaris.
2009-01-23 10:04:39 +01:00
Jan Schmidt
1a85ce0239 Bump version number again -> 0.10.13.1 2009-01-22 22:41:43 +00:00
Jan Schmidt
9dd1370d30 Add releases 0.10.12 and 0.10.13 to the doap file 2009-01-22 22:41:01 +00:00
Stefan Kost
0f40fa05b4 Update common snapshot. 2009-01-22 18:08:50 +02:00
Jan Schmidt
82526d86db Back to devel -> 0.10.12.1 2009-01-22 14:33:06 +00:00
Jan Schmidt
738ea98222 Release 0.10.12 2009-01-22 14:33:06 +00:00
David Schleef
bdc20b9baf Fix for security advisory TKADV2009-0xx
Fix potential buffer overflows while reading quicktime headers.
Security issue noticed by Tobias Klein.
2009-01-22 14:33:05 +00:00
Jan Schmidt
1e7e381a8d Fix typo and small flaw in flac decoder 2009-01-22 14:33:04 +00:00
Sebastian Dröge
391bedf815 Fix pre-commit hook 2009-01-22 13:49:35 +01:00
Sebastian Dröge
99753365c6 Rename audioreverb to audioecho. Fixes bug #568395.
The element can add an echo and a simple reverb effect to
an audio stream but for a real reverb filter it would need
some additional filtering to prevent a metallic-sounding
result.
2009-01-22 13:27:56 +01:00
Wim Taymans
16799b6b16 Free leftover udp ports (if any) when a setup request fails. 2009-01-22 12:21:29 +01:00
Edward Hervey
4e3472ae6f Install and use pre-commit indentation hook from common 2009-01-22 06:05:26 +01:00
Wim Taymans
43fb36545b Whitespace fixes and some improved debug lines. 2009-01-21 13:25:06 +01:00
Edward Hervey
6d325c2ece autogen.sh : Use git submodule 2009-01-21 04:31:58 +01:00
Tim-Philipp Müller
6c565d2ee1 sys/v4l2/gstv4l2src.c: Fix error code (the message string also needs love, but not today).
Original commit message from CVS:
* sys/v4l2/gstv4l2src.c: (gst_v4l2src_get_read):
Fix error code (the message string also needs love, but not today).
2009-01-20 15:33:05 +00:00
Luotao Fu
0a89f5e50c gst/videocrop/gstvideocrop.c: Add 8bit grayscale support to videocrop plugin. Fixes #567952.
Original commit message from CVS:
Patch by: Luotao Fu <l dot fu at pengutronix dot de>
* gst/videocrop/gstvideocrop.c:
(gst_video_crop_get_image_details_from_caps):
Add 8bit grayscale support to videocrop plugin. Fixes #567952.
2009-01-19 11:44:36 +00:00
Sebastian Dröge
0701ffa556 gst/audiofx/audioreverb.c: Set the default value in the instance init function.
Original commit message from CVS:
* gst/audiofx/audioreverb.c: (gst_audio_reverb_init):
Set the default value in the instance init function.
2009-01-19 11:22:06 +00:00
Sebastian Dröge
344a9f4229 Add an echo/reverb filter to the audiofx plugin, with configurable echo delay, intensity and feedback. Fixes bug #567...
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/gst-plugins-good-plugins.args:
* docs/plugins/gst-plugins-good-plugins.hierarchy:
* docs/plugins/inspect/plugin-audiofx.xml:
* docs/plugins/inspect/plugin-spectrum.xml:
* gst/audiofx/Makefile.am:
* gst/audiofx/audiofx.c: (plugin_init):
* gst/audiofx/audioreverb.c: (gst_audio_reverb_base_init),
(gst_audio_reverb_class_init), (gst_audio_reverb_init),
(gst_audio_reverb_finalize), (gst_audio_reverb_set_property),
(gst_audio_reverb_get_property), (gst_audio_reverb_setup),
(gst_audio_reverb_stop), (gst_audio_reverb_transform_ip):
* gst/audiofx/audioreverb.h:
* tests/check/Makefile.am:
* tests/check/elements/audioreverb.c: (setup_reverb),
(cleanup_reverb), (GST_START_TEST), (audioreverb_suite):
Add an echo/reverb filter to the audiofx plugin, with configurable
echo delay, intensity and feedback. Fixes bug #567874.
2009-01-19 11:19:08 +00:00
Sebastian Dröge
d912a42065 gst/spectrum/gstspectrum.*: Implement a simple compensation algorithm for rounding errors.
Original commit message from CVS:
* gst/spectrum/gstspectrum.c: (gst_spectrum_reset_state),
(gst_spectrum_transform_ip):
* gst/spectrum/gstspectrum.h:
Implement a simple compensation algorithm for rounding errors.
This makes sure that a spectrum message is posted on the bus
every interval nanoseconds. Fixes bug #567955.
2009-01-19 10:13:53 +00:00
Michael Smith
b5f2a609af sys/osxaudio/Makefile.am: Link against CoreServices (needed for osx 10.4) and fix up the linker flags. Fixes #567853.
Original commit message from CVS:
* sys/osxaudio/Makefile.am:
Link against CoreServices (needed for osx 10.4) and fix up the linker
flags. Fixes #567853.
2009-01-15 21:16:45 +00:00
Wim Taymans
293671170e gst/qtdemux/qtdemux.c: Catch invalid and commonly wrong playback rates in the elst atoms.
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (qtdemux_parse_segments):
Catch invalid and commonly wrong playback rates in the elst atoms.
Fixes #567800.
2009-01-15 14:53:18 +00:00
Sebastian Dröge
9ee7150985 gst/spectrum/gstspectrum.c: Don't call gst_fft_f32_free() with NULL to prevent a crash. Fixes bug #567642.
Original commit message from CVS:
* gst/spectrum/gstspectrum.c: (gst_spectrum_reset_state):
Don't call gst_fft_f32_free() with NULL to prevent a
crash. Fixes bug #567642.
2009-01-15 11:40:23 +00:00
Sebastian Dröge
f4b2d38c87 gst/spectrum/gstspectrum.*: Use correct types for frame/fft counters and some minor cleanup.
Original commit message from CVS:
* gst/spectrum/gstspectrum.c: (gst_spectrum_transform_ip):
* gst/spectrum/gstspectrum.h:
Use correct types for frame/fft counters and some minor
cleanup.
2009-01-14 15:44:18 +00:00
Lennart Poettering
b1c6dec543 ext/pulse/pulseprobe.c: Fix refcount loop, resulting in a thread leak. Fixes bug #567746.
Original commit message from CVS:
Patch by: Lennart Poettering <lennart at poettering dot net>
* ext/pulse/pulseprobe.c: (gst_pulseprobe_new),
(gst_pulseprobe_free):
Fix refcount loop, resulting in a thread leak. Fixes bug #567746.
2009-01-14 15:37:07 +00:00
Sebastian Dröge
5d001b3ab6 gst/spectrum/: Post a spectrum message on the bus for every interval, even if the interval is small than the length o...
Original commit message from CVS:
* gst/spectrum/Makefile.am:
* gst/spectrum/README:
* gst/spectrum/gstspectrum.c: (gst_spectrum_base_init),
(gst_spectrum_class_init), (gst_spectrum_init),
(gst_spectrum_reset_state), (gst_spectrum_finalize),
(gst_spectrum_set_property), (gst_spectrum_start),
(gst_spectrum_stop), (gst_spectrum_setup),
(gst_spectrum_transform_ip):
* gst/spectrum/gstspectrum.h:
Post a spectrum message on the bus for every interval, even
if the interval is small than the length of the FFT.
Fixes bug #567642.
Major cleanup of the spectrum element.
2009-01-14 10:46:54 +00:00
Sebastian Dröge
75c1c9f378 Add audioiirfilter and audiofirfilter elements which allow generic IIR/FIR filters to be implemented by providing the...
Original commit message from CVS:
* configure.ac:
* gst/audiofx/Makefile.am:
* gst/audiofx/audiofirfilter.c: (gst_audio_fir_filter_base_init),
(gst_audio_fir_filter_class_init),
(gst_audio_fir_filter_update_kernel), (gst_audio_fir_filter_init),
(gst_audio_fir_filter_setup), (gst_audio_fir_filter_finalize),
(gst_audio_fir_filter_set_property),
(gst_audio_fir_filter_get_property):
* gst/audiofx/audiofirfilter.h:
* gst/audiofx/audiofx.c: (plugin_init):
* gst/audiofx/audioiirfilter.c: (gst_audio_iir_filter_base_init),
(gst_audio_iir_filter_class_init),
(gst_audio_iir_filter_update_coefficients),
(gst_audio_iir_filter_init), (gst_audio_iir_filter_setup),
(gst_audio_iir_filter_finalize),
(gst_audio_iir_filter_set_property),
(gst_audio_iir_filter_get_property):
* gst/audiofx/audioiirfilter.h:
Add audioiirfilter and audiofirfilter elements which allow
generic IIR/FIR filters to be implemented by providing the
filter coefficients. Fixes bug #567577.
* 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.args:
* docs/plugins/gst-plugins-good-plugins.hierarchy:
* docs/plugins/gst-plugins-good-plugins.signals:
* docs/plugins/inspect/plugin-alaw.xml:
* docs/plugins/inspect/plugin-audiofx.xml:
* docs/plugins/inspect/plugin-avi.xml:
* docs/plugins/inspect/plugin-flac.xml:
* docs/plugins/inspect/plugin-mulaw.xml:
* docs/plugins/inspect/plugin-video4linux2.xml:
* docs/plugins/inspect/plugin-wavparse.xml:
Add documentation for the audioiirfilter and audiofirfilter
elements.
* tests/check/Makefile.am:
* tests/check/elements/audiofirfilter.c: (on_message),
(on_rate_changed), (on_handoff), (GST_START_TEST),
(audiofirfilter_suite):
* tests/check/elements/audioiirfilter.c: (on_message),
(on_rate_changed), (on_handoff), (GST_START_TEST),
(audioiirfilter_suite):
* tests/examples/Makefile.am:
* tests/examples/audiofx/Makefile.am:
* tests/examples/audiofx/firfilter-example.c: (on_message),
(on_rate_changed), (main):
* tests/examples/audiofx/iirfilter-example.c: (on_message),
(on_rate_changed), (main):
Add unit tests and example applications for the two filter
elements.
2009-01-13 19:23:57 +00:00
Thiago Sousa Santos
5f5ae768b8 gst/qtdemux/qtdemux.c: Fix format string for guint64.
Original commit message from CVS:
Patch by: Thiago Sousa Santos <thiagoss@embedded.ufcg.edu.br>
* gst/qtdemux/qtdemux.c:
Fix format string for guint64.
2009-01-13 19:09:19 +00:00
Michael Smith
b7d55c18de sys/osxaudio/Makefile.am: osxaudio plugin now requires AudioUnit framework, so link against that.
Original commit message from CVS:
* sys/osxaudio/Makefile.am:
osxaudio plugin now requires AudioUnit framework, so link against that.
Clean up tabs v spaces while I'm there.
2009-01-13 19:04:09 +00:00
Wim Taymans
89060e8696 tests/examples/rtp/server-alsasrc-PCMA.c: Add some example code for printing the RTP manager stats.
Original commit message from CVS:
* tests/examples/rtp/server-alsasrc-PCMA.c: (print_source_stats),
(print_stats), (main):
Add some example code for printing the RTP manager stats.
2009-01-13 17:49:07 +00:00
Sebastian Dröge
4b227159cb gst/audiofx/: Use a custom mutex for protecting the instance fields instead of the GstObject lock. Using the latter c...
Original commit message from CVS:
* gst/audiofx/audiochebband.c: (gst_audio_cheb_band_class_init),
(gst_audio_cheb_band_init), (gst_audio_cheb_band_finalize),
(gst_audio_cheb_band_set_property):
* gst/audiofx/audiochebband.h:
* gst/audiofx/audiocheblimit.c: (gst_audio_cheb_limit_class_init),
(gst_audio_cheb_limit_init), (gst_audio_cheb_limit_finalize),
(gst_audio_cheb_limit_set_property):
* gst/audiofx/audiocheblimit.h:
* gst/audiofx/audiowsincband.c: (gst_audio_wsincband_class_init),
(gst_audio_wsincband_init), (gst_audio_wsincband_finalize),
(gst_audio_wsincband_set_property):
* gst/audiofx/audiowsincband.h:
* gst/audiofx/audiowsinclimit.c: (gst_audio_wsinclimit_class_init),
(gst_audio_wsinclimit_init), (gst_audio_wsinclimit_finalize),
(gst_audio_wsinclimit_set_property):
* gst/audiofx/audiowsinclimit.h:
Use a custom mutex for protecting the instance fields instead of
the GstObject lock. Using the latter can lead to deadlocks, especially
with the FIR filters when updating the latency.
2009-01-13 08:24:25 +00:00
Sebastian Dröge
0016658ace gst/audiofx/: Implement a base class for generic audio FIR filters.
Original commit message from CVS:
* gst/audiofx/Makefile.am:
* gst/audiofx/audiofxbasefirfilter.c:
(gst_audio_fx_base_fir_filter_dispose),
(gst_audio_fx_base_fir_filter_base_init),
(gst_audio_fx_base_fir_filter_class_init),
(gst_audio_fx_base_fir_filter_init),
(gst_audio_fx_base_fir_filter_push_residue),
(gst_audio_fx_base_fir_filter_setup),
(gst_audio_fx_base_fir_filter_transform),
(gst_audio_fx_base_fir_filter_start),
(gst_audio_fx_base_fir_filter_stop),
(gst_audio_fx_base_fir_filter_query),
(gst_audio_fx_base_fir_filter_query_type),
(gst_audio_fx_base_fir_filter_event),
(gst_audio_fx_base_fir_filter_set_kernel):
* gst/audiofx/audiofxbasefirfilter.h:
* gst/audiofx/audiofxbaseiirfilter.c:
Implement a base class for generic audio FIR filters.
* gst/audiofx/audiowsincband.c:
(gst_gst_audio_wsincband_mode_get_type),
(gst_gst_audio_wsincband_window_get_type),
(gst_audio_wsincband_base_init), (gst_audio_wsincband_class_init),
(gst_audio_wsincband_init), (gst_audio_wsincband_build_kernel),
(gst_audio_wsincband_setup), (gst_audio_wsincband_set_property),
(gst_audio_wsincband_get_property):
* gst/audiofx/audiowsincband.h:
* gst/audiofx/audiowsinclimit.c:
(gst_audio_wsinclimit_mode_get_type),
(gst_audio_wsinclimit_window_get_type),
(gst_audio_wsinclimit_base_init),
(gst_audio_wsinclimit_class_init), (gst_audio_wsinclimit_init),
(gst_audio_wsinclimit_build_kernel), (gst_audio_wsinclimit_setup),
(gst_audio_wsinclimit_set_property),
(gst_audio_wsinclimit_get_property):
* gst/audiofx/audiowsinclimit.h:
* tests/check/elements/audiowsincband.c: (GST_START_TEST):
* tests/check/elements/audiowsinclimit.c: (GST_START_TEST):
Use this new base class for audiowsincband and audiowsinclimit.
Also cleanup both elements.
2009-01-11 19:03:38 +00:00
Michael Smith
1d32ad886e gst/qtdemux/qtdemux.c: In push mode, error out if we get EOS before we've created any srcpads.
Original commit message from CVS:
* gst/qtdemux/qtdemux.c:
In push mode, error out if we get EOS before we've created any srcpads.
Handle (in pull mode) some files that have a truncated moov atom where
the final sub-atom is a 'free' atom and the contents of that are not
present in the file.
2009-01-08 18:17:13 +00:00
Mark Nauwelaerts
7958cf82ab gst/matroska/: Some cleanups, refactoring and minor enhancements in caps handling.
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroska_demux_video_caps):
* gst/matroska/matroska-mux.c: (gst_matroska_mux_video_pad_setcaps):
Some cleanups, refactoring and minor enhancements in caps handling.
* gst/matroska/matroska-mux.c: (gst_matroska_mux_class_init),
(gst_matroska_mux_init), (gst_matroska_pad_reset),
(gst_matroska_pad_free), (gst_matroska_mux_reset),
(gst_matroska_mux_video_pad_setcaps),
(gst_matroska_mux_request_new_pad):
* tests/check/elements/matroskamux.c: (teardown_src_pad):
Only remove, release or reset what is appropriate upon state change.
2009-01-08 15:56:46 +00:00
Jan Schmidt
3e380b488d ext/pulse/pulsesink.*: Use a mutex to protect the current stream pointer, and ignore callbacks for stream objects tha...
Original commit message from CVS:
* ext/pulse/pulsesink.c:
* ext/pulse/pulsesink.h:
Use a mutex to protect the current stream pointer, and ignore
callbacks for stream objects that have been destroyed already.
Fixes problems with unprepare/prepare cycles caused by the input
caps changing, without reintroducing bug #556986.
2009-01-07 20:38:50 +00:00
Jan Schmidt
90e9d8e0e1 sys/v4l2/gstv4l2src.c: Remove () from translateable string, so that it makes more sense.
Original commit message from CVS:
* sys/v4l2/gstv4l2src.c:
Remove () from translateable string, so that it makes more sense.
2009-01-07 16:09:47 +00:00
Mark Nauwelaerts
24eed322dc gst/avi/gstavimux.c: Minor fix/cleanup in header field calculation.
Original commit message from CVS:
* gst/avi/gstavimux.c: (gst_avi_mux_audsink_set_caps):
Minor fix/cleanup in header field calculation.
2009-01-07 09:43:13 +00:00
Mark Nauwelaerts
85c6c25264 gst/matroska/matroska-mux.*: Remove internal taglist and fully use tagsetter interface.
Original commit message from CVS:
* gst/matroska/matroska-mux.c: (gst_matroska_mux_reset),
(gst_matroska_mux_handle_sink_event), (gst_matroska_mux_finish):
* gst/matroska/matroska-mux.h:
Remove internal taglist and fully use tagsetter interface.
2009-01-06 17:48:10 +00:00
Mark Nauwelaerts
b506ab9918 gst/avi/gstavimux.*: Ensure header size invariance during subsequent rewrite by using tags snapshot.
Original commit message from CVS:
* gst/avi/gstavimux.c: (gst_avi_mux_reset),
(gst_avi_mux_riff_get_avi_header):
* gst/avi/gstavimux.h:
Ensure header size invariance during subsequent rewrite by using
tags snapshot.
2009-01-06 14:50:29 +00:00
Sebastian Dröge
67cc69ad52 ext/pulse/pulsesink.c: Don't wait for the pulse mainloop when destroying the stream.
Original commit message from CVS:
* ext/pulse/pulsesink.c: (gst_pulsesink_destroy_stream):
Don't wait for the pulse mainloop when destroying the stream.
Fixes a deadlock when the pulsedaemon goes away while pulsesink
is PLAYING. Fixes bug #556986.
2009-01-05 17:31:13 +00:00
Sascha Hauer
d576b9fdbe sys/v4l2/gstv4l2src.c: Add support for grayscale v4l2 devices. Fixes bug #566616.
Original commit message from CVS:
Patch by: Sascha Hauer <s dot hauer at pengutronix dot de>
Luotao Fu <l dot fu at pengutronix dot de>
* sys/v4l2/gstv4l2src.c: (gst_v4l2src_v4l2fourcc_to_structure),
(gst_v4l2_get_caps_info):
Add support for grayscale v4l2 devices. Fixes bug #566616.
2009-01-05 12:30:40 +00:00
Mark Nauwelaerts
455e24c0a3 gst/qtdemux/: Streamline tag handling and pass unparsed tags as binary blob in private tag.
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (qtdemux_tag_add_str),
(qtdemux_tag_add_tmpo), (qtdemux_tag_add_covr),
(qtdemux_tag_add_date), (qtdemux_tag_add_gnre),
(qtdemux_tag_add_blob), (qtdemux_parse_udta):
* gst/qtdemux/qtdemux.h:
* gst/qtdemux/quicktime.c: (plugin_init):
Streamline tag handling and pass unparsed tags as binary blob
in private tag.
2009-01-05 11:42:09 +00:00
Sebastian Dröge
4c7c4c00da gst/audiofx/: Implement a base class for IIR filters.
Original commit message from CVS:
* gst/audiofx/Makefile.am:
* gst/audiofx/audiofxbaseiirfilter.c:
(gst_audio_fx_base_iir_filter_base_init),
(gst_audio_fx_base_iir_filter_dispose),
(gst_audio_fx_base_iir_filter_class_init),
(gst_audio_fx_base_iir_filter_init),
(gst_audio_fx_base_iir_filter_calculate_gain),
(gst_audio_fx_base_iir_filter_set_coefficients),
(gst_audio_fx_base_iir_filter_setup), (process),
(gst_audio_fx_base_iir_filter_transform_ip),
(gst_audio_fx_base_iir_filter_stop):
* gst/audiofx/audiofxbaseiirfilter.h:
Implement a base class for IIR filters.
* gst/audiofx/audiochebband.c: (gst_audio_cheb_band_base_init),
(gst_audio_cheb_band_class_init), (gst_audio_cheb_band_init),
(generate_coefficients), (gst_audio_cheb_band_set_property),
(gst_audio_cheb_band_setup):
* gst/audiofx/audiochebband.h:
* gst/audiofx/audiocheblimit.c: (gst_audio_cheb_limit_base_init),
(gst_audio_cheb_limit_class_init), (gst_audio_cheb_limit_init),
(generate_coefficients), (gst_audio_cheb_limit_set_property),
(gst_audio_cheb_limit_setup):
* gst/audiofx/audiocheblimit.h:
Use the IIR filter base class for the chebyshev filters.
2009-01-05 10:13:29 +00:00
Justin Karnegas
17bb67f873 sys/osxaudio/: Rewrite osxaudio to work more flexibly and more reliably, using a different abstraction layer of corea...
Original commit message from CVS:
Patch by: Justin Karnegas <justin@affinix.com> and
Michael Smith <msmith@songbirdnest.com>
* sys/osxaudio/gstosxaudio.c:
* sys/osxaudio/gstosxaudioelement.c:
* sys/osxaudio/gstosxaudioelement.h:
* sys/osxaudio/gstosxaudiosink.c:
* sys/osxaudio/gstosxaudiosink.h:
* sys/osxaudio/gstosxaudiosrc.c:
* sys/osxaudio/gstosxaudiosrc.h:
* sys/osxaudio/gstosxringbuffer.c:
* sys/osxaudio/gstosxringbuffer.h:
Rewrite osxaudio to work more flexibly and more reliably, using a
different abstraction layer of coreaudio that is the recommended way of
doing low-level audio I/O on OSX.
Fixes byg #564948.
2009-01-02 20:39:34 +00:00