Commit graph

4652 commits

Author SHA1 Message Date
Stefan Kost
72200b5b24 tests/check/elements/: revert my freeze breakage
Original commit message from CVS:
* tests/check/elements/audiopanorama.c: (cleanup_panorama):
* tests/check/elements/avimux.c: (setup_avimux), (cleanup_avimux):
* tests/check/elements/cmmldec.c: (setup_cmmldec),
(teardown_cmmldec):
* tests/check/elements/cmmlenc.c: (setup_cmmlenc),
(teardown_cmmlenc):
* tests/check/elements/level.c: (setup_level), (cleanup_level):
revert my freeze breakage
2006-12-21 12:48:32 +00:00
Stefan Kost
373296698c tests/check/elements/: consistent pad (de)activation
Original commit message from CVS:
* tests/check/elements/mpeg2enc.c: (setup_mpeg2enc),
(cleanup_mpeg2enc):
* tests/check/elements/rganalysis.c: (cleanup_rganalysis):
* tests/check/elements/wavpackdec.c: (setup_wavpackdec),
(cleanup_wavpackdec):
* tests/check/elements/wavpackenc.c: (setup_wavpackenc),
(cleanup_wavpackenc):
* tests/check/elements/y4menc.c: (setup_y4menc), (cleanup_y4menc):
consistent pad (de)activation
2006-12-21 08:20:10 +00:00
Stefan Kost
4b7d466ad9 tests/check/elements/: consistent pad (de)activation
Original commit message from CVS:
* tests/check/elements/audiopanorama.c: (cleanup_panorama):
* tests/check/elements/avimux.c: (setup_avimux), (cleanup_avimux):
* tests/check/elements/cmmldec.c: (setup_cmmldec),
(teardown_cmmldec):
* tests/check/elements/cmmlenc.c: (setup_cmmlenc),
(teardown_cmmlenc):
* tests/check/elements/level.c: (setup_level), (cleanup_level):
consistent pad (de)activation
2006-12-21 08:15:23 +00:00
Tim-Philipp Müller
2f353d7379 gst/qtdemux/qtdemux.c: Don't post BUFFERING messages in streaming mode if the stream headers are behind the movie dat...
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (gst_qtdemux_post_progress),
(gst_qtdemux_chain):
Don't post BUFFERING messages in streaming mode if the stream
headers are behind the movie data; instead, post "progress" element
messages as a temporary solution. Apps might get confused and do
silly things to the pipeline state if they see buffering messages
from different sources and don't realize they come from different
sources (#387160).
2006-12-18 17:11:49 +00:00
Jan Schmidt
0cd3a072c1 Disable LADPSA, as it has moved to the -bad module for the duration.
Original commit message from CVS:
* configure.ac:
* ext/Makefile.am:
Disable LADPSA, as it has moved to the -bad module for the duration.
2006-12-18 16:46:17 +00:00
Wim Taymans
3abb0f8d67 ext/ladspa/gstsignalprocessor.c: Reset flow_state back to _OK after a flush stop so that we exit our error state afte...
Original commit message from CVS:
* ext/ladspa/gstsignalprocessor.c: (gst_signal_processor_setcaps),
(gst_signal_processor_event):
Reset flow_state back to _OK after a flush stop so that we exit our
error state after the flush. Fixes #374213
2006-12-18 15:51:54 +00:00
Jan Schmidt
5c63981e41 ChangeLog surgery on one of Stefan's commits from August:
Original commit message from CVS:
ChangeLog surgery on one of Stefan's commits from August:

* ext/Makefile.am:
Quietly (accidentally) enable LADSPA for building by default,
despite the fact that it doesn't meet the plugin checklist.
-- Added by Jan Schmidt 18 Dec 2006
2006-12-18 15:49:08 +00:00
Jan Schmidt
7966c804ab gst/qtdemux/qtdemux.c: Don't output g_warning for an unsupported format, just send a
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (gst_qtdemux_chain),
(gst_qtdemux_add_stream):
Don't output g_warning for an unsupported format, just send a
GST_ELEMENT_WARNING and don't add the pad.
Fix the case where it doesn't check for a NULL pad in streaming mode.
Fixes #387137
2006-12-18 13:40:34 +00:00
Tim-Philipp Müller
ef691f3827 gst/qtdemux/qtdemux.c: Fix crash dereferencing NULL pointer if there's no stco atom.
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (qtdemux_parse_trak):
Fix crash dereferencing NULL pointer if there's no stco atom.
Fixes #387122.
2006-12-18 12:27:32 +00:00
Sebastian Dröge
75847358e4 ext/wavpack/gstwavpackenc.h: Use local copy of md5.h, as it disappeared in recent wavpack installs.
Original commit message from CVS:
* ext/wavpack/gstwavpackenc.h:
Use local copy of md5.h, as it disappeared in recent wavpack
installs.
Patch by: Sebastian Dröge <slomo at ubuntu dot com>
Fixes: #387076
2006-12-18 10:02:56 +00:00
Jan Schmidt
1af3c4b3fc Update .po files
Original commit message from CVS:
Update .po files
2006-12-17 19:42:05 +00:00
David Schleef
be93655578 sys/osxvideo/osxvideosink.*: Decent effort at porting to 0.10. Needs cleanup on OS/X.
Original commit message from CVS:
* sys/osxvideo/osxvideosink.h:
* sys/osxvideo/osxvideosink.m:
Decent effort at porting to 0.10.  Needs cleanup on OS/X.
2006-12-17 06:11:39 +00:00
Vijay Santhanam
aae6bd4e95 sys/osxvideo/: Preliminary patch for porting osxvideosink
Original commit message from CVS:
Patch by: Vijay Santhanam <vijay santhanam gmail com>
* sys/osxvideo/Makefile.am:
* sys/osxvideo/osxvideosink.h:
* sys/osxvideo/osxvideosink.m:
Preliminary patch for porting osxvideosink
2006-12-17 05:07:07 +00:00
Sjoerd Simons
e2f1b66fb2 gst/videomixer/videomixer.c: Introduce some locking around the videomixer state so that it does not crash when adding...
Original commit message from CVS:
Patch by: Sjoerd Simons <sjoerd at luon dot net>
* gst/videomixer/videomixer.c: (gst_videomixer_pad_set_property),
(gst_videomixer_set_master_geometry),
(gst_videomixer_pad_sink_setcaps), (gst_videomixer_collect_free),
(gst_videomixer_reset), (gst_videomixer_init),
(gst_videomixer_finalize), (gst_videomixer_request_new_pad),
(gst_videomixer_release_pad), (gst_videomixer_collected),
(gst_videomixer_change_state):
Introduce some locking around the videomixer state so that it does not
crash when adding/removing pads. Fixes #383043.
2006-12-16 16:21:26 +00:00
Tim-Philipp Müller
40d3caa168 gst/qtdemux/qtdemux.c: We don't support seeking in streaming mode, so don't even try.
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (gst_qtdemux_get_src_query_types),
(gst_qtdemux_handle_src_query), (gst_qtdemux_handle_src_event):
We don't support seeking in streaming mode, so don't even try.
Implement seeking query so apps can query seekability properly
(see #365414). Fix duration query.
2006-12-16 15:25:23 +00:00
Tim-Philipp Müller
ad5dfb5739 configure.ac: Make sure libcaca can actually be used instead of just checking for /usr/bin/caca-config, so we don't w...
Original commit message from CVS:
* configure.ac:
Make sure libcaca can actually be used instead of just checking for
/usr/bin/caca-config, so we don't wrongly try to build cacasink when
cross-compiling (fixes #384587).
2006-12-16 11:42:56 +00:00
Thomas Vander Stichele
a5fa8eaf4d adding doap file
Original commit message from CVS:
* Makefile.am:
* gst-plugins-good.doap:
* gst-plugins-good.spec.in:
adding doap file
2006-12-15 10:54:28 +00:00
Tim-Philipp Müller
32394b3c96 configure.ac: libflac-1.1.3 changed API again, but we can't build against it yet, so make sure our check doesn't use ...
Original commit message from CVS:
* configure.ac:
libflac-1.1.3 changed API again, but we can't build against it yet,
so make sure our check doesn't use libflac-1.1.3 and add a comment
to this effect.
2006-12-14 16:20:15 +00:00
Tim-Philipp Müller
59c1122481 gst/effectv/gstquark.c: Add some NULL pointer checks (possibly related to #385623).
Original commit message from CVS:
* gst/effectv/gstquark.c: (gst_quarktv_transform),
(gst_quarktv_planetable_clear):
Add some NULL pointer checks (possibly related to #385623).
2006-12-14 14:25:17 +00:00
Wim Taymans
f4dd37e871 gst/qtdemux/qtdemux.c: Add AMR-WB to the list of supported formats.
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (gst_qtdemux_get_duration),
(gst_qtdemux_handle_src_query), (qtdemux_parse_trak),
(qtdemux_audio_caps):
Add AMR-WB to the list of supported formats.
2006-12-13 17:12:22 +00:00
Tim-Philipp Müller
173ee367e4 gst/: In streaming mode, if the first buffer we get doesn't have an offset, fix it up to be 0, otherwise trimming won...
Original commit message from CVS:
* gst/apetag/gsttagdemux.c: (gst_tag_demux_chain_parse_tag),
(gst_tag_demux_chain):
* gst/id3demux/gstid3demux.c: (gst_id3demux_chain):
In streaming mode, if the first buffer we get doesn't have an
offset, fix it up to be 0, otherwise trimming won't work later on
and we'll be typefinding application/x-id3, which may result in
decodebin plugging an endless number of id3demux elements as a
consequence. Fixes #385031.
2006-12-12 18:45:58 +00:00
Jan Schmidt
b61aef839f sys/sunaudio/gstsunaudiosink.c: Ignore the buffer_time the sound device reports. Turns out it is sometimes completely...
Original commit message from CVS:
* sys/sunaudio/gstsunaudiosink.c: (gst_sunaudiosink_prepare):
Ignore the buffer_time the sound device reports. Turns out it is
sometimes completely bogus and we're better off without it.
2006-12-11 21:21:16 +00:00
Tim-Philipp Müller
81c7f2c4a7 gst/qtdemux/qtdemux.c: Fix non-working redirects from inetfilm.com (handle 'alis' reference data type as well). Fixes...
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (qtdemux_parse_tree):
Fix non-working redirects from inetfilm.com (handle 'alis' reference
data type as well). Fixes #378613.
2006-12-11 17:33:26 +00:00
Tim-Philipp Müller
0d3b023699 gst/matroska/: Try harder to extract the framerate for video tracks correctly and save it directly instead of convert...
Original commit message from CVS:
* gst/matroska/matroska-demux.c: (gst_matroska_demux_add_stream),
(gst_matroska_demux_video_caps):
* gst/matroska/matroska-ids.c:
(gst_matroska_track_init_video_context):
* gst/matroska/matroska-ids.h:
Try harder to extract the framerate for video tracks correctly and
save it directly instead of converting it back and forth a few
times. Mostly makes a difference for very small framerates (<1).
Fixes #380199.
2006-12-11 13:59:33 +00:00
Tim-Philipp Müller
2f992c783e ext/gconf/gstgconfaudiosrc.*: Remove gconf notify hook when the gconfaudiosrc element is destroyed, otherwise the cal...
Original commit message from CVS:
* ext/gconf/gstgconfaudiosrc.c: (gst_gconf_audio_src_init),
(gst_gconf_audio_src_dispose), (do_toggle_element):
* ext/gconf/gstgconfaudiosrc.h:
Remove gconf notify hook when the gconfaudiosrc element is
destroyed, otherwise the callback may be called on an
already-destroyed instance and bad things happen. Should fix
#378184.
Also ignore gconf key changes when the source is already running.
2006-12-11 11:41:18 +00:00
Sebastian Dröge
14999998d4 gst/apetag/gstapedemux.c: We need to be able to read and parse any possible floating point string format ("1,234" or ...
Original commit message from CVS:
Patch by: Sebastian Dröge  <mail at slomosnail de>
* gst/apetag/gstapedemux.c: (ape_demux_parse_tags):
We need to be able to read and parse any possible floating point string
format ("1,234" or "1.234") irrespective of the current locale. g_strod()
will parse the former only in certain locales though, so we really need
to canonicalise the separator to '.' and then use g_ascii_strtod() to
make sure we can parse either version at all times.
Fixes #382982 for real.
2006-12-09 19:27:28 +00:00
Jan Schmidt
6e9ee0d19a sys/sunaudio/: Use the sunaudio debug category.
Original commit message from CVS:
* sys/sunaudio/gstsunaudiomixerctrl.c:
* sys/sunaudio/gstsunaudiosrc.c:
Use the sunaudio debug category.
* sys/sunaudio/gstsunaudiosink.c: (gst_sunaudiosink_finalize),
(gst_sunaudiosink_class_init), (gst_sunaudiosink_init),
(gst_sunaudiosink_set_property), (gst_sunaudiosink_get_property),
(gst_sunaudiosink_open), (gst_sunaudiosink_close),
(gst_sunaudiosink_prepare), (gst_sunaudio_sink_do_delay),
(gst_sunaudiosink_write), (gst_sunaudiosink_delay),
(gst_sunaudiosink_reset):
* sys/sunaudio/gstsunaudiosink.h:
Uses the sunaudio debug category for all debug output
Implements the _delay() callback to synchronise video playback better
Change the segtotal and segsize values back to the parent class
defaults (taken from buffer_time and latency_times of 200ms and 10ms
respectively)
Measure the samples written to the device vs. played.
Keep track of segments in the device by writing empty eof frames, and
sleep using a GCond when we get too far ahead and risk overrunning the
sink's ringbuffer.
Fixes: #360673
2006-12-09 16:17:33 +00:00
Jan Schmidt
f3bdb64971 Correct the attribution of the previous commit. The patch in question was written by Brian Cameron.
Original commit message from CVS:
Correct the attribution of the previous commit. The patch in
question was written by Brian Cameron.
2006-12-08 21:12:47 +00:00
René Stadler
2214d0b5bb gst/qtdemux/qtdemux.c: Fix caps for 24 bit raw PCM audio (2).
Original commit message from CVS:
Patch by: René Stadler  <mail at renestadler de>
* gst/qtdemux/qtdemux.c: (gst_qtdemux_get_duration),
(gst_qtdemux_handle_src_query), (qtdemux_parse_trak),
(qtdemux_audio_caps):
Fix caps for 24 bit raw PCM audio (2).
Fixes #383471.
2006-12-08 17:06:43 +00:00
Sebastian Dröge
6a016876c8 gst/audiofx/audiopanorama.*: Fix audiopanorame with float samples. Fixes #383726.
Original commit message from CVS:
Patch by: Sebastian Dröge  <mail at slomosnail de >
* gst/audiofx/audiopanorama.c: (gst_audio_panorama_init),
(gst_audio_panorama_set_caps), (gst_audio_panorama_transform):
* gst/audiofx/audiopanorama.h:
Fix audiopanorame with float samples. Fixes #383726.
2006-12-08 16:38:18 +00:00
Padraig O'Briain
a3b5d523d8 sys/sunaudio/: Implement reset functions to unblock the src/sink more quickly on state change requests.
Original commit message from CVS:
* sys/sunaudio/gstsunaudiosink.c: (gst_sunaudiosink_reset):
* sys/sunaudio/gstsunaudiosrc.c: (gst_sunaudiosrc_open),
(gst_sunaudiosrc_reset):
Implement reset functions to unblock the src/sink more quickly on
state change requests.
Patch by: Padraig O'Briain <padraig dot obriain at sun dot com>
2006-12-08 15:12:01 +00:00
Jerry Tan
f3df7a85e4 sys/sunaudio/gstsunaudiomixer.c: Construct the correct mixer device name when the AUDIODEV env var is set.
Original commit message from CVS:
* sys/sunaudio/gstsunaudiomixer.c:
(gst_sunaudiomixer_change_state):
Construct the correct mixer device name when the AUDIODEV env var
is set.
Patch by: Jerry Tan <jerry.tan at sun dot com>
Fixes: #383596
2006-12-08 14:42:42 +00:00
Jerry Tan
6c58a6baea sys/sunaudio/gstsunaudiosrc.c: Apply patch to open the mixer control and set the MULTIPLE_OPEN ioctl. On solaris, the...
Original commit message from CVS:
* sys/sunaudio/gstsunaudiosrc.c: (gst_sunaudiosrc_open):
Apply patch to open the mixer control and set the MULTIPLE_OPEN
ioctl. On solaris, the mixer device doesn't need opening non-blocking
- it can be opened by multiple processes by default, but needs the ioctl 	for multiple opens within 1 process.
Patch by: Jerry Tan <jerry.tan at sun dot com>
Fixes: #349015
2006-12-08 14:32:51 +00:00
Wim Taymans
6b01538bca gst/smpte/: Port to 0.10 some more.
Original commit message from CVS:
* gst/smpte/gstmask.h:
* gst/smpte/gstsmpte.c: (gst_smpte_class_init),
(gst_smpte_setcaps), (gst_smpte_init), (gst_smpte_reset),
(gst_smpte_collected), (gst_smpte_set_property),
(gst_smpte_get_property), (gst_smpte_change_state), (plugin_init):
* gst/smpte/gstsmpte.h:
Port to 0.10 some more.
Added duration property to specify the duration of the transition.
Make framerate a fraction.
Deprecate fps property, we only use negotiated fps.
Added docs.
Fix collectpad usage.
Reset state in READY.
Send NEWSEGMENT event.
Fix racy updates of object properties.
Added debug category.
Fixes #383323.
2006-12-07 17:30:03 +00:00
Wim Taymans
c37faa76a9 gst/qtdemux/qtdemux.c: Handle more H263 variants.
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (gst_qtdemux_get_duration),
(gst_qtdemux_handle_src_query), (qtdemux_parse_trak),
(qtdemux_video_caps):
Handle more H263 variants.
2006-12-07 11:35:41 +00:00
Sjoerd Simons
fd47c4fbf1 gst/videomixer/videomixer.c: Don't reset xpos and ypos in the setcaps function because causes unexpected behaviour.
Original commit message from CVS:
Patch by: Sjoerd Simons <sjoerd at luon dot net>
* gst/videomixer/videomixer.c:
(gst_videomixer_set_master_geometry),
(gst_videomixer_pad_sink_setcaps), (gst_videomixer_collect_free):
Don't reset xpos and ypos in the setcaps function because causes
unexpected behaviour.
Fixes #382179.
2006-12-06 15:06:04 +00:00
Wim Taymans
1444040b98 gst/multipart/multipartmux.c: Keep track of the buffer timestamp in the collectdata member instead of modifying the b...
Original commit message from CVS:
* gst/multipart/multipartmux.c: (gst_multipart_mux_compare_pads),
(gst_multipart_mux_queue_pads), (gst_multipart_mux_collected):
Keep track of the buffer timestamp in the collectdata member instead
of modifying the buffer without making the metadata writable first.
Fixes #382277.
2006-12-06 14:45:30 +00:00
Rob Taylor
21c9ac41a9 gst/udp/gstudpsrc.c: If using multicast in udpsrc, bind to the multicast address rather than
Original commit message from CVS:
Patch by: Rob Taylor <robtaylor at floopily dot org>
* gst/udp/gstudpsrc.c: (gst_udpsrc_start):
If using multicast in udpsrc, bind to the multicast address rather than
IN_ADDR_ANY.
This allows the simultanous use of multiple udpsrcs listening on
different multicat addresses. Without this all udpsrcs will receive all
packets from all subscribed multicast addresses.
Fixes #383001.
2006-12-06 14:33:54 +00:00
Jonathan Matthew
93663539f7 ext/taglib/gstid3v2mux.cc: Don't attempt to write a NULL frame into the ID3 tag set when the createFrame method retur...
Original commit message from CVS:
* ext/taglib/gstid3v2mux.cc:
Don't attempt to write a NULL frame into the ID3 tag set when the
createFrame method returned NULL.
Fixes: #381857
Patch by: Jonathan Matthew <jonathan at 0kaolin wh9 net >
2006-12-06 13:35:52 +00:00
Sebastian Dröge
4f799e000f gst/apetag/gstapedemux.c: Use g_strtod() instead of sscanf to parse doubles, so that it will try parsing in the C loc...
Original commit message from CVS:
* gst/apetag/gstapedemux.c: (ape_demux_parse_tags):
Use g_strtod() instead of sscanf to parse doubles, so that it will
try parsing in the C locale if the current locale fails.
Fixes: #382982
Patch by: Sebastian Dröge  <mail at slomosnail de >
2006-12-06 13:16:59 +00:00
Sergey Scobich
1fd0727d5f win32/MANIFEST: Fix compilation on win32 under VS8
Original commit message from CVS:
* win32/MANIFEST:
Fix compilation on win32 under VS8
Patch by: Sergey Scobich <sergey dot scobich at gmail dot com>
Partially fixes #381175
2006-12-01 10:31:46 +00:00
Stefan Kost
541a13d0e2 gst/avi/gstavimux.c: accept all mpegversions,fixes #380825 spotted by: Jerome Alet
Original commit message from CVS:
* gst/avi/gstavimux.c:
accept all mpegversions,fixes #380825
spotted by: Jerome Alet
2006-11-30 16:48:51 +00:00
Stefan Kost
d5ce2baebb sys/v4l2/v4l2src_calls.c: cleanup the error message a bit more
Original commit message from CVS:
* sys/v4l2/v4l2src_calls.c: (gst_v4l2src_fill_format_list),
(gst_v4l2src_queue_frame), (gst_v4l2src_grab_frame),
(gst_v4l2src_get_capture), (gst_v4l2src_set_capture),
(gst_v4l2src_capture_init), (gst_v4l2src_buffer_finalize):
cleanup the error message a bit more
2006-11-30 16:46:13 +00:00
René Stadler
a7f31a2117 gst/replaygain/gstrganalysis.c: Call the base class handler. Fixes #380610.
Original commit message from CVS:
Patch by: René Stadler  <mail at renestadler de>
* gst/replaygain/gstrganalysis.c: (gst_rg_analysis_event):
Call the base class handler.  Fixes #380610.
2006-11-30 15:08:08 +00:00
Wim Taymans
3244d5cb8a ext/libcaca/gstcacasink.c: Fix width and height properties.
Original commit message from CVS:
* ext/libcaca/gstcacasink.c: (gst_cacasink_class_init):
Fix width and height properties.
* ext/libcaca/gstcacasink.h:
Fix compilation on newer libcaca that require us to include a new
header. Fixes #379918.
2006-11-28 12:30:10 +00:00
Wim Taymans
f249d639f8 gst/rtsp/: Add method so that extensions can choose to disable the setup of a stream.
Original commit message from CVS:
* gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_open):
* gst/rtsp/gstrtspsrc.h:
* gst/rtsp/rtspext.h:
* gst/rtsp/rtspextwms.c: (rtsp_ext_wms_configure_stream),
(rtsp_ext_wms_get_context):
Add method so that extensions can choose to disable the setup of
a stream.
Make the WMS extension skip setup of x-wms-rtx streams. Fixes #377792.
2006-11-28 11:52:27 +00:00
Wim Taymans
4b8597668d gst/qtdemux/qtdemux.c: Remove some asserts and replace them with a proper error message. Fixes #379261.
Original commit message from CVS:
* gst/qtdemux/qtdemux.c: (gst_qtdemux_get_duration),
(gst_qtdemux_handle_src_query), (qtdemux_parse_trak):
Remove some asserts and replace them with a proper error
message. Fixes #379261.
2006-11-27 17:16:26 +00:00
Wim Taymans
f1be9bd688 mention bug fix
Original commit message from CVS:
mention bug fix
2006-11-27 16:30:49 +00:00
Jonas Holmberg
6d91770165 gst/multipart/multipartmux.c: Push header in a separate buffer instead of memcpy:ing all data
Original commit message from CVS:
Patch by: Jonas Holmberg <jonas dot holmberg at axis dot com>
* gst/multipart/multipartmux.c: (gst_multipart_mux_collected):
Push header in a separate buffer instead of memcpy:ing all data
Change LF => CRLF in headers
Move trailing LF to header
2006-11-27 16:29:07 +00:00
Wim Taymans
9e782fdc7e gst/rtp/gstrtpmpadepay.c: Small buffer overflow fix and improve debugging.
Original commit message from CVS:
* gst/rtp/gstrtpmpadepay.c: (gst_rtp_mpa_depay_chain):
Small buffer overflow fix and improve debugging.
2006-11-27 16:26:50 +00:00