8b94e3da0f
Fix issue where padding is sent before media with undefined timestamps if not abs-send-time is enabled.
...
This broke bandwidth estimation for calls without abs-send-time is enabled, but where RTX was.
BUG=
R=pbos@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/16929004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6719 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-17 16:10:14 +00:00
4065988108
Remove unused ExperimentalNS API in AudioProcessing
...
R=andrew@webrtc.org , kwiberg@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/12909004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6718 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-17 11:32:09 +00:00
2b6bc8d84f
AudioBuffer: Eliminate the SplitChannelBuffer class
...
It's just a container for two IFChannelBuffers, and doesn't earn its
keep. The main problem is that the number of methods it needs that
just forward calls to either of its two IFChannelBuffers was already
large, and was about to grow.
R=aluebs@webrtc.org , minyue@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/16919004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6717 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-17 09:46:37 +00:00
2561d52460
Simplify AudioBuffer::mixed_low_pass_data API
...
R=andrew@webrtc.org , kwiberg@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/21869004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6715 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-17 08:27:39 +00:00
af93fc08a1
AudioBuffer: Let ChannelBuffer handle bounds checking of channel parameter
...
R=aluebs@webrtc.org , minyue@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/13019004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6714 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-17 08:18:33 +00:00
2ade42bd96
Add unit test for MediaFile WAV file writing
...
R=aluebs@webrtc.org , andrew@webrtc.org , minyue@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/16029004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6713 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-17 08:11:32 +00:00
4a472fb18d
Fixes up rtc so that it compiles on iOS 8 SDK.
...
Adds support for UIInterfaceOrientationUnknown (new with in SDK) and makes it the same as
UIInterfaceOrientationPortrait.
R=noahric@google.com , tkchin@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/13029004
Patch from David Maclachlan <dmaclach@chromium.org >.
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6712 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-17 00:21:59 +00:00
c56ae63ea6
r6709 lacks a change in BUILD.gn
...
BUG=
R=marpan@google.com , marpan@webrtc.org , pbos@webrtc.org , wu@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/21919004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6710 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-16 22:18:49 +00:00
74aaf29a0f
Raw packet loss rate reported by RTP_RTCP module may vary too drastically over time. This CL is to add a filter to the value in VoE before lending it to audio coding module.
...
The filter is an exponential filter borrowed from video coding module.
The method is written in a new class called PacketLossProtector (not sure if the name is nice), which can be used in the future for more sophisticated logic.
BUG=
R=henrika@webrtc.org , stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/20809004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6709 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-16 21:28:26 +00:00
2e3c97ddf5
Compile-time guard for iOS7 specific property.
...
BUG=3487
R=glaznev@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/17969004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6706 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-16 19:59:05 +00:00
63c60ed224
Remove old padding path in RTPSender.
...
Removing RTPSender::SendPaddingAccordingToBitrate() as well as a couple
of arguments from SendPadData().
BUG=
R=stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/14989004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6703 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-16 09:37:29 +00:00
e8ea33ccb1
nrsh1 is written before tmp321 is read, so needs to be earlyclobber
...
Otherwise, the compiler is allowed to put them in the same register
under the assumption that all inputs are read before any
(non-earlyclobber) output is written, which in this case would result
in nrsh2 being corrupted.
BUG=3439
R=aluebs@webrtc.org , ljubomir.papuga@gmail.com
Review URL: https://webrtc-codereview.appspot.com/16089004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6700 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-16 08:26:48 +00:00
bac5f0fb56
Fix an invalid memory access due to typo in win/cursor.cc.
...
BUG=crbug/391468
R=sergeyu@chromium.org
Review URL: https://webrtc-codereview.appspot.com/19949004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6698 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-15 20:32:03 +00:00
122caa51b1
After an audio interruption the audio unit no longer invokes its render callback, which results in a loss of audio. Restarting the audio unit post interruption fixes the issue.
...
CL also replaces deprecated AudioSession calls with equivalent AVAudioSession ones.
BUG=3487
R=glaznev@webrtc.org , noahric@chromium.org
Review URL: https://webrtc-codereview.appspot.com/21769004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6697 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-15 20:20:47 +00:00
89fd1e8e99
Improvements to the pacer where it lost some budget due to truncation errors.
...
With this CL the resolution is increased to microseconds and proper rounding
is done in the Process() function. This means that we will be allowed to send
more than prior to r6664 as we previously truncated away parts of our budget.
We will also not lose budget due to inaccurate calculations in
TimeUntilNextProcess(), which was a regression in r6664.
BUG=cr/393950
TEST=out/Debug/webrtc_perf_tests --gtest_filter=RampUpTest.Simulcast
R=pbos@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/20949004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6694 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-15 16:40:38 +00:00
376b4ea93f
Fix breakage introduced by r6691.
...
ModuleRtpRtcpImpl returned incorrectly on RemoteNTP as the
RTCPReceiver::NTP changed return type.
BUG=
TBR=stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/18799004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6693 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-15 15:51:33 +00:00
2f4b14e3f3
Make RTCP sender report send media bytes.
...
r6654 changed RtpSender::Bytes() to return the number of bytes sent
instead of number of media bytes. This is used by VideoEngine for stats.
This change broke RTCP which sends this same count as the number of
payload bytes sent (excluding headers and padding).
BUG=
R=stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/14959004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6691 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-15 15:25:39 +00:00
bc73871251
Remove the VPM denoiser.
...
The VPM denoiser give bad results, is slow and has not been used in
practice. Instead we use the VP8 denoiser. Testing this denoiser takes
up a lot of runtime on linux_memcheck (about 4 minutes) which we can do
without.
BUG=
R=stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/16069004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6688 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-15 09:50:40 +00:00
a4da771914
Fix deadlock in Android stopCapture() call.
...
BUG=3467
R=braveyao@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/18789004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6673 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-14 17:01:53 +00:00
9bef551ba1
GN: Fix include paths for WebRTC in Chromium build.
...
Most WebRTC source files are using full paths for includes which
requires the root to be in the include path.
This is currently handled in the common_inherited_config config in
webrtc/BUILD.gn: the .. include_dir.
However, when built from Chromium, the include
paths are not inherited in the same way when building the all target.
Building the 'webrtc' target of Chrome works without the changes
in this CL, but the default target fails.
BUG=3441
TEST=Built the default target from a Chromium checkout with
https://codereview.chromium.org/321313006/ applied and
src/third_party/webrtc linked to the webrtc folder of the WebRTC
workspace.
R=brettw@chromium.org
Review URL: https://webrtc-codereview.appspot.com/15989004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6670 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-13 09:02:54 +00:00
9e1acc8728
Fix bugs introduced by https://code.google.com/p/webrtc/source/detail?r=6667 .
...
A few places were relying on temporalIdx being signed. Fix to explicitly check
for kNoTemporalIdx.
TBR=pbos,stefan
Review URL: https://webrtc-codereview.appspot.com/13939005
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6669 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-11 20:33:39 +00:00
dd6780d85d
Remove always-true expression.
...
TBR=pbos
Review URL: https://webrtc-codereview.appspot.com/16059004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6668 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-11 19:34:54 +00:00
eec6ecdb1e
Landing pkasting's webrtc fixes for MSVC level 4 warnings in WebRTC.
...
---
Fixes for re-enabling more MSVC level 4 warnings: webrtc/ edition
This contains fixes for the following sorts of issues:
* Possibly-uninitialized local variable
* Signedness mismatch
* Assignment inside conditional
This also contains a small number of other cleanups to nearby code. In
particular several warning-disables for MSVC are removed because they don't seem
to be necessary (either that warning is not enabled or the code does not trigger
it).
BUG=crbug.com/81439
TEST=none
R=henrika@webrtc.org , pkasting@chromium.org
Review URL: https://webrtc-codereview.appspot.com/18769004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6667 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-11 19:09:59 +00:00
180e516bef
Thread annotate RTCPSender.
...
Also fixes data races in RTCPSender::SetCSRCStatus() and
RTCPSender::SetStartTimestamp().
BUG=
R=tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/20919004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6666 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-11 15:36:26 +00:00
168f23faa5
Move pacer to fully use webrtc::Clock instead of webrtc::TickTime.
...
This required rewriting the send-side delay stats api to be callback based, as otherwise the SuspendBelowMinBitrate test started flaking much more frequently since it had lock order inversion problems.
R=pbos@webrtc.org , tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/21869005
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6664 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-11 13:44:02 +00:00
fb2e7c22a0
Document that channels are stored contiguously in AudioBuffer
...
R=andrew@webrtc.org , kwiberg@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/20909004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6661 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-11 11:40:48 +00:00
d212ffcfc6
Remove unnecessary build message.
...
R=henrika@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/13909004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6660 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-11 11:15:35 +00:00
4ef438e2de
Remove the send-side cname getter APIs from voice and video engine.
...
These APIs aren't being used, and introduces deadlocks when using GetStats() in the new Call api. Having getters for cname at the send-side is pointless, as it's always the user who sets the cname.
R=henrika@webrtc.org , pbos@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/16899004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6659 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-11 09:55:30 +00:00
72491b9a90
Count total bytes sent in RTPSender::Bytes().
...
Previously only media bytes were included, this adds header bytes and
padding bytes to the calculation.
BUG=
R=stefan@webrtc.org , tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/19939004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6654 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-10 16:24:54 +00:00
0422100818
Fix data race in VCMTiming::ResetDecodeTime.
...
Also thread annotating class.
BUG=
R=stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/17939004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6653 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-10 15:25:37 +00:00
8f1512140e
Refactor registerable callbacks for FrameCountObserver from rtp_rtcp module into vie_channel.
...
R=stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/16839004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6649 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-10 09:39:23 +00:00
5bde66e913
audio_processing: Updates aec_core_sse2.c with changes made to aec_common.h
...
The change of definitions moved to aec_common.h was done in CL17839005.
BUG=3131
TBR=kwiberg@webrtc.org
TESTED=builds locally
Review URL: https://webrtc-codereview.appspot.com/16859004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6648 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-10 08:09:50 +00:00
555fc78f27
Neon version of SubbandCoherence()
...
The performance gain on a Nexus 7 reported by audioproc is ~1.4%
The output is NOT bit exact. Any difference seen is +-1.
BUG=3131
R=bjornv@webrtc.org , cd@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/17839005
Patch from Scott LaVarnway <slavarnw@gmail.com >.
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6647 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-10 08:03:11 +00:00
ac800c8004
Neon version of rftbsub_128()
...
The performance gain on a Nexus 7 reported by audioproc is ~4.5%
The output is bit exact.
BUG=3131
TESTED=trybots and manually
R=bjornv@webrtc.org , cd@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/19919005
Patch from Scott LaVarnway <slavarnw@gmail.com >.
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6646 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-10 07:53:13 +00:00
5ac876bae0
Revert "Remove remains of WEBRTC_NO_STL." (rev 6641).
...
Reason breaks linux_memcheck.
TBR=stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/16869004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6645 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-10 07:41:59 +00:00
47d1c98a4e
Remove remains of WEBRTC_NO_STL.
...
R=stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/14899004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6641 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-09 20:18:28 +00:00
10ef8fe611
Create FullScreenChromeWindowDetector in DesktopConfigurationOptions::CreateDefault.
...
BUG=crbug/385294
R=sergeyu@chromium.org
Review URL: https://webrtc-codereview.appspot.com/18759004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6640 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-09 19:41:32 +00:00
b753762ce6
delay_estimator: Increases test coverage and makes input spectrum const
...
Noticed lack in tests verifying initial state is not left if we have zero input spectra. This CL adds such a test and change input spectra to const at affected places.
BUG=N/A
TESTED=trybots and manually
R=kwiberg@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/15969004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6631 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-09 06:40:09 +00:00
12b4efefdd
Implement a work around for Chrome full-screen tab switch on Mac.
...
Chrome creates a new window in full-screen and minimizes the old window when a tab is switched to full-screen.
We try to find the new window to continue capturing for window sharing.
BUG=crbug/385294
R=sergeyu@chromium.org
Review URL: https://webrtc-codereview.appspot.com/19839004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6629 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-08 22:05:24 +00:00
e55641d4f7
Neon version of rftfsub_128()
...
The performance gain on a Nexus 7 reported by audioproc is ~3.3%
The output is bit exact.
BUG=3131
TESTED=trybots and manually on N7
R=bjornv@webrtc.org , cd@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/14819004
Patch from Scott LaVarnway <slavarnw@gmail.com >.
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6628 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-08 21:12:23 +00:00
d11bec40b2
Refactor registerable callbacks for VideoBitrateObserver from rtp_rtcp module into vie_channel.
...
R=stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/20879004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6626 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-08 14:32:58 +00:00
62bafae661
Some refactoring inside rtp_rtcp/.
...
Renaming ModuleRTPUtility -> RtpUtility.
Renaming RTPHeaderParser -> RtpHeaderParser.
Making RtpHeaderParser accept size_t instead of int for packet length.
Making RtpUtility::RtpHeaderParser accept size_t for packet length.
BUG=
R=stefan@webrtc.org , tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/19899004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6623 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-08 12:10:51 +00:00
241a9b0b65
Fixing compile error.
...
Made a mistake in https://webrtc-codereview.appspot.com/13849004/ ,
fixing that here.
TBR=henrika@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/13859004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6622 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-08 11:48:37 +00:00
22292df53b
Adding explicit check for using dummy file devices.
...
Calling into the file device factory without being compiled with file
devices makes no sense and would cause hard-to-debug errors. Therefore
I'm adding an explicit check so this isn't allowed.
R=henrika@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/13849004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6621 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-08 11:39:19 +00:00
2bb1bdab8d
Preserve RTP states for restarted VideoSendStreams.
...
A restarted VideoSendStream would previously be completely reset,
causing gaps in sequence numbers and potentially RTP timestamps as well.
This broke SRTP which requires fairly sequential sequence numbers.
Presumably, were this sent without SRTP, we'd still have problems on the
receiving end as the corresponding receiver is unaware of this reset.
Also adding annotation to RTPSender and addressing some unlocked
access to ssrc_, ssrc_rtx_ and rtx_.
BUG=
R=mflodman@webrtc.org , stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/20819004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6612 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-07 13:06:48 +00:00
73823cafa4
Add initial gn build files for video_coding and video_processing.
...
BUG=
R=kjellander@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/19819004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6611 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-07 11:46:43 +00:00
03c817e405
Fix pacer to accept duplicate sequence numbers on different SSRCs.
...
BUG=3550
R=stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/17889004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6610 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-07 10:20:35 +00:00
7832648824
Add missing break introduced in r6603.
...
R=pbos@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/16009004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6607 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-04 17:04:00 +00:00
bee164a214
Fix test issues and a win compile error introduced with r6605.
...
Also changes the name of a variable which has been hijacked by windef.h (included by windows.h), which forces #define near and #define far upon us. This issue was introduced via the following inclusion chain:
bwe_test_framework_unittest.cc includes
paced_sender.h
tick_util.h
windows.h
windef.h
And causes EXPECT_NEAR(foo, bar, near); to expand to EXPECT_NEAR(foo, bar,); generating a very confusing compile error.
R=pbos@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/20849004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6606 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-04 17:00:06 +00:00
875ad49dee
Revert conversion from TickTime to int64_t in paced sender.
...
Introduced with r6600, causing flakes in SuspendBelowMinBitrate. The reason for this flake is currently unknown.
R=pbos@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/17879004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6605 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-04 15:27:55 +00:00