Commit Graph

175 Commits

Author SHA1 Message Date
Michael Niedermayer
eae3cf06a5 Merge remote-tracking branch 'qatar/master'
* qatar/master:
  flvdec: Fix invalid pointer deferences when parsing index
  configure: disable hardware capabilities ELF section with suncc on Solaris x86
  Use explicit struct initializers for AVCodec declarations.
  Use explicit struct initializers for AVOutputFormat/AVInputFormat declarations.
  adpcmenc: Set bits_per_coded_sample
  adpcmenc: fix QT IMA ADPCM encoder
  adpcmdec: Fix QT IMA ADPCM decoder
  permit decoding of multichannel ADPCM_EA_XAS
  Fix input buffer size check in adpcm_ea decoder.
  fft: avoid a signed overflow
  mpegps: Handle buffer exhaustion when reading packets.

Conflicts:
	libavcodec/adpcm.c
	libavcodec/adpcmenc.c
	libavdevice/alsa-audio-enc.c
	libavformat/flvdec.c
	libavformat/mpeg.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2011-09-24 22:39:52 +02:00
Diego Biurrun
8671488799 Use explicit struct initializers for AVCodec declarations. 2011-09-24 12:11:19 +02:00
Michael Niedermayer
aae1c247b1 ra288: avoid one multiply
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2011-08-09 15:08:20 +02:00
Mans Rullgard
2912e87a6c Replace FFmpeg with Libav in licence headers
Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-03-19 13:33:20 +00:00
Diego Elio Pettenò
e7e2df27f8 Add ff_ prefix to data symbols of encoders, decoders, hwaccel, parsers, bsf.
None of these symbols should be accessed directly, so declare them as
hidden.

Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit d36beb3f69)
2011-01-28 03:15:34 +01:00
Diego Elio Pettenò
d36beb3f69 Add ff_ prefix to data symbols of encoders, decoders, hwaccel, parsers, bsf.
None of these symbols should be accessed directly, so declare them as
hidden.

Signed-off-by: Mans Rullgard <mans@mansr.com>
2011-01-26 16:08:45 +00:00
Stefano Sabatini
5d6e4c160a Replace deprecated symbols SAMPLE_FMT_* with AV_SAMPLE_FMT_*, and enum
SampleFormat with AVSampleFormat.

Originally committed as revision 25730 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-11-12 11:04:40 +00:00
Måns Rullgård
0b37cccaab ra288: convert VLAs to fixed size
Originally committed as revision 23832 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-06-27 19:30:31 +00:00
Ronald S. Bultje
b1078e9fe6 Move clipping of audio samples (for those codecs outputting float) from decoder
to the audio conversion routines.

Originally committed as revision 22937 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-04-21 17:57:48 +00:00
Stefano Sabatini
72415b2adb Define AVMediaType enum, and use it instead of enum CodecType, which
is deprecated and will be dropped at the next major bump.

Originally committed as revision 22735 to svn://svn.ffmpeg.org/ffmpeg/trunk
2010-03-30 23:30:55 +00:00
Stefano Sabatini
9106a698e7 Rename bitstream.h to get_bits.h.
Originally committed as revision 18494 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-13 16:20:26 +00:00
Thilo Borgmann
7a00bbad21 Implement avcodec_decode_video2(), _audio3() and _subtitle2() which takes an
AVPacket argument rather than a const uint8_t *buf + int buf_size. This allows
passing of packet-specific flags from demuxer to decoder, such as the keyframe
flag, which appears necessary to playback corePNG P-frames.

Patch by Thilo Borgmann thilo.borgmann googlemail com, see also the thread
"Google Summer of Code participation" on the mailinglist.

Originally committed as revision 18351 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-04-07 15:59:50 +00:00
Vitor Sessak
66d4c62806 Do not reimplement ff_celp_lp_synthesis_filterf().
Originally committed as revision 17562 to svn://svn.ffmpeg.org/ffmpeg/trunk
2009-02-24 18:11:42 +00:00
Vitor Sessak
08c433972e Use ff_dot_productf() in ra288.c
Originally committed as revision 15757 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-10-30 22:24:40 +00:00
Vitor Sessak
d552d04dc9 Simplify: avoid duplication backward_filter()
Originally committed as revision 15428 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-26 18:42:06 +00:00
Vitor Sessak
64e4af2ac1 Do instead of divising a float by a constant, multiply by its inverse
Originally committed as revision 15417 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-25 20:03:57 +00:00
Vitor Sessak
b6c7758168 Move constant multiplication out of the loop
Originally committed as revision 15404 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-24 20:31:24 +00:00
Vitor Sessak
e60daa340b Cosmetics: move convolve() together with the other DSP functions
Originally committed as revision 15403 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-24 20:05:22 +00:00
Vitor Sessak
a987a126fd Simplify: move division by constant off the loop
Originally committed as revision 15402 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-24 20:03:58 +00:00
Michael Niedermayer
645a6be1e7 Merge the 2 lpc loops.
This changes the output by (stddev:    0.21 PSNR:109.51, file:ddinterview28.ra),
the changes are due to float rounding inaccuracies and do not happen if doubles
are used.

Originally committed as revision 15394 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-23 23:16:48 +00:00
Michael Niedermayer
571bbaf814 Factorize lpc code slightly.
Originally committed as revision 15393 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-23 22:49:22 +00:00
Vitor Sessak
faf6d6964b Use SAMPLE_FMT_FLT instead of doing the float->int conversion in the
decoder. This changes the output very little and any difference should
be inaudible.

Originally committed as revision 15343 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-17 19:26:37 +00:00
Vitor Sessak
9547cadb8d Cosmetics: line breaks
Originally committed as revision 15308 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-13 16:56:58 +00:00
Vitor Sessak
111734de09 Simplify: use a single history buffer for gain and a single one for
speech instead of having two for each in the context.

Originally committed as revision 15307 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-13 16:49:05 +00:00
Vitor Sessak
9c10ab6cd1 Cosmetics: align spec references
Originally committed as revision 15300 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-11 19:10:26 +00:00
Vitor Sessak
5381a00a2b Rename function: s/colmult/apply_window/
Originally committed as revision 15299 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-11 19:06:54 +00:00
Diego Biurrun
36b3e36e00 misc spelling/wording/grammar fixes
Originally committed as revision 15296 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-11 08:13:23 +00:00
Vitor Sessak
fd8897e803 Convert table to integer.
Originally committed as revision 15292 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-10 19:00:02 +00:00
Vitor Sessak
1be0fc2909 Avoid duplicating compute_lpc_coefs() function in both the RA288 and AAC decoders.
Originally committed as revision 15193 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-09-04 11:03:14 +00:00
Vitor Sessak
8089c652a7 Check *data_size in decode_frame()
Originally committed as revision 14636 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-06 03:00:15 +00:00
Vitor Sessak
5991704634 Cosmetics: alignment
Originally committed as revision 14635 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-06 02:49:22 +00:00
Vitor Sessak
e3751aa6ec Flip (by making buf[i] -> buf[size-i-1]) two buffers: {sp,gain}_block. This
needs duplicating a few loops, but now the code is clearer.

Originally committed as revision 14634 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-06 02:44:59 +00:00
Vitor Sessak
6888b4fcec Rename prodsum() function to convolve()
Originally committed as revision 14615 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-08-05 04:52:33 +00:00
Peter Ross
fd76c37fd9 Modify all codecs to report their supported input and output sample format(s).
Originally committed as revision 14482 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-31 10:47:31 +00:00
Vitor Sessak
4ca7e74c1f Do not declare a counter as unsigned when it is not needed
Originally committed as revision 14469 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-29 18:22:31 +00:00
Vitor Sessak
4e33ed368a Cosmetics: rename loop counter vars to i,j
Originally committed as revision 14468 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-29 18:20:49 +00:00
Vitor Sessak
045e21cc19 Cosmetics: new line
Originally committed as revision 14457 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-28 10:49:44 +00:00
Vitor Sessak
e7e4f476c0 Remove the now useless phase variable from context
Originally committed as revision 14456 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-28 10:49:14 +00:00
Vitor Sessak
c749f3db98 Cosmetics: make comment match var name
Originally committed as revision 14454 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-28 05:18:39 +00:00
Vitor Sessak
6509507fad Cosmetics: align comments
Originally committed as revision 14453 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-28 05:16:51 +00:00
Vitor Sessak
f285e6dd31 Rename two context vars: s/sb/sp_block/, s/lhist/gain_block/
Originally committed as revision 14452 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-28 04:53:05 +00:00
Vitor Sessak
36826ee0df Declare temporary buffers to be only of the necessary size
Originally committed as revision 14451 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-28 04:37:58 +00:00
Vitor Sessak
5e707c5905 Remove redundant comments
Originally committed as revision 14450 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-28 04:25:51 +00:00
Vitor Sessak
c6ad13044a Cosmetics: do not align with now removed next instruction
Originally committed as revision 14449 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-28 04:24:08 +00:00
Vitor Sessak
2c46367163 Cosmetics: remove braces and useless newline
Originally committed as revision 14448 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-28 04:07:18 +00:00
Vitor Sessak
2b356efec2 Change the way the input is passed to do_hybrid_filter(). Before, in[0] was
the oldest input sample passed and in[n-1] was the latest. Now it is the
contrary. This allows making backward_filter() somewhat simpler.

Originally committed as revision 14447 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-28 02:55:47 +00:00
Vitor Sessak
aed39f6c02 Remove RA288Context.output buffer. This buffer is just RA288Context.sb
backwards (output[i] == sb[N-i], where N is the buffer length).

This makes the code slower, this will be fixed in my next commit.

Originally committed as revision 14446 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-28 02:53:07 +00:00
Vitor Sessak
b26d320583 Add a few comments pointing to the G.728 specification
Originally committed as revision 14444 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-27 22:22:51 +00:00
Vitor Sessak
854ce441c3 Remove the history buffer from the context. It can easily be evaluated
from the lhist buffer.

Originally committed as revision 14443 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-27 22:21:41 +00:00
Vitor Sessak
0143ec2a7e Rename two context buffers: pr{1,2} -> {sp,gain}_lpc. Also add a few doxy
comments.

Originally committed as revision 14437 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-27 20:58:29 +00:00
Vitor Sessak
59da0390dc Remove st1 and st2 temporary buffers in backward_filter() and use instead
RA288Context.pr{1,2}. Note that the pr{1,2} buffers are one unity smaller
than the st{1,2} buffers. My guess is that the original coder decided to
add one to the array sizes "just to be sure".

Originally committed as revision 14435 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-27 20:55:27 +00:00
Vitor Sessak
3df136d438 Change slightly the meaning of RA288Context.phase. This
allows to remove two intermediary buffers and avoid a few
memcpy's.

Originally committed as revision 14432 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-27 20:35:32 +00:00
Vitor Sessak
f42eb5715d Remove st1 and st2 variables from context, since they could be just local vars
Originally committed as revision 14421 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-26 15:14:50 +00:00
Vitor Sessak
272d258ab9 Rename st{1,2}{a,b} context variables to more meaningful names: {sp,gain}_{rec,hist}
Originally committed as revision 14420 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-26 15:10:17 +00:00
Vitor Sessak
efa86ebe4c Cosmetics: remove useless parenthesis
Originally committed as revision 14418 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-26 14:38:29 +00:00
Vitor Sessak
e07c5ade5e Move colmult() function to the beginning of file to group DSP-related functions.
Originally committed as revision 14417 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-26 14:35:50 +00:00
Vitor Sessak
5af20c207e Remove an useless comment describing colmult()
Originally committed as revision 14416 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-26 14:33:53 +00:00
Vitor Sessak
d899014ee2 Remove an useless comment describing prodsum()
Originally committed as revision 14415 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-26 14:33:25 +00:00
Vitor Sessak
952a980d75 Give the context variables of ra288 a better name: s/glob/ractx/
Originally committed as revision 14414 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-26 14:31:47 +00:00
Vitor Sessak
029e1c01b5 Give the context structure of ra288 a better name: s/Real288_internal/RA288Context/
Originally committed as revision 14413 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-26 14:29:39 +00:00
Vitor Sessak
a53b545068 Cosmetics: grammar nits
Originally committed as revision 14368 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-24 11:55:01 +00:00
Vitor Sessak
2477d60944 Rename update() function to backward_filter() and add a doxy comment
Originally committed as revision 14364 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-24 04:29:23 +00:00
Vitor Sessak
a6755f8d53 Rename and comment bandwidth broadening tables
(s/table1a/syn_bw_tab/, s/table2a/gain_bw_tab/).

Originally committed as revision 14363 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-24 04:15:50 +00:00
Vitor Sessak
5e65f5df0e Follow FFmpeg convention of returning negative values on error in eval_lpc_coeffs()
Originally committed as revision 14362 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-24 04:07:50 +00:00
Vitor Sessak
a3896c6377 Rename pred() to eval_lpc_coeffs() and add a doxy comment
Originally committed as revision 14361 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-24 04:05:41 +00:00
Vitor Sessak
a0cce1587b Give windowing tables a more descriptive name
(s/table1/syn_window/, s/table2/gain_window/).

Originally committed as revision 14360 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-24 03:50:06 +00:00
Vitor Sessak
475d0e1464 Add comments to do_hybrid_window()
Originally committed as revision 14359 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-24 03:28:42 +00:00
Vitor Sessak
0f72a2b7d3 Give parameters of do_hybrid_window() more meaningful names
Originally committed as revision 14358 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-24 03:28:01 +00:00
Vitor Sessak
427981c7a6 Rename co() function to the much more descriptive name of
do_hybrid_window(). Also change a misleading and wrong comment.

Originally committed as revision 14357 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-24 03:23:51 +00:00
Vitor Sessak
5ab3d66fe5 Simplify co(): write constant in a more readable way
Originally committed as revision 14356 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-24 03:22:19 +00:00
Vitor Sessak
bf75ac57b8 Simplify co(), use memcpy/memmove and colmult() when useful.
Originally committed as revision 14355 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-24 03:19:52 +00:00
Vitor Sessak
9f59e608d2 Cosmetics: alignment
Originally committed as revision 14304 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-19 15:43:34 +00:00
Vitor Sessak
3c617380e7 Simplify co(): do not abuse pointer aritmetics
Originally committed as revision 14303 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-19 15:41:15 +00:00
Vitor Sessak
6bc5714be6 Simplify co(): remove variables that are only used once
Originally committed as revision 14301 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-19 15:32:29 +00:00
Vitor Sessak
96e8987e5b Simplify: do not overuse pointer aritmetic
Originally committed as revision 14271 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-17 23:48:53 +00:00
Vitor Sessak
c52d2da905 Declare parameters of pred() that could be const as such
Originally committed as revision 14270 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-17 23:02:52 +00:00
Vitor Sessak
efa85e5e45 Another simplification
Originally committed as revision 14269 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-17 23:01:31 +00:00
Vitor Sessak
4a51e06bfc Simplify
Originally committed as revision 14268 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-17 22:59:53 +00:00
Vitor Sessak
02a1eb9329 Simplify
Originally committed as revision 14267 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-17 22:42:21 +00:00
Vitor Sessak
e4265007a6 Declare function parameters as const
Originally committed as revision 14266 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-17 22:39:29 +00:00
Vitor Sessak
0e3510a31f Revert r14218. FFMAX is a macro, so
sum = FFMAX(1, scalar_product(...));
might calculate the scalar product twice, which is slower.

Originally committed as revision 14230 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-14 14:41:01 +00:00
Vitor Sessak
b903a9285e Simplify
Originally committed as revision 14218 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-13 20:41:09 +00:00
Vitor Sessak
3819081f75 Another av_clipf() usage
Originally committed as revision 14217 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-13 20:39:55 +00:00
Vitor Sessak
aa64ee30d1 Do not declare as double a var that only stores a float
Originally committed as revision 14216 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-13 20:38:42 +00:00
Vitor Sessak
1894db1487 Simplify: use FFMAX
Originally committed as revision 14215 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-13 20:36:32 +00:00
Vitor Sessak
4138ad961c Add av_clipf() function to common.h and use it in ra288.c
Originally committed as revision 14213 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-13 19:59:44 +00:00
Vitor Sessak
5be30c59da Simplify: glob->phase is always == 3
Originally committed as revision 14094 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-06 14:23:30 +00:00
Vitor Sessak
f803495415 Remove phasep context var, it is just phase*5
Originally committed as revision 14092 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-06 12:03:21 +00:00
Vitor Sessak
eb73742d6e Slighly faster operation
Originally committed as revision 14091 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-06 12:01:59 +00:00
Vitor Sessak
8edfd15175 Cosmetics: remove braces
Originally committed as revision 14089 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-06 10:35:01 +00:00
Vitor Sessak
a5f0f504df Another use of scalar_product_float()
Originally committed as revision 14088 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-06 10:32:29 +00:00
Vitor Sessak
a03a6db1af Do not reimplement memmove()
Originally committed as revision 14087 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-06 10:30:21 +00:00
Vitor Sessak
647b90ae0e Cosmetics: remove braces
Originally committed as revision 14080 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-05 18:43:24 +00:00
Vitor Sessak
7a64649d68 Create a function for float dot product instead of duplicating all over the file
Originally committed as revision 14079 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-05 18:42:08 +00:00
Vitor Sessak
6f1e7a9e09 Write for loops in a more standard way. In my opinion, they are much more readable now.
Originally committed as revision 14068 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-04 19:55:58 +00:00
Vitor Sessak
69c23e6f33 Move vars declaration to inner loop when possible
Originally committed as revision 14066 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-04 15:37:52 +00:00
Vitor Sessak
12ea267bca Simplify
Originally committed as revision 14065 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-04 15:32:04 +00:00
Vitor Sessak
ab52eb8e50 Remove unneeded var
Originally committed as revision 14063 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-03 19:25:12 +00:00
Vitor Sessak
780433976d Use a matrix instead of a vector
Originally committed as revision 14062 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-07-03 19:23:42 +00:00
Vitor Sessak
f38deb4452 Remove useless wrapper around ra288_decode_frame()
Originally committed as revision 14041 to svn://svn.ffmpeg.org/ffmpeg/trunk
2008-06-30 19:30:27 +00:00