Commit Graph

268 Commits

Author SHA1 Message Date
Zebediah Figura ee88009556 amstream: Reimplement IMemInputPin locally for the DirectDraw stream.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-04 17:11:45 +02:00
Zebediah Figura 2f9e6c0c72 amstream: Get rid of the DirectDrawMediaStreamImpl typedef.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-03 12:16:47 +02:00
Zebediah Figura 98c591b2ba amstream: Reimplement IPin::EnumMediaTypes() for the primary video stream.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-03 12:16:45 +02:00
Zebediah Figura 3537f73f21 amstream: Move audio and ddraw streams into separate files.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-03 12:16:40 +02:00
Zebediah Figura bfc668833e amstream/tests: Add more tests for media types.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-03 12:16:37 +02:00
Zebediah Figura be8111f627 amstream/tests: Add some tests for IEnumMediaTypes.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-02 20:41:47 +02:00
Zebediah Figura d15c23b30a amstream: Don't keep track of streams in the multimedia stream object.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-02 20:41:45 +02:00
Zebediah Figura 6d6ea5dc7d amstream: Forward IMultiMediaStream::GetMediaStream() to the stream filter.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-02 20:41:44 +02:00
Zebediah Figura 6c55e734bd amstream: Move multimedia_stream_create() to avoid forward declarations.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-02 20:41:42 +02:00
Zebediah Figura 0d7d1ba210 amstream: Use shorter method names for the multimedia stream.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-09-02 20:41:39 +02:00
Zebediah Figura 8af6ed6881 amstream: Get rid of the IAMMultiMediaStreamImpl typedef.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-30 21:24:26 +02:00
Zebediah Figura 0a7933a4eb amstream: Rename amstream.c to multimedia.c.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-30 21:24:26 +02:00
Zebediah Figura 0fe51e0fa6 amstream/tests: Link to strmiids and uuid.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-30 21:24:26 +02:00
Zebediah Figura 6412145657 amstream/tests: Add some tests for IAMMultiMediaStream::Initialize().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-30 21:24:26 +02:00
Zebediah Figura 6fc7582713 amstream/tests: Separate and expand tests for IAMMultiMediaStream::AddMediaStream().
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-30 21:24:26 +02:00
Zebediah Figura 3256484a14 amstream: Create the stream filter when the multimedia stream is created.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-29 20:08:14 +02:00
Zebediah Figura c8b94b6300 amstream: Use shorter names for IMediaStreamFilter methods.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-29 20:08:14 +02:00
Zebediah Figura bbd4641bc6 amstream: Get rid of the IMediaStreamFilterImpl typedef.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-29 20:08:14 +02:00
Zebediah Figura fb504baaa8 strmbase: Build with msvcrt.
Signed-off-by: Zebediah Figura <zfigura@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-08-05 18:49:31 +02:00
Alistair Leslie-Hughes 623085d550 amstream: Leave critical section on success (Coverity).
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair@hotmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-27 14:42:20 +02:00
Zebediah Figura 7ef5f3be5a amstream: Reimplement IBaseFilter methods in the media stream filter.
In the long (or even short) term we probably want to decouple amstream from
strmbase entirely. The fact that pins and filters belong to separate objects
(and either one can even be provided by the application) prevents us from
performing some helpful restructuring.

Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-17 09:21:15 +02:00
Zebediah Figura f423c6e707 amstream: Reimplement IMediaStreamFilter::EnumPins().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-17 09:21:09 +02:00
Zebediah Figura dad885e2b9 strmbase: Get rid of the "pfnGetPinCount" callback.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-14 10:29:15 +02:00
Zebediah Figura 9be7995448 strmbase: Get rid of the "pfnGetMediaTypeVersion" callback.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-10 16:04:25 +02:00
Zebediah Figura 7e6ab5e53c strmbase: Move "AttemptConnection" to the base source pin function table.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-05-10 15:54:15 +02:00
Zebediah Figura c5584f5ff1 amstream/tests: Add some tests for querying pin information.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-22 11:19:11 +02:00
Zebediah Figura a0d2325ac5 amstream/tests: Add some tests for IMediaStreamFilter::FindPin().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-22 11:19:09 +02:00
Zebediah Figura d4f99f4fbc amstream/tests: Add tests for IMediaStreamFilter::EnumPins().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-22 11:19:07 +02:00
Zebediah Figura aca1b2ea6e amstream/tests: Add some test for supported interfaces.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-22 11:19:04 +02:00
Zebediah Figura eec4a05e76 amstream: Reference the returned IMediaStream pointer in IAMMultiMediaStream::AddMediaStream().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-04-22 11:19:02 +02:00
Michael Stefaniuc 4749fa6767 amstream: Remove useless cast to self.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-02-12 23:02:28 +01:00
Alex Henrie 3f2a2c0591 amstream: Make constants 'filternameW' and 'sourceW' static.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Andrew Eikum <aeikum@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-11-30 19:36:49 +01:00
Józef Kucia 554e2641cc amstream: Handle stream object parameter for IDirectDrawMediaStream.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45382
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 10:16:02 +02:00
Michael Stefaniuc 8e9a05110e amstream: Use the ARRAY_SIZE() macro.
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-14 09:42:02 +02:00
Zebediah Figura fbbde62103 amstream: Use CBaseFilter::FindPin().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-06 19:44:27 +02:00
Marcus Meissner 19802c55bf amstream/tests: Use correct buffer size for StringFromGUID2.
Signed-off-by: Marcus Meissner <meissner@suse.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-07-04 20:11:48 +02:00
Zebediah Figura 10ff8f3082 strmbase: Implement QueryAccept() on top of CheckMediaType() for output pins too.
Signed-off-by: Zebediah Figura <z.figura12@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-05-04 11:01:40 +02:00
Francois Gouget 31deaa5baa amstream: Remove an unused NONAMELESSSTRUCT directive.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-04-26 21:19:35 +02:00
Anton Baskanov 2622690534 amstream: Use streams as pins in MediaStreamFilter.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-01 19:26:29 +01:00
Anton Baskanov 193e56ce2c amstream: Store streams as IAMMediaStream in MediaStreamFilter.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-01 19:26:27 +01:00
Anton Baskanov d7511089bf amstream: Implement AMAudioStream::JoinFilter.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-01 19:26:25 +01:00
Anton Baskanov 6030403151 amstream: Implement CheckMediaType for AMAudioStream based on code from mediastreamfilter.c.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-01 19:26:24 +01:00
Anton Baskanov 3f2b5ff298 amstream: Implement GetMediaType for AMAudioStream based on code from mediastreamfilter.c.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-01 19:26:22 +01:00
Anton Baskanov ee94f80cdf amstream: Add stub IPin and IMemInputPin to AMAudioStream.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-01 19:26:20 +01:00
Anton Baskanov 649a26e84d amstream: Implement AMDirectDrawStream::JoinFilter.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-01 19:26:18 +01:00
Anton Baskanov 5b03813d9d amstream: Implement CheckMediaType for AMDirectDrawStream based on code form mediastreamfilter.c.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-01 19:26:16 +01:00
Anton Baskanov 52c3c36d30 amstream: Implement GetMediaType for AMDirectDrawStream based on code from mediastreamfilter.c.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-01 19:26:15 +01:00
Anton Baskanov f7febb8277 amstream: Add stub IPin and IMemInputPin to AMDirectDrawStream.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-01 19:26:13 +01:00
Andrey Gusev 65989f2ace amstream: Return S_OK in IDirectDrawStreamSampleImpl_Update.
Signed-off-by: Andrey Gusev <andrey.goosev@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-02-15 19:35:28 +01:00
Józef Kucia e8e23114a2 amstream: Fix compilation on systems that don't support nameless unions.
Signed-off-by: Józef Kucia <jkucia@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-05-10 09:24:29 -05:00
Michael Stefaniuc 0e0cc67c5a amstream/tests: Use SetRectEmpty() instead of memset().
Signed-off-by: Michael Stefaniuc <mstefani@winehq.org>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-04-19 09:11:43 +02:00
Nikolay Sivov e5f01e5107 amstream: Remove some casts.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-09-01 20:47:47 +09:00
Anton Baskanov d283051b6b amstream: Implement AMAudioData::SetFormat.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-02 09:13:40 -05:00
Anton Baskanov fa542355e9 amstream: Implement AMAudioData::GetFormat.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-02 09:13:38 -05:00
Anton Baskanov 634deaf874 amstream: Implement AMAudioData::SetActual.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-02 09:13:36 -05:00
Anton Baskanov d4db4bfd72 amstream: Implement AMAudioData::SetBuffer.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-02 09:13:34 -05:00
Anton Baskanov 6010ebb22f amstream: Implement AMAudioData::GetInfo.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-02 09:13:31 -05:00
Anton Baskanov 4a0db15622 amstream: Fix AMAudioData::QueryInterface.
Signed-off-by: Anton Baskanov <baskanov@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-02 09:13:29 -05:00
Michael Stefaniuc 8185c9f024 amstream: Avoid using the LPUNKNOWN COM iface type.
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-07-18 19:31:32 +09:00
Michael Stefaniuc 0183cd17be amstream: Use SetRect() instead of open coding it.
Signed-off-by: Michael Stefaniuc <mstefani@redhat.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-06-22 00:59:00 +09:00
Nikolay Sivov b9357ecaad amstream/tests: Simplify refcount check.
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-17 11:49:38 +09:00
Michael Müller 9eaa372499 amstream: Implement IAudioMediaStream::GetMultiMediaStream.
Signed-off-by: Michael Müller <michael@fds-team.de>
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-04 01:03:31 +09:00
Michael Müller dc732ffa7f amstream: Implement IAMMediaStream::GetMultiMediaStream for audio.
Signed-off-by: Michael Müller <michael@fds-team.de>
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-04 01:03:31 +09:00
Michael Müller c88f4b85bc amstream: Implement IDirectDrawMediaStream::GetMultiMediaStream.
Signed-off-by: Michael Müller <michael@fds-team.de>
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-04 01:03:30 +09:00
Michael Müller 0dc09c032d amstream: Implement IAMMediaStream::GetMultiMediaStream for video.
Signed-off-by: Michael Müller <michael@fds-team.de>
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-04 01:03:30 +09:00
Sebastian Lackner 04c3a9bad2 amstream/tests: Add tests for GetMultiMediaStream methods.
Signed-off-by: Sebastian Lackner <sebastian@fds-team.de>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-05-04 01:03:30 +09:00
Nikolay Sivov b752d3d44b amstream/tests: Correct sizeof expression to actually get array size (PVS-Studio).
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-10-13 18:41:27 +09:00
Thomas Faller 2fb791b0eb amstream: Fix use of uninitialized memory. 2015-10-08 21:02:13 +09:00
Nikolay Sivov ed06707bac amstream: Create a surface if it wasn't provided in CreateSample(). 2015-06-24 15:28:50 +09:00
Nikolay Sivov 1470684539 amstream: Forward IUnknown methods to IAMMediaStream for streams. 2015-06-23 17:20:25 +09:00
Nikolay Sivov eb0b1d55e4 amstream: Implement GetDirectDraw(). 2015-06-23 17:20:23 +09:00
Nikolay Sivov 17283f9be5 amstream: Keep stream reference when creating sample. 2015-06-23 17:20:14 +09:00
Nikolay Sivov 139445eb49 amstream: Implement IDirectDrawStreamSample_GetSurface(). 2015-06-23 17:20:12 +09:00
Nikolay Sivov a7e2b99145 amstream: Release pins and streams array on instance release (Valgrind). 2015-06-22 15:32:13 +09:00
Nikolay Sivov 84c2fda63d amstream/tests: Get rid of global stream pointer that we don't really need. 2015-06-22 15:32:09 +09:00
Nikolay Sivov 5b24854680 amstream: Get rid of some casts by using proper iface types. 2015-06-22 15:32:04 +09:00
Michael Müller d720c43caf amstream: Correctly check return values in IAMMultiMediaStreamImpl_Initialize (Coverity). 2015-06-01 14:46:19 +09:00
Sebastian Lackner 2edc31d6c0 amstream: Do not allow unloading while library is still in use. 2015-03-02 13:53:03 +09:00
Thomas Faber cc45c1373c amstream: Destroy BaseFilter after MediaStreamFilterImpl child class. 2014-07-28 17:20:59 -05:00
Jacek Caban 289bdc4f45 strmbase: Store BasePinFuncTable inside Base*PinFuncTable structs. 2014-01-06 20:47:02 +01:00
Alexandre Julliard 99ef0d6ff0 makefiles: Get rid of the MAKE_TEST_RULES variable. 2014-01-02 12:13:16 +01:00
Alexandre Julliard 5e7416e5c8 makefiles: Get rid of the MAKE_DLL_RULES variable. 2014-01-02 12:08:18 +01:00
Alexandre Julliard d08ff3ff19 makefiles: Use a single variable for all types of idl files. 2013-12-31 18:15:17 +01:00
Piotr Caban 5c8339df4a strmbase: Add structure size parameter in BaseInputPin_Construct function. 2013-11-25 16:28:14 +01:00
Alexandre Julliard c7803b885b makefiles: Add makedep pragmas for registration idl files. 2013-11-05 20:38:18 +01:00
Alexandre Julliard f02cdd877f Remove empty DLL_PROCESS_DETACH case statements. 2013-04-15 16:45:35 +02:00
Michael Stefaniuc 76b910514e amstream: Remove ERR() on HeapAlloc failure for small sizes known at compile time. 2013-02-08 10:44:34 +01:00
Andrew Talbot 3a53ea3398 amstream: Avoid signed-unsigned integer comparisons. 2012-12-13 11:20:54 +01:00
Christian Costa eca0bc3565 amstream: Fix return value of BasePinImp_GetMediaType. 2012-11-27 20:54:53 +01:00
Christian Costa 56c0151f6d amstream: Initialize correctly AM_MEDIA_TYPE struct. 2012-11-23 18:06:03 +01:00
Christian Costa 7d128ea899 amstream: Specifying a stream object in params is not yet supported. 2012-10-16 20:45:19 +02:00
Christian Costa 7e82db784a amstream: Implement BasePinImp_GetMediaType in media stream filter. 2012-10-15 12:08:41 +02:00
Christian Costa 604fb218b7 amstream: Implement BasePinImpl_CheckMediaType in media stream filter. 2012-10-15 12:08:35 +02:00
Christian Costa 5d5da39ddc amstream: Cleanup MediaStreamFilterImpl_QueryInterface. 2012-10-15 12:08:23 +02:00
Christian Costa 568c88ccb9 amstream: Get rid of (IBaseFilter*) casts. 2012-10-15 12:08:08 +02:00
Christian Costa 01f07fe428 amstream: Render source file in IAMMultiMediaStreamImpl_OpenFile. 2012-10-12 12:11:56 +02:00
Christian Costa 7272256a60 amstream: Check filename pointer in IAMMultiMediaStreamImpl_OpenFile. 2012-10-12 12:11:48 +02:00
Christian Costa 9bdf981718 amstream: Display new ref in AddRef and Release. 2012-10-12 12:11:42 +02:00
Christian Costa e8c256b185 amstream: Add IAMMediaStream interface to AudioMediaStream object. 2012-09-24 09:59:16 +02:00
Christian Costa 6b73c61c63 amstream: Add IAMMediaStream interface to DirectDrawMediaStream object. 2012-09-24 09:58:42 +02:00