Commit Graph

13604 Commits

Author SHA1 Message Date
44428a8aa6 iOS: Always build H264 HW encoder/decoder
This CL removes the use_objc_h264 flag. This means that the VideoToolbox
H264 encoder and decoder will always be built.

BUG=webrtc:4081
NOTRY=TRUE

Review-Url: https://codereview.webrtc.org/2366443003
Cr-Commit-Position: refs/heads/master@{#14372}
2016-09-23 14:01:44 +00:00
Per
512ecb3206 Let ViEEncoder tell VideoSendStream about reconfigurations.
This cl change so that all encoder configuration changes are reported to VideoSendStream through the ViEEncoder.
Also, the PayLoadRouter is changed to never stop sending on a an ssrc due to the encoder video frame size changes. Instead, the number of sending streams is only decided by the number of sending ssrc.

This cl is a preparation for moving encoder reconfiguration due to input video frame size changes from WebRtcVideoSendStream to ViEEncoder.

BUG=webrtc:5687, webrtc:6371
R=mflodman@webrtc.org

Review URL: https://codereview.webrtc.org/2338133003 .

Cr-Commit-Position: refs/heads/master@{#14371}
2016-09-23 13:52:20 +00:00
2a27b0a478 Delete unused class FakeScreenCapturerFactory.
Last use of the header file probably deleted in cl
https://codereview.webrtc.org/1903393004

BUG=None

Review-Url: https://codereview.webrtc.org/2353043003
Cr-Commit-Position: refs/heads/master@{#14370}
2016-09-23 11:42:49 +00:00
347ec5c72e Change thread check to race check. Also, add comment to explain implementation of RaceChecker.
BUG=webrtc:6345

Review-Url: https://codereview.webrtc.org/2350663002
Cr-Commit-Position: refs/heads/master@{#14369}
2016-09-23 11:21:55 +00:00
f1b08da5b4 Stopped using the NetEqDecoder enum internally in NetEq.
NetEqDecoder is still used in the external interfaces, but this change
opens up the ability to use SdpAudioFormats directly, once appropriate
interfaces have been added.

BUG=webrtc:5805

Review-Url: https://codereview.webrtc.org/2355503002
Cr-Commit-Position: refs/heads/master@{#14368}
2016-09-23 09:19:49 +00:00
1490f7aa55 Add histogram for end-to-end delay:
"WebRTC.Video.EndToEndDelayInMs"

Make capture time in local timebase available for decoded VP9 video frames (propagate ntp_time_ms from EncodedImage to decoded VideoFrame).

BUG=webrtc:6409

Review-Url: https://codereview.webrtc.org/1905563002
Cr-Commit-Position: refs/heads/master@{#14367}
2016-09-23 09:09:59 +00:00
6d4c8c307e Renaming a proto target in GYP for audio network adaptor.
It was incorrectly named for GYP in https://codereview.webrtc.org/2365723002
This makes the target name be the same for GN and GYP.

BUG=webrtc:6303
NOTRY=True

Review-Url: https://codereview.webrtc.org/2366883002
Cr-Commit-Position: refs/heads/master@{#14366}
2016-09-23 08:42:22 +00:00
e87d6734ea Return texture frame when dropping frames in CameraCapturer.
BUG=webrtc:6411,b/31686979

Review-Url: https://codereview.webrtc.org/2363043002
Cr-Commit-Position: refs/heads/master@{#14365}
2016-09-23 08:27:38 +00:00
b62dbbe985 GN: Change rtc_source_set targets --> rtc_static_library
This changes most non-test related rtc_source_set targets to be
rtc_static_library instead. Targets without any .cc files are excluded.
This should bring back the build behavior we used to have with GYP
(i.e. same symbols exported in the libjingle_peerconnection.a file, which
are used by some downstream projects).

After doing an Android build with these changes:
$ nm --defined-only -g -C out/Release/lib.unstripped/libjingle_peerconnection_so.so | grep -i createpeerconnectionf
00077c51 T Java_org_webrtc_PeerConnectionFactory_nativeCreatePeerConnectionFactory
$ nm --defined-only -g -C out/Release/obj/webrtc/api/libjingle_peerconnection.a | grep -i createpeerconnectionf
00000001 T webrtc::CreatePeerConnectionFactory(rtc::Thread*, rtc::Thread*, rtc::Thread*, webrtc::AudioDeviceModule*, cricket::WebRtcVideoEncoderFactory*, cricket::WebRtcVideoDecoderFactory*)
00000001 T webrtc::CreatePeerConnectionFactory()

See https://chromium.googlesource.com/chromium/src/+/master/tools/gn/docs/cookbook.md#Note-on-static-libraries
for more details on this.

NOTICE: This should be further cleaned up in the future, to reduce
binary bloat and unnecessary linking time. Right now it's more
important to restore the desired build output though.

BUG=webrtc:6410, chromium:630755

Review-Url: https://codereview.webrtc.org/2361623004
Cr-Commit-Position: refs/heads/master@{#14364}
2016-09-23 07:38:58 +00:00
25f6a39181 Relanding of "Adding debug dump to audio network adaptor."
The original CL was https://codereview.webrtc.org/2356763002

but got reverted https://codereview.webrtc.org/2362003002/.

The error was that ana_debug_dump_proto as a proto_library was placed under rtc_include_tests.

BUG=webrtc:6303

Review-Url: https://codereview.webrtc.org/2365723002
Cr-Commit-Position: refs/heads/master@{#14363}
2016-09-23 05:23:28 +00:00
161b3907ab Revert of Adding debug dump to audio network adaptor. (patchset #5 id:140001 of https://codereview.webrtc.org/2356763002/ )
Reason for revert:
Chromium bot fails

Original issue's description:
> Adding debug dump to audio network adaptor.
>
> BUG=webrtc:6303
>
> Committed: https://crrev.com/7e4f8928062afc8d571bb69f3223711701cbaad6
> Cr-Commit-Position: refs/heads/master@{#14361}

TBR=michaelt@webrtc.org,kwiberg@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6303

Review-Url: https://codereview.webrtc.org/2362003002
Cr-Commit-Position: refs/heads/master@{#14362}
2016-09-22 21:17:01 +00:00
7e4f892806 Adding debug dump to audio network adaptor.
BUG=webrtc:6303

Review-Url: https://codereview.webrtc.org/2356763002
Cr-Commit-Position: refs/heads/master@{#14361}
2016-09-22 20:39:18 +00:00
a78213e4d5 Add tools/determinism to setup_links.
BUG=chromium:583318
NOTRY=True

Review-Url: https://codereview.webrtc.org/2360853003
Cr-Commit-Position: refs/heads/master@{#14360}
2016-09-22 17:46:19 +00:00
893a7eeecb Support more QCOM specific color formats for Android HW decoder.
BUG=b/31483393

Review-Url: https://codereview.webrtc.org/2349843002
Cr-Commit-Position: refs/heads/master@{#14359}
2016-09-22 17:44:34 +00:00
87ef6f7501 Revert of Rename AppRTCDemo on Android and iOS to AppRTCMobile (patchset #2 id:20001 of https://codereview.webrtc.org/2343403002/ )
Reason for revert:
Breaks internal project.

Original issue's description:
> Rename AppRTCDemo on Android and iOS to AppRTCMobile
>
> The purpose is to make it clearer it is a mobile application.
>
> BUG=webrtc:6359
> NOPRESUBMIT=true
>
> Committed: https://crrev.com/d3af58bdab5b25acd62cd816363becc7003d3e5a
> Cr-Commit-Position: refs/heads/master@{#14356}

TBR=sakal@webrtc.org,kthelgason@webrtc.org,tommi@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6359

Review-Url: https://codereview.webrtc.org/2358133003
Cr-Commit-Position: refs/heads/master@{#14358}
2016-09-22 17:15:43 +00:00
3e02430587 Fix a stun attribute leak.
In https://cs.chromium.org/chromium/src/third_party/webrtc/p2p/base/stun.cc?rcl=1474384719&l=352,
if read returned false, the created attr would not be released.

BUG=chromium:648064
R=skvlad@webrtc.org

Review URL: https://codereview.webrtc.org/2357733002 .

Cr-Commit-Position: refs/heads/master@{#14357}
2016-09-22 16:52:30 +00:00
d3af58bdab Rename AppRTCDemo on Android and iOS to AppRTCMobile
The purpose is to make it clearer it is a mobile application.

BUG=webrtc:6359
NOPRESUBMIT=true

Review-Url: https://codereview.webrtc.org/2343403002
Cr-Commit-Position: refs/heads/master@{#14356}
2016-09-22 16:12:38 +00:00
051d151569 Adds audio session status to logs for each valid audio route change on iOS
BUG=b/30944297
NOTRY=TRUE

Review-Url: https://codereview.webrtc.org/2355393005
Cr-Commit-Position: refs/heads/master@{#14355}
2016-09-22 15:48:10 +00:00
c37e9835a7 Add custom info.plist to modules_unittests
This is to fix an issue introduced with iOS 10 where all applications that access the microphone have to include a string in the Info.plist file explaining why they need it.

BUG=webrtc:6403

Review-Url: https://codereview.webrtc.org/2359863003
Cr-Commit-Position: refs/heads/master@{#14354}
2016-09-22 15:00:57 +00:00
f292e31511 Relax too strict DCHECKs while parsing rtcp reports
BUG=chromium:649129

Review-Url: https://codereview.webrtc.org/2361493004
Cr-Commit-Position: refs/heads/master@{#14353}
2016-09-22 14:24:38 +00:00
aac9d6fb25 Added graph for plotting the audio level from an Rtc event log.
This uses the audio level values that are stored in the RTP header extension.

BUG=webrtc:4741

Review-Url: https://codereview.webrtc.org/2346363003
Cr-Commit-Position: refs/heads/master@{#14352}
2016-09-22 14:01:55 +00:00
d0ede4493e Adding FecController to audio network adaptor.
BUG=webrtc:6303

Review-Url: https://codereview.webrtc.org/2337103006
Cr-Commit-Position: refs/heads/master@{#14351}
2016-09-22 13:20:59 +00:00
1c6d3f7eae Add new Camera2Enumerator.isSupported with Context parameter.
The old method is marked deprecated and will be removed soon. The new
method checks if all cameras on the device support better than legacy
implementation of the camera2 API.

BUG=webrtc:6390

Review-Url: https://codereview.webrtc.org/2354883002
Cr-Commit-Position: refs/heads/master@{#14350}
2016-09-22 12:52:13 +00:00
09baefeaf9 GN: Remove non-existing header file: media/base/videorenderer.h
This header was removed in https://codereview.webrtc.org/1819103003
but the BUILD.gn file was not updated.

BUG=webrtc:5949
NOTRY=True
TBR=nisse@webrtc.org

Review-Url: https://codereview.webrtc.org/2359113002
Cr-Commit-Position: refs/heads/master@{#14349}
2016-09-22 11:51:57 +00:00
799a9d017a Revert of Remove unnecessary interface TelephoneEventHandler (patchset #3 id:40001 of https://codereview.webrtc.org/2357583002/ )
Reason for revert:
breaks downstream code

Original issue's description:
> Remove unnecessary interface TelephoneEventHandler.
>
> BUG=webrtc:2795
>
> Committed: https://crrev.com/2beb42983ca24e1326a9a7f2c06b3ad740eea2c3
> Cr-Commit-Position: refs/heads/master@{#14346}

TBR=henrik.lundin@webrtc.org,solenberg@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:2795

Review-Url: https://codereview.webrtc.org/2362673002
Cr-Commit-Position: refs/heads/master@{#14348}
2016-09-22 10:36:34 +00:00
a70695a3e1 Moved Opus-specific payload splitting into AudioDecoderOpus.
The biggest change to NetEq is the move from a primary flag, to a
Priority with two separate levels: one set by RED splitting and one
set by the codec itself. This allows us to unambigously prioritize
"fallback" packets from these two sources. I've chosen what I believe
is the sensible ordering: packets that the codec prioritizes are
chosen first, regardless of if they are secondary RED packets or
not. So if we were to use Opus w/ FEC in RED, we'd only do Opus FEC
decoding if there was no RED packet that could cover the time slot.

With this change, PayloadSplitter now only deals with RED
packets. Maybe it should be renamed RedPayloadSplitter?

BUG=webrtc:5805

Review-Url: https://codereview.webrtc.org/2342443005
Cr-Commit-Position: refs/heads/master@{#14347}
2016-09-22 09:07:03 +00:00
2beb42983c Remove unnecessary interface TelephoneEventHandler.
BUG=webrtc:2795

Review-Url: https://codereview.webrtc.org/2357583002
Cr-Commit-Position: refs/heads/master@{#14346}
2016-09-22 08:46:08 +00:00
6f5a6c3188 New class AdaptedVideoTrackSource.
BUG=webrtc:6353

Review-Url: https://codereview.webrtc.org/2328333002
Cr-Commit-Position: refs/heads/master@{#14345}
2016-09-22 08:26:06 +00:00
bc77ed7657 Adding reordering logic in audio network adaptor.
BUG=webrtc:6303

Review-Url: https://codereview.webrtc.org/2349113002
Cr-Commit-Position: refs/heads/master@{#14344}
2016-09-22 07:45:23 +00:00
4aec1d4437 Relanding of "Adding BitrateController to audio network adaptor."
Adding BitrateController to audio network adaptor was first landed in https://codereview.webrtc.org/2334613002/ but reverted in https://codereview.webrtc.org/2352223002/ due to ODR violation.

This CL tries to use namespace trick to solve the ODR problem.

BUG=webrtc:6303

Review-Url: https://codereview.webrtc.org/2353293002
Cr-Commit-Position: refs/heads/master@{#14343}
2016-09-22 06:01:34 +00:00
05bba2be48 Several minor changes to ScreenCapturerWinMagnifier
1. Remove legacy screen-saver-blocking logic
2. tls_index_ is not a good choice, we can use thread-static
3. ScreenCapturerHelper is not designed for this scenario
4. Disable this capturer on 2+ monitors system

BUG=638802

Review-Url: https://codereview.webrtc.org/2319383002
Cr-Commit-Position: refs/heads/master@{#14342}
2016-09-22 00:25:48 +00:00
66cadfc0e3 Several minor improvements of DirectX capturer
1. It looks like ComPtr cannot work well with vector::emplace_back, I got a
consistent crash on one of my machine, but not the other. Move constructor
should have no impact to lvalue reference, but I may be wrong here. The
impact here is ComPtr released before it should be. So a simple solution is to
use copy instead of reference. The D3dDevice is a collection of reference
counted pointers (Microsoft::WRL::ComPtr), there is almost no extra cost.

2. Actively set several fields in D3D11_TEXTURE2D_DESC to avoid potential break
if there are some platform changes later.

3. AcquireNextFrame returns both a DXGI_OUTDUPL_FRAME_INFO with
AccumulatedFrames and an IDXGIResource. But there is no comment in MSDN to
ensure IDXGIResource won't be nullptr if AccumulatedFrames > 0. Adding an extra
check in DxgiOutputDuplicator makes it a safer.

BUG=314516

Review-Url: https://codereview.webrtc.org/2345163002
Cr-Commit-Position: refs/heads/master@{#14341}
2016-09-22 00:19:15 +00:00
6f79d840ba Bug Fix: Mac Retina Screen Capture's Mouse Cursor Too Small
On retina display, when we do screen capture, the mouse cursor
looks too small. The reason is that we painted the cursor with
low resolution on to the frame directly.

This CL fixes the bug.

BUG=632995

Review-Url: https://codereview.webrtc.org/2350743003
Cr-Commit-Position: refs/heads/master@{#14340}
2016-09-21 23:45:03 +00:00
e35d329315 Adding FrameLengthController to audio network adaptor.
BUG=webrtc:6303

Review-Url: https://codereview.webrtc.org/2335163002
Cr-Commit-Position: refs/heads/master@{#14339}
2016-09-21 23:00:38 +00:00
0bb7f0594a Add BUG=None to autoroll CLs for chromium_revision in DEPS.
TBR=ehmaldonado@webrtc.org
BUG=None

Review URL: https://codereview.webrtc.org/2355383003 .

Cr-Commit-Position: refs/heads/master@{#14338}
2016-09-21 21:11:41 +00:00
acc39c44bc Use RgbaColor in DesktopFrameGenerator and add RgbaColorTest
This change uses RgbaColor in DesktopFrameGenerator instead of raw uint32_t to
avoid potential endian issues.

BUG=633802

Review-Url: https://codereview.webrtc.org/2334853002
Cr-Commit-Position: refs/heads/master@{#14337}
2016-09-21 19:23:22 +00:00
772bd0d40b Log supported camera preview resolutions.
BUG=b/29935437
R=sakal@webrtc.org

Review URL: https://codereview.webrtc.org/2356563002 .

Cr-Commit-Position: refs/heads/master@{#14336}
2016-09-21 19:17:15 +00:00
c4ccd4d61c AcmReceiver: Eliminate AcmReceiver::decoders_
BUG=webrtc:5801

Review-Url: https://codereview.webrtc.org/2351183002
Cr-Commit-Position: refs/heads/master@{#14335}
2016-09-21 17:55:21 +00:00
c5aea65b76 Adds output audio volume to iOS logs
BUG=b/30944297
NOTRY=TRUE

Review-Url: https://codereview.webrtc.org/2360583002
Cr-Commit-Position: refs/heads/master@{#14334}
2016-09-21 14:46:01 +00:00
28d5bc68c3 Fix deadlock issue in CameraCapturer.stopCapture.
BUG=webrtc:6404
NOTRY=True

Review-Url: https://codereview.webrtc.org/2357213002
Cr-Commit-Position: refs/heads/master@{#14333}
2016-09-21 14:44:55 +00:00
7640fcf6ed Android VideoSource: Add adaptOutputFormat function
The Java VideoSource class wraps the C++ AndroidVideoTrackSource.
AndroidVideoTrackSource is the object actually owning the VideoAdapter.
We currently control the VideoAdapter through the Java VideoCapturer,
but it is more natural and direct to control it through the Java
VideoSource class. This CL adds the necessary function to do this, and
the function in VideoCapturer is deprecated.

BUG=webrtc:6391
R=sakal@webrtc.org

Review URL: https://codereview.webrtc.org/2350933006 .

Cr-Commit-Position: refs/heads/master@{#14332}
2016-09-21 14:20:16 +00:00
e035e2d26f Set the event log in Channel from AudioSendStream. This will re-enable logging of outgoing audio packets.
BUG=webrtc:6195

Review-Url: https://codereview.webrtc.org/2226823003
Cr-Commit-Position: refs/heads/master@{#14331}
2016-09-21 13:51:52 +00:00
0cb8828bce Reland of lease camera statistics after switching camera on CameraCapturer. (patchset #1 id:1 of https://codereview.webrtc.org/2353163003/ )
Reason for revert:
Fix bugs causing the new code to fail.

Original issue's description:
> Revert of Release camera statistics after switching camera on CameraCapturer. (patchset #1 id:1 of https://codereview.webrtc.org/2353263002/ )
>
> Reason for revert:
> Breaks bots.
>
> Original issue's description:
> > Release camera statistics after switching camera on CameraCapturer.
> >
> > BUG=webrtc:6397
> > TBR=magjed@webrtc.org
> > NOTRY=True
> >
> > Committed: https://crrev.com/d5e9237b303e5fe253dc6530fbcf939921f4eaed
> > Cr-Commit-Position: refs/heads/master@{#14323}
>
> TBR=magjed@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=webrtc:6397
>
> Committed: https://crrev.com/ad5d65845f5c859d0564811a4eea68e1efdb8450
> Cr-Commit-Position: refs/heads/master@{#14324}

TBR=magjed@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6397

Review-Url: https://codereview.webrtc.org/2357893002
Cr-Commit-Position: refs/heads/master@{#14330}
2016-09-21 13:08:59 +00:00
7f40ba4414 Moved legacy_encoded_audio_frame into audio_decoder_interface.
audio_decoder.cc depends on LegacyEncodedAudioFrame and
LegacyEncodedAudioFrame depends on AudioDecoder::EncodedAudioFrame, so
there's no clear way to separate them as of now. This error is also
hodling up builds downstream. I expect we'll revisit these
dependencies as part of the upcoming larger restructuring effort.

NOTRY=true
BUG=webrtc:5805

Review-Url: https://codereview.webrtc.org/2359763002
Cr-Commit-Position: refs/heads/master@{#14329}
2016-09-21 12:50:45 +00:00
17802ae258 Ensures that ADM for Android and iOS uses identical states when stopping audio
BUG=b/25975010
TBR=tkchin
NOTRY=TRUE

Review-Url: https://codereview.webrtc.org/2349263004
Cr-Commit-Position: refs/heads/master@{#14328}
2016-09-21 11:55:10 +00:00
33b96b3588 Revert of Adding BitrateController to audio network adaptor. (patchset #7 id:140001 of https://codereview.webrtc.org/2334613002/ )
Reason for revert:
ODR violation

Original issue's description:
> Adding BitrateController to audio network adaptor.
>
> BUG=webrtc:6303
>
> Committed: https://crrev.com/26b039a137be0a8703766f45b546b29323de714f
> Cr-Commit-Position: refs/heads/master@{#14293}

TBR=michaelt@webrtc.org,henrik.lundin@webrtc.org,krasin@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6303

Review-Url: https://codereview.webrtc.org/2352223002
Cr-Commit-Position: refs/heads/master@{#14327}
2016-09-21 11:30:23 +00:00
27d8b61012 Ignores warning for SecRandomCopyBytes() using Xcode 8
BUG=webrtc:6396
NOTRY=TRUE
TBR=kjellander

Review-Url: https://codereview.webrtc.org/2356073004
Cr-Commit-Position: refs/heads/master@{#14326}
2016-09-21 11:13:07 +00:00
776870a259 Revert of Move MutableDataY{,U,V} methods to I420Buffer only. (patchset #14 id:260001 of https://codereview.webrtc.org/2278883002/ )
Reason for revert:
Broke downstream application.

Original issue's description:
> Move MutableDataY{,U,V} methods to I420Buffer only.
>
> Deleted from the VideoFrameBuffer base class.
>
> BUG=webrtc:5921
>
> Committed: https://crrev.com/5539ef6c03c273f39fadae41ace47fdc11ac6d60
> Cr-Commit-Position: refs/heads/master@{#14317}

TBR=perkj@webrtc.org,magjed@webrtc.org,pthatcher@webrtc.org,honghaiz@webrtc.org,stefan@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:5921

Review-Url: https://codereview.webrtc.org/2354223002
Cr-Commit-Position: refs/heads/master@{#14325}
2016-09-21 10:52:21 +00:00
ad5d65845f Revert of Release camera statistics after switching camera on CameraCapturer. (patchset #1 id:1 of https://codereview.webrtc.org/2353263002/ )
Reason for revert:
Breaks bots.

Original issue's description:
> Release camera statistics after switching camera on CameraCapturer.
>
> BUG=webrtc:6397
> TBR=magjed@webrtc.org
> NOTRY=True
>
> Committed: https://crrev.com/d5e9237b303e5fe253dc6530fbcf939921f4eaed
> Cr-Commit-Position: refs/heads/master@{#14323}

TBR=magjed@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=webrtc:6397

Review-Url: https://codereview.webrtc.org/2353163003
Cr-Commit-Position: refs/heads/master@{#14324}
2016-09-21 10:51:15 +00:00
d5e9237b30 Release camera statistics after switching camera on CameraCapturer.
BUG=webrtc:6397
TBR=magjed@webrtc.org
NOTRY=True

Review-Url: https://codereview.webrtc.org/2353263002
Cr-Commit-Position: refs/heads/master@{#14323}
2016-09-21 10:15:53 +00:00