Commit graph

4496 commits

Author SHA1 Message Date
Robert Swain
5a56274cba deinterlace: Refactor chain function
This is needed to be able to output a frame from outside the chain
function, i.e. in the following commit that adds flushing of the field
history.
2010-11-12 10:40:48 +00:00
Jonathan Matthew
5b68b64617 icydemux: fix use-after-free of taglist
Broken by commit 4c2f5333 (bug #630205).

https://bugzilla.gnome.org/show_bug.cgi?id=633970
2010-11-04 09:34:11 +00:00
Wim Taymans
706731b331 rtph264depay: only set delta unit on all-non-key units
Only set the delta flag when all of the units in the packet are delta units.
Based on patch from Olivier Crête <olivier.crete@collabora.co.uk>

Fixes #632945
2010-11-01 15:09:05 +01:00
Thiago Santos
e400c8482a goom: Return not-negotiated when bps is unknown
If caps weren't negotiated, goom should return not-negotiated
from its chain functions instead of using bps unitialized, which
leads to a division by 0

https://bugzilla.gnome.org/show_bug.cgi?id=633212
2010-10-28 10:34:29 -03:00
Jan Schmidt
3ab2eeecb8 videoflip: Forward src pad events upstream.
Fix passing navigation and other events upstream by actually sending them.

Fixes: #633205
2010-10-27 11:59:07 +01:00
Tim-Philipp Müller
ac70239020 qtdemux: fix deadlock in error code path
GST_ELEMENT_ERROR must not be called with the object lock held,
since it will call gst_object_get_parent() internally, which
takes the object lock as well.
2010-10-24 18:57:59 +01:00
Philip Jägenstedt
7fcd7d8cf2 matroskademux: Remove useless clearing of send_xiph_headers for Dirac
This looks like a mistake when copy-pasting the Theora code.

https://bugzilla.gnome.org/show_bug.cgi?id=632682
2010-10-23 16:10:14 +01:00
Philip Jägenstedt
6cf398cdf3 matroskademux: don't crash if vorbis/theora codec data is missing
Error out properly in this case instead of crashing.

https://bugzilla.gnome.org/show_bug.cgi?id=632682
2010-10-23 14:05:46 +01:00
Mark Nauwelaerts
ca7870de49 rtspsrc: fix duration reporting
Init segment prior to storing duration info in it.

Fixes #632548.
2010-10-19 16:47:20 +02:00
David Schleef
e9d4710cc8 Update generated orc code 2010-10-15 14:02:57 -07:00
Olivier Crête
077a61932a rtpbin: Use the right constant to define the "use-pipeline-clock" property
The wrong #define was being used, now use the correct one.
2010-10-14 17:41:30 -04:00
Mark Nauwelaerts
4085f12058 ac3: demuxers provide framed output 2010-10-14 17:29:26 +02:00
Tim-Philipp Müller
7a8ebc4a79 matroskamux: reduce newsegment event spam and set discont flag where needed
Only send newsegment events with new positions downstream when actually
needed, instead of sending multiple newsegment events with new seek
positions in a row. Also set the discont flag on buffers after a
discontinuity.
2010-10-14 14:00:59 +01:00
Tim-Philipp Müller
84e47e579b matroskamux: set correct buffer offsets after seeks
Re-use the existing 'pos' field maintained by ebml writer to set
buffer offsets. This also makes sure that we set the right offsets
on buffers after a seek (e.g. when writing an index at the end).
2010-10-14 12:48:33 +01:00
Tim-Philipp Müller
6ff3dfe946 matroskamux: don't forward tag events downstream
Don't forward stream-specific tag events downstream (esp. not
before any newsegment event).x
2010-10-14 12:48:00 +01:00
Mark Nauwelaerts
c7a8d672a7 qtdemux: handle another mp4v variation
... including the glbl atom containing codec-data.
2010-10-13 17:26:33 +02:00
Stefan Kost
d8167e3071 various (gst): add a missing G_PARAM_STATIC_STRINGS flags 2010-10-13 18:00:28 +03:00
Stefan Kost
2975307f86 various: wrap property registration and add a single fixme for long desc. 2010-10-13 17:39:21 +03:00
Wim Taymans
9f8b56b974 h264depay: always mark the codec_data as keyframe
We need to mark the codec_data as a keyframe or else downstream decoders might
decide to skip it, waiting for a keyframe.

Fixes #631996
2010-10-13 11:48:49 +02:00
Zaheer Abbas Merali
6f0030f701 matroskamux: make buffer offsets a byte count rather than a buffer count 2010-10-13 07:17:24 +01:00
Tim-Philipp Müller
d65eb2b91a ext, gst: canonicalise property names where this wasn't the case
ie. "foo_bar" -> "foo-bar"
2010-10-12 16:04:21 +01:00
Thijs Vermeir
bcde8c1b29 rtpmpvpay: fix timestamping of rtp buffers
Incomming buffer is only pushed on the adapter at the end of the
handle_buffer function. But duration/timestamp of this buffer is already
taken into account for the current data in the adapter. This leads to
wrong rtp timestamps and extra latency.
2010-10-12 15:17:02 +02:00
Wim Taymans
ee7207aa3e rtspsrc: mark as a source
Mark the rtspsrc element as a source.
Requires 0.10.31.1 now
2010-10-11 15:12:51 +02:00
Sebastian Dröge
bcb4f50323 autodetect: Set GST_ELEMENT_IS_SOURCE flag on sources 2010-10-11 14:24:52 +02:00
Zaheer Abbas Merali
f012ab67cc matroskamux: set offsets on outgoing buffers 2010-10-10 14:44:43 +01:00
Robert Swain
6a6f90e745 deinterlace: Fix required fields logic
Both history_count and fields_required count from 1. As per the while loop
condition that follows this code, to perform the deinterlacing method, we need
history_count >= fields_required fields in the history. Therefore if we have
history_count < fields_required (not fields_required + 1), we need more fields.
2010-10-06 15:05:36 +02:00
Andoni Morales Alastruey
0bffae750b flvmux: resend onMetada tag when tags changes in streamable mode 2010-10-06 09:14:24 +02:00
Arun Raghavan
4a244e0d55 qtdemux: AAC codec_data can be > 2 bytes long
This fixes the assumption that DecoderSpecificInfo must be 2 bytes long
for AAC files. The specification allows HE-AAC to be explicitly
signalled in a backward compatible way. This is done by means of an
additional information after the regular AAC header. It is expected that
decoders that can play AAC but not HE-AAC will parse the header normally
and ignore extended bits, much as they do for the HE-AAC specific payload
in the actual stream.

https://bugzilla.gnome.org/show_bug.cgi?id=612313
2010-10-05 19:45:31 +01:00
Mark Nauwelaerts
bb9a8a9b7d matroskademux: only unref buffer when no longer needed for cluster scanning
Fixes #629047.
2010-10-05 16:03:10 +02:00
Mark Nauwelaerts
e0d11f0644 matroskademux: avoid infinite cluster scanning 2010-10-05 16:03:08 +02:00
Wim Taymans
49d5d8f69e goom: take duration into account when doing QoS
Take the duration of the frames into account so that we don't drop frames that
are only partially past the QoS deadline.
2010-10-05 12:23:15 +02:00
Wim Taymans
cd5f31f751 goom: use adapter for timestamping
Use the adapter timestamp code to get more accurate timestamps.
Fix latency calculation, we add our own latency in the worst case.
2010-10-05 12:23:15 +02:00
Andoni Morales Alastruey
4c2f5333bb icydemux: forward tag events
https://bugzilla.gnome.org/show_bug.cgi?id=630205
2010-10-04 20:10:02 +02:00
Wim Taymans
a060a65786 goom2k1: report our latency correctly
Fixes #631303
2010-10-04 19:01:03 +02:00
Wim Taymans
8c910a25fe goom2k1: add defines for default width/height/fps
Add some defines for the default width/height/fps instead of using different
values in different places.
2010-10-04 18:56:15 +02:00
Wim Taymans
418eae3ee3 goom: add latency compensation code.
Implement a latency query and report how much latency we will add to the
stream.
Alse make some defaults for the default width/height/framerate

Fixes #631303
2010-10-04 18:52:14 +02:00
Sebastian Dröge
a4c27169b6 rtp: Fix unitialized compiler warnings on OS X build bot
These warnings are wrong though, the variables are only used in
the cases where they *are* initialized by the bit reader.
2010-10-04 09:39:59 +02:00
Sebastian Dröge
c1877deee0 rtpg722pay: Fix uninitialized variable compiler warning
The clock rate is always 8000 Hz according to the RFC and
the sampling rate must always be 16000 Hz.
2010-10-03 23:49:08 +02:00
Vladimir Eremeev
8bf7381385 rtpjitterbuffer: improve article reference in comment block
https://bugzilla.gnome.org/show_bug.cgi?id=631082
2010-10-01 18:07:03 +01:00
Arun Raghavan
c65305d70e qtdemux: Use pbutils for H.264 profile/level extraction
The functions used to extract this data have been moved to gstpbutils to
facilitate reuse.

https://bugzilla.gnome.org/show_bug.cgi?id=617318
2010-10-01 17:07:36 +01:00
Arun Raghavan
9e786de9c8 matroskademux: Use pbutils for H.264 profile/level extraction
The functions used to extract this data have been moved to gstpbutils to
facilitate reuse.

https://bugzilla.gnome.org/show_bug.cgi?id=617318
2010-10-01 16:58:46 +01:00
Arun Raghavan
1a37a62454 qtdemux: Export MPEG-4 video profile and level in stream caps
This uses gstpbutils to extract the profile and level from the video
object sequence and adds this to stream caps. This can be used as
metadata and for fine-grained decoder selection.

https://bugzilla.gnome.org/show_bug.cgi?id=616521
2010-10-01 14:41:44 +01:00
Tim-Philipp Müller
64753bdbe8 qtdemux: fix aac channel override based on codec data for 7.1 case 2010-10-01 11:42:15 +01:00
Arun Raghavan
845a3d6c3d qtdemux: Export AAC profile and level in caps
This exports the AAC profile and level in caps for use as metadata and
(eventually) for more fine-grained selection of decoders at
caps-negotiation time. (Doesn't work for HE-AAC yet though.)

https://bugzilla.gnome.org/show_bug.cgi?id=612313
2010-10-01 11:41:53 +01:00
Wim Taymans
78e4a260b4 rtp: add G722 pay and depayloader 2010-09-30 18:34:36 +02:00
Thijs Vermeir
2c2c90a723 rtpjitterbuffer: update link to documentation 2010-09-30 12:08:49 +02:00
Tim-Philipp Müller
a461b94629 wavenc: miniscule code clean-up
GST_CLOCK_TIME_NONE is not something that should be used in connection with
GST_FORMAT_BYTES.
2010-09-29 18:53:26 +01:00
Mark Nauwelaerts
8d69663026 avidemux: reverse playback; prevent overlap of subsequent fragments 2010-09-29 11:00:08 +02:00
René Stadler
0cfe24d132 rtspsrc: fix missing null-terminator in protocols array
Fixes random crash regression from commit ae84ae.
2010-09-28 16:21:48 +03:00
Wim Taymans
ef29a59903 rtspsrc: don't add /UDP in the transport, it's the default
don't add the default UDP lower-transport, some servers don't seem to like it.

Fixes #630500
2010-09-24 16:26:20 +02:00
Pascal Buhler
7a8c2a4b8a rtpmanager: packet lost should not be a warning. It happens all the time... 2010-09-24 16:00:03 +02:00
Pascal Buhler
ca6a512b5e rtpbin: Make cleaning up sources in rtp_session_on_timeout MT safe
Using _foreach_remove on the hashtable, while releasing the lock protecting
that table inside the callback is not a good idea. The hashtable might
then change (a source removed or added) while signals like on_timeout
are being sent.

This solution makes a copy of the table, performs the _foreach without
actually removing any sources, but marks them for removal on a second
iteration with the real list, but this time not letting go of the lock.

Fixes #630452
2010-09-24 15:38:00 +02:00
Edward Hervey
87a9d7f679 id3demux: Sanitize id3 frame names
This is similar to what is done in qtdemux. Avoids providing invalid
structure/tags names
2010-09-24 15:27:24 +02:00
Edward Hervey
c6c941f315 apedemux: Skip empty tags
Avoid creating bogus string tags. Also added logging of the string
values of the tag name and value.
2010-09-24 15:27:24 +02:00
Pascal Buhler
bd8d80a8e4 rtpbin: Handle rysnc of iterator when looking for free pad name
If a new pad was added while iterating then a pad could be
returned that was already in use.

Fixes #630451
2010-09-24 14:10:26 +02:00
Wim Taymans
8337c89c74 rtpsession: fix compilation 2010-09-24 14:10:26 +02:00
Trond Andersen
800b4bdb26 rtpbin: Unlock before adding pad in new_payload_found
Holding internal locks while potentially calling out is a source
of deadlocks, and in this case the application might subscribe to the
pad-added signal.

Fixes #630449
2010-09-24 14:00:11 +02:00
Havard Graff
062568a9f5 rtpsession: relax third-party collision detection
If the source has been inactive for some time, we assume that it has
simply changed its transport source address. Hence, there is no true
third-party collision - only a simulated one.

Fixes #630447
2010-09-24 13:56:56 +02:00
Wim Taymans
ce007b244e rtpsource: whitespace fixes 2010-09-24 13:50:02 +02:00
Wim Taymans
c5203a479b rtpsource: simplify the rate estimation some more 2010-09-24 13:48:50 +02:00
Havard Graff
0fa589a3dd rtpmanager: provide additional statistics 2010-09-24 13:26:10 +02:00
Tim-Philipp Müller
730cfd609a equalizer: fix class definitions
Class structures must be based on the parent class struct, not on
the parent instance struct.
2010-09-23 21:22:45 +01:00
Tim-Philipp Müller
4451718eff videomixer2: pre-register pad class properly with g_type_class_ref
Fix code to match the comment. Also, there's no need to register the
background enum type again, this is already done via install_property.
2010-09-23 21:22:45 +01:00
Havard Graff
3e894a1f29 level: avoid division by zero on silence
Fixes bug #630458.
2010-09-23 21:19:01 +02:00
Wim Taymans
9e7b890a22 flvdemux: parse and use cts
For H264, there is an extra header containing the CTS, which is a timestamp
offset that should be applied to the PTS. Parse this value and use it to adjust
the pts.

Fixes #630088
2010-09-23 16:46:31 +02:00
Wim Taymans
77f02c2d7e flvdemux: improve pts debugging 2010-09-23 16:45:41 +02:00
Edward Hervey
6ce6ad41d5 qtdemux: Don't post tags if there are none
And make all code go through _post_global_tags.
2010-09-22 12:56:39 +02:00
Wim Taymans
f5c65a919f rtph264depay: refactor and simplify AU merging
Move the processing of the NALU to a separate method.
Simplify the merging of NALU into AU and use common code when possible.
2010-09-22 12:41:23 +02:00
Sebastian Dröge
72b7685bef shapewipe: Force format to AYUV in the example pipeline for the same reason 2010-09-21 19:15:22 +02:00
Sebastian Dröge
a1890f8d44 shapewipe: Improve debugging and immediately return empty caps from the getcaps functions 2010-09-21 19:15:22 +02:00
Thiago Santos
52f5e95aee qtdemux: Parse uuid atoms in push mode
Parses uuid atoms in push mode when they are found, they might
contain xmp tags.

Also does a minor refactoring to put the global tags posting
into a single function instead of repeating it in 3 different
places.

Fixes #629839
2010-09-20 23:39:38 -03:00
Thiago Santos
9227352e31 qtdemux: Delay tags posting a little
Delay tags posting until we've parsed all the headers so
that the native and xmp tags get merged before posting

https://bugzilla.gnome.org/show_bug.cgi?id=629839
2010-09-20 22:37:26 -03:00
Thiago Santos
8d6cabf9c3 qtdemux: Parse xmp packet in uuid atom
xmp packet is placed into a top-level uuid atom for
isom/mp4 variants.

This patch makes qtdemux parse all top-level atoms
in pull-mode before starting to push data, making
it able to find those tags.

https://bugzilla.gnome.org/show_bug.cgi?id=629839
2010-09-20 22:37:26 -03:00
Wim Taymans
2c8b725591 rtpstats: printf format fixes 2010-09-17 11:07:52 +02:00
Wim Taymans
9cc24e1b94 rtppay: some printf format fixes 2010-09-17 11:07:02 +02:00
Alessandro Decina
3605bd454a qtdemux: fix logic when pushing EOS.
Don't check for return values when pushing EOS. Still post an error if EOS is
reached and no streams have been found.
2010-09-15 18:27:24 +02:00
Alessandro Decina
42cde1ba3c qtdemux: don't send EOS twice on the same pad. 2010-09-14 17:43:33 +02:00
Wim Taymans
604c6555a4 rtpjpegpay: cleanups for DRI markers
Protect against invalid DRI markers.
do some cleanups
2010-09-13 17:31:35 +02:00
American Dynamics
0f3151c73b gstrtpjpegpay: Added Define Restart Interval (DRI) Marker
Added ability to detect and respond to a JPEG-defined DRI marker
2010-09-13 16:47:23 +02:00
Olivier Crête
8e73da10b3 gstrtpsession: Split getting the caps into its own function 2010-09-13 16:25:42 +02:00
Wim Taymans
8e1c9b5b33 rtpbin: small cleanup. 2010-09-13 16:25:42 +02:00
Wim Taymans
d541f5e24d rtpsession: Small cleanups
Make the property description prettier.
Actually multiple the bandwidth with the fraction.
2010-09-13 15:51:20 +02:00
Olivier Crête
1f17b334ff rtpsession: Calculate RTCP bandwidth as a fraction of the RTP bandwidth
Calculate the RTCP bandwidth to be a fraction of the RTP bandwidth if it is
specified as a value between 0 and 1.
2010-09-13 15:51:20 +02:00
Wim Taymans
8381d9788d session: improve bandwidth recalculation
Also recalculate bandwidth when one of the source bandwidths changed.
Use the newly calculated bandwidth.
2010-09-13 15:51:20 +02:00
Olivier Crête
6f53a2b240 rtpsession: Add the option to auto-discover the RTP bandwidth 2010-09-13 15:51:19 +02:00
Thijs Vermeir
f38e37470a rtpbin: set use-pipeline-clock on correct GObject 2010-09-13 14:39:51 +02:00
Olivier Crête
94e87ef8ee rtpsession: Initialise the average scaled by 16 2010-09-13 13:10:19 +02:00
Wim Taymans
e6db74764b rtpsession: add running_time argument docs 2010-09-13 12:41:56 +02:00
Olivier Crête
00fd89c074 rtpstats: Rectify description of current_time in RTPArrivalStats
It is the current time, it is unrelated to when the packet was actually received.
2010-09-13 12:37:01 +02:00
Wim Taymans
cb6de429a0 rtpsession: compute the average correctly scaled 2010-09-13 12:31:40 +02:00
Olivier Crête
64e4ffa25b rtpsession: Count sent RTCP packets after they have been finished
If they are counted before calling gst_rtcp_buffer_end(), then the
size is way too big.
2010-09-13 12:13:23 +02:00
Olivier Crête
306ee454c6 gstrtpsession: Don't unref pads in finalize
The gstrtpsession object is not holding any reference to them directly
2010-09-13 12:10:11 +02:00
Wim Taymans
8f2d254e24 rtspsrc: don't clear sdp when set as uri
when we set the SDP with an uri, don't clear it when we go to READY.
2010-09-10 18:06:48 +02:00
Wim Taymans
7698d8bc4a rtspsrc: use sdp uri parse method
Use the sdp parse method that does proper uri escaping.
2010-09-10 18:02:04 +02:00
Mark Nauwelaerts
d8a27ebe3e rtpmparobustdepay: fix some mis-implementation
Also add some debug.
2010-09-10 13:26:43 +02:00
Mark Nauwelaerts
81773f9cce rtpmparobustdepay: properly insert dummy buffers 2010-09-10 13:26:31 +02:00
Wim Taymans
ae84ae1b36 rtspsrc: add rtsp-sdp protocol support
Allow setting an SDP with the rtsp-sdp:// url.

Based on patch from Marco Ballesio.

See #628214
2010-09-10 12:14:21 +02:00
Alessandro Decina
51c9ad0233 alphacolor: make passthrough work. 2010-09-10 11:35:58 +02:00
Stefan Kost
d569cd8195 mp4adepay: small logging cleanup and addition to debug config parsing 2010-09-09 21:49:43 +03:00
Wim Taymans
de4a7fc4c4 rtpjpegpay: improve debugging 2010-09-09 18:48:53 +02:00
Mark Nauwelaerts
075afb6693 rtpmparobustdepay: use valid bitrate for dummy frame 2010-09-09 16:33:29 +02:00
Mark Nauwelaerts
91a60245b7 matroskademux: QoS handling logic only applies to forward playback
Fixes #628894.
2010-09-08 17:51:34 +02:00
Sebastian Dröge
640cb863d4 rtpjpegpay: Fix uninitialized variable compiler warning
Fixes bug #629018.
2010-09-08 07:13:42 +02:00
Wim Taymans
bd43ac854a qtdemux: use older g_array_free
g_array_unref() is only since 2.22
2010-09-07 17:06:02 +02:00
Wim Taymans
2ed53fd77f rtpjpegpay: do some more sanitity checks
Protect some more against invalid input.
2010-09-07 16:40:08 +02:00
American Dynamics
a482677a14 jpegpay: handle corrupted jpeg better
Protect against corrupted jpeg input.
2010-09-07 15:20:12 +02:00
Wim Taymans
474c013051 rvawdepay: cleanup unused fields 2010-09-07 13:56:54 +02:00
Wim Taymans
6be0c7b762 vrawdepay: handle invalid payload better
Make sure we don't read more data than available in the input buffer.
Clip the input data into the output buffer.
2010-09-07 13:56:53 +02:00
Stefan Kost
988f228da7 rtpmp4adepay: grab the sampling arte and put into caps
This is needed to be able to mux the received audio into mp4 (in the case of
aac). Fixes #625825.
2010-09-06 21:54:25 +03:00
Tim-Philipp Müller
22560c473d rtp: mark constant tables as const 2010-09-06 14:40:02 +01:00
Mark Nauwelaerts
2953801a5f rtpamrpay: properly support perfect-rtptime 2010-09-06 14:47:05 +02:00
Mark Nauwelaerts
275e352a2e rtpamrpay: proper duration for multiple frame payload 2010-09-06 14:47:02 +02:00
Mark Nauwelaerts
f5bbc56745 rtpamr(de)pay: support AMR-WB SID frame 2010-09-06 14:46:59 +02:00
Mark Nauwelaerts
d1974e386a rtpg729pay: properly support perfect-rtptime 2010-09-06 14:46:56 +02:00
Mark Nauwelaerts
713719f705 qtdemux: improve framerate determining
Collect a limited number of starting sample durations and use the median of
those to determine caps framerate.
2010-09-06 14:45:43 +02:00
Mark Nauwelaerts
13b553bce7 matroskademux: attempt more resync upon (cluster) parse error
That is, if parse error occurs in state requiring to move to next cluster,
and doing so to the expected next position of cluster fails, then scan for a
next cluster from present position and resume from there.

Fixes #620790.
2010-09-06 14:45:40 +02:00
Mark Nauwelaerts
4d9c1e99f2 matroskademux: not so fatal error handling
If some bits out of place in block(group) parsing, forego and move to next.
Also skip large blocks in pull mode, but need to give up in push mode.

Fixes #626463.
Improves #620790.
2010-09-06 14:45:37 +02:00
Mark Nauwelaerts
680eb51b68 matroskademux: additional parse recovery
In particular, upon parse failure in one cluster, we may forego remaining
content and try resuming from next cluster onwards.

Fixes #620790.
2010-09-06 14:45:30 +02:00
American Dynamics
5999e8e716 rtspsrc: Add property to configure udpsrc buffer size
Add a new udp-buffer-size property to configure the buffer-size on the udpsrc
elements.

Fixes #628058
2010-09-06 12:22:11 +02:00
Wim Taymans
93228ccd52 rtpbin: add ntp-sync property
Add an ntp-sync property that will sync the received streams to the server
NTP time. This requires synchronized NTP times between the sender and receivers,
like with ntpd.

Based on patch from Thijs Vermeir.

Fixes #627796
2010-09-06 11:01:57 +02:00
Wim Taymans
f03fd91400 jitterbuffer: rename a variable to avoid confusion 2010-09-06 11:01:57 +02:00
Wim Taymans
e3479630ae rtpbin: rename some variables for less confusion 2010-09-06 11:01:57 +02:00
Wim Taymans
0f59664c6a rtpjitterbuffer: move comment where it belongs 2010-09-06 11:01:57 +02:00
Wim Taymans
4fd81747f3 session: minor cleanups
Make clock snapshots more accurate by only sampling the same clock once.
2010-09-06 11:01:57 +02:00
Thijs Vermeir
51020549f0 rtpbin: add use-pipeline-clock property
With this property RTCP SR NTP times can be based
on the system clock (maybe synced with ntpd) or the
current pipeline clock.

https://bugzilla.gnome.org/show_bug.cgi?id=627796
2010-09-06 11:01:57 +02:00
Wim Taymans
3bae70ceea rtspext: stop configuration on first failure
Stop the configuration of a stream as soon as some of the extensions return
FALSE.

Fixes #581294
2010-09-06 11:01:57 +02:00
Wim Taymans
6660817af1 multifdsink: use refcount to count host/port duplicates
Instead of adding multiple client structures for the same host/port pair, use a
refcount.
Add a send-duplicates feature that allows you to disable sending multiple copies
of the same packet to the same host when it was added multiple times. The
send-duplicates property is by default set to TRUE for backwards compatibility
although it is very likely that this is not desired behaviour.
2010-09-06 10:45:28 +02:00
Wim Taymans
e4f8144bbf rtspsrc: implement custom event handler
Extend the _push_event() function so that it can also send events to the udp
sources when asked.
Implement a custum send_event function that correctly dispatches the downstream
events in TCP mode. This fixes sending EOS to rtspsrc and have it push the EOS
downstream.
2010-09-06 10:45:23 +02:00
Wim Taymans
fadade4d4a jpegdepay: handle DISCONT and reset state
Put a DISCONT event on the next output buffer when the input buffer had a
DISCONT.
Make sure we clear our adapter and reset our state before going to PAUSED.
Free the qtables.

Fixes #626869
2010-09-06 10:23:07 +02:00
Wim Taymans
3ec0d6b245 g729pay: extend from right parent 2010-09-06 10:23:07 +02:00
Stefan Kost
3b91ea7c81 qtdemux: use GST_BOILERPLATE macro 2010-09-06 09:57:58 +03:00
Stefan Kost
1c47115b8e videmixer: add a example showing how to use the child properties
Show how to position and set the alpho of the videos on gst-launch.
2010-09-06 09:57:57 +03:00
Stefan Kost
77fe8c151a spectrum only aggregate magnitude/phase if user asks for it 2010-09-06 09:53:00 +03:00
Stefan Kost
0dca0becb2 spectrum: improve performance with local vars
Use 'input' instead of 'spectrum->input' which was intende already (variable
exists, but not used everywhere). Also use a local version of
'spectrum->input_pos'.
2010-09-06 09:53:00 +03:00
Stefan Kost
8beead14d0 spectrum: code cleanup
More comments and logging. Extract one complex condition to a variable. Reorder
some code for readability.
2010-09-06 09:53:00 +03:00
Stefan Kost
50a139de85 spectrum: improve property setter
consistently only update if the property actualy changed the value. Do it
without reading the gvalue twice. No need to reset the spectrum analyzer for
threshold changes.
2010-09-06 09:53:00 +03:00
Stefan Kost
61f22f4379 spectrum: add helper to only flush ringbuffer data without resetting the fft
Reduces some duplicated code as well.
2010-09-06 09:53:00 +03:00
Stefan Kost
34bdec3d58 spectrum: more comments 2010-09-06 09:53:00 +03:00
David Schleef
738e092d4e deinterlace: Document methods with bad quality 2010-09-05 22:23:58 -07:00
David Schleef
9071cc8748 deinterlace: initialize all deinterlace class members
This fixes UYVY deinterlacing.
2010-09-05 22:23:58 -07:00
David Schleef
85aed94676 videomixer: orc_init() doesn't need to be called
There's no need to call orc_init() unless you're using the Orc
API directly.  All code created by orcc is guaranteed to work
without calling orc_init().
2010-09-05 18:45:21 -07:00
David Schleef
6143a60bdb deinterlace: Fix greedyl Orc implementation
To agree with the previous C/asm code.
2010-09-05 18:42:59 -07:00
Thiago Santos
de8fda9cc2 videomixer2: Fail when caps are incompatible
Do not forget to return false when caps are incompatible.
2010-09-05 22:34:36 -03:00
Thiago Santos
8435529073 videomixer: Only init orc if it is available
Put some ifdef around orc_init to prevent build errors
2010-09-05 20:56:52 -03:00
David Schleef
6584c75afe deinterlace: Update disted Orc files 2010-09-04 12:46:31 -07:00
David Schleef
f35d546c71 deinterlace: remove assembly code in favor of orc 2010-09-04 12:39:11 -07:00
David Schleef
02196850dd deinterlace: implement greedy in Orc 2010-09-04 12:39:11 -07:00
David Schleef
294d5c48da update disted Orc files 2010-09-04 11:43:21 -07:00
Thibault Saunier
08fd719898 alphacolor: Fix classification
This is no effect but a converter. Fixes bug #628608.
2010-09-04 14:55:43 +02:00
Sebastian Dröge
e79742205c videomixer2: Add documentation and add to the docs 2010-09-04 14:55:43 +02:00
Sebastian Dröge
bcfd60a8d2 videomixer2: Add videomixer2 element
This is based on collectpads2 and is synchronizing
all streams based on the running time.

New features compared to old videomixer:
 * Synchronizing frames on the running time
 * Improved and simplified negotiation
 * Full QoS support
 * Variable framerate support

Fixes bug #626048, #624905.
2010-09-04 14:52:11 +02:00
Pavel Kostyuchenko
6940559c46 matroskademux: Relax parsing of date tags
Before we required a complete date in matroskademux but in
id3demux for example only the year or year and month was possible too.

Fixes bug #628454.
2010-09-04 14:52:11 +02:00
Sebastian Dröge
55a52262d3 wavparse: Don't use GST_FLOW_IS_FATAL() 2010-09-04 14:52:10 +02:00
Sebastian Dröge
d224251df4 rtspsrc: Don't use GST_FLOW_IS_FATAL() and GST_FLOW_IS_SUCCESS() 2010-09-04 14:52:10 +02:00
Sebastian Dröge
7fe34f3889 qtdemux: Don't use GST_FLOW_IS_FATAL() 2010-09-04 14:52:10 +02:00
Sebastian Dröge
e8743b3789 matroskademux: Don't use GST_FLOW_IS_FATAL() 2010-09-04 14:52:09 +02:00
Sebastian Dröge
1243b76df7 rndbuffersize: Don't use GST_FLOW_IS_FATAL() 2010-09-04 14:52:09 +02:00
Sebastian Dröge
78eca34a6d flvdemux: Don't use GST_FLOW_IS_FATAL() 2010-09-04 14:52:09 +02:00
Sebastian Dröge
1ce0b2dfc7 avidemux: Don't use GST_FLOW_IS_FATAL()
And document why wrong-state doesn't need an error message.
2010-09-04 14:52:09 +02:00
Sebastian Dröge
77c7f5fdcd videomixer: Update disted ORC files 2010-09-04 14:52:09 +02:00
Sebastian Dröge
6da14d0c41 videomixer: Optimize ARGB blending and implement BGRA blending with orc
This now means, that we have absolutely no handwritten assembly anymore
in videomixer and it's also faster now when using SSE.
2010-09-04 14:52:09 +02:00
David Schleef
7cfa519547 videomixer: Add orc implementation for blending
videomixer: Add orc implementation for blending
2010-09-04 14:52:08 +02:00
David Schleef
1ace738c3a videomixer: Fix example pipelines
videomixer: Fix example pipelines
2010-09-04 14:52:08 +02:00
Sebastian Dröge
86403e85c5 imagefreeze: Fix another subtle race condition related to starting the srcpad task
Due to a seek the srcpad task could be started in rare circumstances although
it shouldn't be started anymore because no upstream buffer is available.
2010-09-04 14:52:08 +02:00
Sebastian Dröge
e51fe6c181 imagefreeze: Protect the flushing-seek variable by the srcpad's stream lock
This fixes a subtle race condition, that caused bufferalloc to fail
with wrong-state due to a seek but caused it to be not retried as
it should.
2010-09-04 14:52:08 +02:00
Sebastian Dröge
d8ef9bb691 imagefreeze: Always generate a perfectly timestamped stream
Before there could be rounding errors when calculating the duration,
resulting in timestamp + duration being smaller than the next buffer's
timestamp.
2010-09-04 14:52:07 +02:00
Sebastian Dröge
95f5b494fa wavparse: Post an error message if EOS happens before valid input is found
Fixes bug #627341.
2010-09-04 14:52:06 +02:00
Sebastian Dröge
44a5cb4313 avidemux: Send close newsegment event from the streaming thread 2010-09-04 14:52:06 +02:00
Sebastian Dröge
62dd7c4efd imagefreeze: Retry bufferalloc if it was aborted with WRONG_STATE because of a flushing seek 2010-09-04 14:52:05 +02:00
Sebastian Dröge
dffab828c6 imagefreeze: Return GST_FLOW_UNEXPECTED when getting a second buffer
This prevents upstream from pushing many useless buffers and makes
it go into EOS state.
2010-09-04 14:52:05 +02:00
Sebastian Dröge
134b1f0eee imagefreeze: Passthrough buffer allocations 2010-09-04 14:52:05 +02:00
Tim-Philipp Müller
b26897dd84 Release 0.10.25 2010-09-02 23:44:19 +01:00
David Schleef
4eee45debb deinterlace: use separate buffer metadata for fields
Call gst_buffer_make_metadata_writable() on buffers that are
duplicated into fields.  Fixes #627689.
2010-08-23 02:51:24 -07:00
Sebastian Dröge
9e981f6c2d 0.10.24.4 pre-release 2010-08-21 21:41:36 +02:00
Sebastian Dröge
90f273b165 imagefreeze: Send close segments when seeking only for non-flushing seeks and if we already sent a newsegment event
Fixes bug #626619.
2010-08-12 11:29:53 +02:00
Mark Nauwelaerts
8ea04c66b8 qtdemux: prevent reading past avc1 atom when parsing
... when one of the subatoms has a large/invalid size.

Fixes #626609.
2010-08-11 12:58:17 +02:00
Sebastian Dröge
19c8226c6d videomixer: Fix pipeline in the documentation
Make sure that we have the same color format on all streams, i.e. AYUV

Fixes bug #625452.
2010-08-06 19:24:56 +02:00
Sebastian Dröge
fc00857c82 videomixer: Move debug categories into the source files and add debug category for the blend functions 2010-08-04 19:43:08 +02:00
Wim Taymans
af70b300cc rtpmp4gpay: implement perfect timestamps
Use bitreader for parsing the config string
Reset state variables when going to READY
Parse frame length and use it to keep track of the rtptimestamps
2010-08-04 10:40:24 +02:00
Wim Taymans
29b32853d5 rtph263pdepay: allow more clock-rates as input
Although the spec says that the clock-rate should always be 90000, some rtsp
servers send different clock-rates so we must accept then in order to handle
those streams too.
2010-08-04 10:40:24 +02:00
Wim Taymans
d37c5e9021 L16depay: default to 1 channel
When we can't find any channel or encoding-params on the caps for dynamic
payload types, set the default number of channels to 1, as the spec says we
should.

See #623209
2010-08-04 10:40:24 +02:00
Wim Taymans
9dcfed0a5b rtspsrc: don't reuse udp sockets
Don't reuse sockets but make the udpsrc element fail the state change when the
socket is already in use. If we don't prevent reuse, we might end up using the same
port for different streams in some cases.

Fixes #622017
2010-08-04 10:40:23 +02:00
Wim Taymans
e739998adf udpsrc: add property to enable port reuse 2010-08-04 10:39:45 +02:00
Wim Taymans
ed80c1834c L16depay: use encoding-params for the channels
When parsing the number of channels, use the encoding-params property from the
RTP caps because that is where we can find the channels according to the spec.
Fall back to the channels property in the caps when needed.

Fixes #623209
2010-08-04 10:39:44 +02:00
Wim Taymans
e39d7f7359 rtspsrc: improve error and warning message
Improve error and warning message.

Fixes #622577
2010-08-04 10:39:44 +02:00
Mark Nauwelaerts
f1fe0e7157 rtpg729pay: avoid basertppayload perfect-rtptime mode
G729 packets may only occur intermittently (e.g. cn packets), and as such
do not allow for perfect-rtptime calculating rtp times based on frame or byte
count.  In particular, do not use rtp audio base payloader as base class, but
rather base payloader directly.
2010-08-02 13:05:05 +02:00
Mark Nauwelaerts
6405df0c50 rtph264pay: fix element leak 2010-08-02 13:04:41 +02:00
Mark Nauwelaerts
fadff26eec rtpmp4vdepay: fix buffer leak 2010-08-02 13:04:39 +02:00
Mark Nauwelaerts
99dd8fb921 avidemux: push mode; use proper movi offset for movi based index
Fixes #623357.
2010-07-29 17:19:22 +02:00
Thiago Santos
bef350bf34 qtdemux: Correctly parse mvhd atoms
Parse mvhd data according to its version to avoid failing
on valid files.
2010-07-29 10:00:15 -03:00
Thiago Santos
a15430a862 qtdemux: Fix the max/avg in btrt atom reading
According to ISO media base format, the max bitrate is the
first one, and the avg comes next.
2010-07-28 12:22:23 -03:00
Mark Nauwelaerts
8419df627b matroskademux: proper handling of streaming upstream without duration
Fixes #625371.
2010-07-28 14:45:25 +02:00
Tim-Philipp Müller
a0de5e8a4f matroskademux: initialize some variables to fix compiler warnings on OSX build bot 2010-07-26 18:33:09 +02:00
Arnaud Vrac
c6f47c34fb rtspsrc: add port-range property to rtspsrc
To support setups with firewall/ipsec, it is useful for an rtsp client to be
able to set the range of ports that can be used for rtp/rtcp reception.
Allows this by adding a "port-range" property to the rtspsrc element.

Fixes #625153
2010-07-26 17:47:35 +02:00
Andoni Morales Alastruey
e6d7e69844 qtdemux: set the pixel-aspect-ratio field also for par=1/1
https://bugzilla.gnome.org/show_bug.cgi?id=625302
2010-07-26 16:08:37 +02:00
Wim Taymans
8696d10a5b rtspsrc: fix memory leak in server request reply
The RTSP server rtspsrc is communicating with, sends a GET_PARAMETER request
periodically as a ping.  The code in gst_rtspsrc_handle_request forms an OK
response and sends, but doesn't call gst_rtsp_message_unset to free the memory
after sending the response.  This results in a constant slow memory leak.

Fixes #624770
2010-07-26 15:33:44 +02:00
Zaheer Abbas Merali
c00cd43e8b cpureport: remove bogus docs 2010-07-24 22:39:54 +01:00
Zaheer Abbas Merali
961ab6d4b2 debugutils: new element cpureport
cpureport posts bus messages after every buffer received of cpu used, system
clock time, buffer time
2010-07-24 22:37:11 +01:00
Mark Nauwelaerts
c626e90fda matroskademux: pull mode non-cue seeking
That is, in files that have no index (Cue), perform seek by scanning for
nearest cluster with timecode before requested position.  Scanning is done
as a combination of interpolation and sequential scan.

Fixes #617368.
2010-07-22 12:18:14 +02:00
Mark Nauwelaerts
4b76e95abe matroskamux: streamable files need no _finish
Fixes #624455.
2010-07-22 12:18:11 +02:00
Mark Nauwelaerts
f62c6ce5c8 avidemux: push mode; handle 0-size data chunks
Fixes #618535.
2010-07-22 11:46:51 +02:00
Sebastian Dröge
38124ef5e5 videomixer: Only reset QoS information and send a NEWSEGMENT event downstream for NEWSEGMENT events on the master pad 2010-07-21 10:23:30 +02:00
David Schleef
eb81574469 capsdebug: Add new element 2010-07-20 14:02:52 -07:00
Tim-Philipp Müller
819fb47b78 matroskamux: demote WARNING message to LOG level
It's not a warning.
2010-07-20 16:12:21 +01:00
Mark Nauwelaerts
fd959ca77f matroskademux: add missing argument in debug message 2010-07-16 18:05:21 +02:00
Mark Nauwelaerts
39268f10d3 matroskademux: remove bogus UNLOCK 2010-07-16 14:00:40 +02:00
Mark Nauwelaerts
65fdbe68ec qtdemux: also calculate PAR using track width and height for QT files
(... as opposed to only for ISO style files).

Fixes #624173.
2010-07-16 14:00:18 +02:00
Mark Nauwelaerts
16b57b49c9 matroskademux: handle bogus files storing ADTS AAC data 2010-07-16 13:59:22 +02:00
Mark Nauwelaerts
18f37ffc9a matroskademux: do not error out on a block with unknown tracknumber 2010-07-16 13:58:39 +02:00
Mark Nauwelaerts
bbded080e0 qtdemux: do not align reverse playback reference stream twice
Timestamp rounding issues could lead to going backwards 2 keyframe periods
(rather than only 1).  While this is not necessarily a problem, it might
potentially place additional (buffering) load on downstream and could be
avoided (because We Can).

Fixes #623629.
2010-07-16 13:58:34 +02:00
Mark Nauwelaerts
2a22e9d487 qtdemux: convert some more mov format timestamp to gst time 2010-07-16 13:58:21 +02:00
Mark Nauwelaerts
7955c01f19 avidemux: additional verification heuristics for VBR audio stream
Check for and override some header field(s) for reasonable values, according
to later expected use in calculations.
2010-07-16 13:58:12 +02:00
Alessandro Decina
d5a4da9a69 videobalance: Fix wrong lock order that could lead to a deadlock. Fixes #624331. 2010-07-16 12:45:35 +02:00
Arun Raghavan
8aed3176ce qtdemux: Fix order of bitrates in 'btrt' atom
There seems to be a bug in libmp4v2 that generates a MPEG4BitRateBox as
(bufferSizeDB, avgBitrate, maxBitrate) instead of (bufferSizeDB,
maxBitrate, avgBitrate), according to the spec. I used the mp4file
output while writing this code, so the order is wrong. This patches
fixes that.

https://bugzilla.gnome.org/show_bug.cgi?id=623654
2010-07-06 10:33:16 +01:00
Edward Hervey
fcf1995020 qtdemux: strip out bogus tags from XMP atom
https://bugzilla.gnome.org/show_bug.cgi?id=623366
2010-07-02 14:39:36 +02:00
Andrzej K. Haczewski
0b5172eb06 flvmux: Write duration at the correct position 2010-07-02 14:25:22 +02:00
Thijs Vermeir
244a35a226 rtpptdemux: fix memleak on custom downstream events
by not sending custom downstream event twice and fix memleak when
not handling the event

https://bugzilla.gnome.org/show_bug.cgi?id=623196
2010-06-30 12:39:09 +02:00
Tim-Philipp Müller
c66c3d354c wavparse: fix unportable printf format specifiers in commented out code
To avoid false positives when grepping for unportable specifiers.
2010-06-29 20:14:53 +01:00
Tim-Philipp Müller
cf8dddd5c7 goom: don't allocate 260kB struct on the stack
PluginInfo is quite a sizeable struct, let's not allocate it on the
stack, especially not if we're copying it over into another dynamically
allocated copy anyway.

Fixes #570761.
2010-06-28 14:59:25 +01:00
Tim-Philipp Müller
240dec038c gst: update orc files 2010-06-26 18:41:49 +01:00
Sebastian Dröge
8172c478aa matroskamux: Fix leaking of the streamheader buffers
gst_value_set_buffer() increases the refcount and doesn't
take ownership of the buffer.
2010-06-25 19:40:06 +02:00
Tim-Philipp Müller
19216e7218 matroska, videobox, videofilter: fix compiler warnings when debugging is disabled in gstreamer
Fixes unused variable warnings when GStreamer's debugging system has been disabled.
2010-06-24 16:34:03 +01:00
Michael Grzeschik
b26785d9f9 reset the have_index flag at transition PAUSED_TO_READY
If we restart the Stream in the case of doing a transition from
PAUSED_TO_READY and back with READY_TO_PAUSED aso. the duration of the video
will get calculated even if we have a avi header with that information.

Signed-off-by: Michael Grzeschik <m.grzeschik@pengutronix.de>
2010-06-23 21:40:50 +02:00
Sebastian Dröge
7e0ea232d0 videobox: Fix negotiation for I420/YV12
We don't support conversion into *all* YUV
formats for them, only into I420/YV12/AYUV.

Fixes bug #622501.
2010-06-23 20:30:11 +02:00
Mark Nauwelaerts
0a2d9a2269 wavparse: proper closing segment construction
Fixes #618982.
2010-06-22 15:37:46 +02:00
Wim Taymans
5534c7d91d rtspsrc: fix locking after moving things around 2010-06-18 20:04:08 +02:00
Wim Taymans
651c82a01f rtspsrc: make some errors as warnings
Avoid spamming the testsuite with these error debug lines.
2010-06-18 16:56:19 +02:00
Keith Nicholson
0773eed960 udpsrc: fix multicast support on windows builds
On windows builds, sets source address for bind to INADDR_ANY, while
maintaining the original multicast group address for subsequent join.

Fixes #595978
2010-06-18 16:49:08 +02:00
Wim Taymans
e25cdc31d3 udp: make url parsing compatible with VLC syntax
Skip everything before the @ sign in the url location. VLC uses that as the
remote address to connect to (but we ignore it for now). This makes our udp urls
compatible with the ones used by VLC.

Fixes #597695
2010-06-18 16:16:28 +02:00
Wim Taymans
966ced2208 rtspsrc: factor out the connections
Keep a global connection for aggregate control but also keep stream connections
for non-aggregate control.
Add some helper methods to connect/close/flush the connections.
2010-06-18 15:13:06 +02:00
Wim Taymans
ddc214d322 rtspsrc: add non-aggregate control
Add non-aggregate control.
Separate retrieving thr SDP from parsing and setting up the streaming from the
SDP.
2010-06-18 15:13:06 +02:00
Zaheer Abbas Merali
8269a028a0 flvmux: add documentation for streamable property 2010-06-17 17:24:22 +01:00
Sebastian Dröge
968ce701a7 matroskademux: Fix an uninitialized variable compiler warning 2010-06-17 10:44:33 +02:00
Sebastian Dröge
f44e5e630b ebml-read: Zero-sized ints/uints/floats have a value of 0 according to the EBML spec 2010-06-16 21:02:13 +02:00
Sebastian Dröge
e4a5f0911e matroskademux: Fix possible NULL pointer dereference and assertion that could be caused by invalid files 2010-06-16 20:02:58 +02:00
Sebastian Dröge
20b9022289 matroskademux: Clean up/fix some minor error handling bugs 2010-06-16 19:50:34 +02:00
Sebastian Dröge
711e0cc90b audioiirfilter: Fix possible NULL pointer dereference 2010-06-16 19:24:54 +02:00
Sebastian Dröge
1f545da974 warptv: Don't use floats as loop counters 2010-06-16 19:20:02 +02:00
Mark Nauwelaerts
a69e419c8e avidemux: improve audio vbr detection
Subsequent entry time calculations use blockalign value to determine
number of frames per chunk, and blockalign == 1 is then most unlikely to result
in reasonable values (which also aligns with "spec").
2010-06-16 15:53:47 +02:00
Mark Nauwelaerts
6a9c70486f rtph264depay: tweak DELTA_UNIT labeling
Consider SPS, PPS and IDR as keyframe, all others as DELTA_UNIT.

See #620154.
2010-06-16 15:53:45 +02:00
Sebastian Dröge
e49d8a286b avidemux: Assign variables before printing them 2010-06-15 20:04:35 +02:00
Sebastian Dröge
715eb33d24 wavparse: Initialize uninitialized variable 2010-06-15 20:00:28 +02:00
Edward Hervey
342543325b matroska: Fix unitialized variable 2010-06-15 17:20:20 +02:00
Wim Taymans
e6ec5cce2e rtspsrc: respect aggregate control attributes
when the SDP specifies an aggregate control url, use that for playback
control.

Fixes #619531
2010-06-14 19:24:14 +02:00
Sebastian Dröge
ff755250c3 goom: Call orc_init() before trying to get target flags 2010-06-14 15:38:02 +02:00
Sebastian Dröge
a11b271bf4 deinterlace: Call orc_init() before trying to get target flags 2010-06-14 15:38:02 +02:00
Zaheer Abbas Merali
e49c31fd25 matroskamux: revert change that set a reserved flag on the Block.
So matroska's Block structure has no keyframe flag, only the SimpleBlock has it.
To detect keyframes in Blocks, it is just the BlockGroup container that needs
to have a ReferenceBlock attached if it is a delta frame in video.
2010-06-14 14:28:53 +01:00
Mark Nauwelaerts
dde3825405 rtph264depay: also consider AU and SEI NALUs as DELTA_UNIT
Fixes #620154.
2010-06-14 11:49:42 +02:00
Stefan Kost
a1da36d5a6 build: include stdio.h for sscanf 2010-06-12 21:26:16 +03:00
Tim-Philipp Müller
97a2111c58 rtpmparobustdepay: don't try to unref NULL buffers
Fixes generic/states unit test.
2010-06-11 21:18:52 +01:00