* Move PlatformThread to rtc::.
* Remove ::CreateThread factory method.
* Make non-scoped_ptr from a lot of invocations.
* Make Start/Stop void.
* Remove rtc::Thread priorities, which were unused and would collide.
* Add ::IsRunning() to PlatformThread.
BUG=
R=tommi@webrtc.org
Review URL: https://codereview.webrtc.org/1476453002 .
Cr-Commit-Position: refs/heads/master@{#10812}
Also removes all virtual methods. Permits using a thread from
rtc_base_approved (namely event tracing).
BUG=webrtc:5158
R=tommi@webrtc.org
Review URL: https://codereview.webrtc.org/1469013002
Cr-Commit-Position: refs/heads/master@{#10760}
We must remove dependency on Chromium, i.e. we can't use Chromium's base/logging.h. That means we need to define these macros in WebRTC also when doing Chromium builds. And this causes redefinition.
Alternative solutions:
* Check if we already have defined e.g. CHECK, and don't define them in that case. This makes us depend on include order in Chromium, which is not acceptable.
* Don't allow using the macros in WebRTC headers. Error prone since if someone adds it there by mistake it may compile fine, but later break if a header in added or order is changed in Chromium. That will be confusing and hard to enforce.
* Ensure that headers that are included by an embedder don't include our macros. This would require some heavy refactoring to be maintainable and enforcable.
* Changes in Chromium for this is obviously not an option.
BUG=chromium:468375
NOTRY=true
Review URL: https://codereview.webrtc.org/1335923002
Cr-Commit-Position: refs/heads/master@{#9964}
We must remove dependency on Chromium, i.e. we can't use Chromium's base/logging.h. That means we need to define these macros in WebRTC also when doing Chromium builds. And this causes redefinition.
* DISALLOW_ASSIGN -> RTC_DISALLOW_ASSIGN
* DISALLOW_COPY_AND_ASSIGN -> RTC_DISALLOW_COPY_AND_ASSIGN
* DISALLOW_IMPLICIT_CONSTRUCTORS -> RTC_DISALLOW_IMPLICIT_CONSTRUCTORS
Related CL: https://codereview.webrtc.org/1335923002/
BUG=chromium:468375
NOTRY=true
Review URL: https://codereview.webrtc.org/1345433002
Cr-Commit-Position: refs/heads/master@{#9953}
In #9243 we added some thread_checker. But it shouldn't be added into PlayoutDevices() and RecordingDevices(), since these two will be invoked from RecThread and PlayoutThread too, other than the main thread.
BUG=webrtc:4852
TEST=voe_cmd_test
R=henrika@webrtc.org
Review URL: https://codereview.webrtc.org/1249573002 .
Cr-Commit-Position: refs/heads/master@{#9605}
In my previous cl, https://webrtc-codereview.appspot.com/52479004/, there is 'UnLock()' left when we switched to scoped lock, which will cause TSan warning sometimes.
===========================================================
WARNING: ThreadSanitizer: unlock of an unlocked mutex (or by a wrong thread) (pid=9981)
#0 pthread_mutex_unlock <null> (libjingle_peerconnection_unittest+0x00000046836f)
#1 webrtc::CriticalSectionPosix::Leave() webrtc/system_wrappers/source/critical_section_posix.cc:39:10 (libjingle_peerconnection_unittest+0x000000bc368d)
#2 ~CriticalSectionScoped webrtc/system_wrappers/interface/critical_section_wrapper.h:46:48 (libjingle_peerconnection_unittest+0x000000a61fcb)
#3 webrtc::AudioDeviceLinuxPulse::RecThreadProcess() webrtc/modules/audio_device/linux/audio_device_pulse_linux.cc:3003 (libjingle_peerconnection_unittest+0x000000a61fcb)
===========================================================
BUG=3056
TEST=bots
R=tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/56439004
Cr-Commit-Position: refs/heads/master@{#9282}
BUG=3056, 1320
TEST=AutoTest
Mainly add threadchecker and remove unnecessary lock.
And some more styling working.
- audio_device_pulse_linux.cc: wrap lines longer than 80 chars. And add '.' to some comments around. Not do it to all places.
- audio_mixer_manager_pulse_linux.cc: Here I adopt some chromium practice. We use to do many things to the failure of pulse operation, which causes most of the data race issue. In chromium, if we failed to call any pulse function, we just fail it w/o use the previous results. Here I did same. Please check if it's good.
R=bjornv@webrtc.org, henrika@webrtc.org, tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/52479004
Cr-Commit-Position: refs/heads/master@{#9243}
The class doesn't do anything in almost all cases except for grabbing and releasing locks + allocate memory. There are a couple of methods there such as WaitForKey and GetTimeInMs that are used, but those methods aren't specific to audio and we have implementations of these elsewhere. The third method, StringCompare isn't used anywhere (and also isn't specific to audio).
BUG=
R=henrika@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/50009004
Cr-Commit-Position: refs/heads/master@{#9220}
Removes ThreadPosix::InitParams and a corresponding wait for an event.
This unblocks ThreadPosix::Start which had to wait for thread scheduling
for an event to trigger on the spawned thread, giving faster Start()
calls.
BUG=4413
R=tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/43699004
Cr-Commit-Position: refs/heads/master@{#8709}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8709 4adac7df-926f-26a2-2b94-8c16560cd09d
Clang version changed 223108:230914
Details: e144d30..6fdb142/tools/clang/scripts/update.sh
Removes the OVERRIDE macro defined in:
* webrtc/base/common.h
* webrtc/typedefs.h
The majority of the source changes were done by running this in src/:
perl -0pi -e "s/virtual\s([^({;]*(\([^({;]*\)[^({;]*))(OVERRIDE|override)/\1override/sg" `find {talk,webrtc} -name "*.h" -o -name "*.cc*" -o -name "*.mm*"`
which converted all:
virtual Foo() OVERRIDE
functions to:
Foo() override
Then I manually edited:
* talk/media/webrtc/fakewebrtccommon.h
* webrtc/test/fake_common.h
Remaining uses of OVERRIDE was fixed by search+replace.
Manual edits were done to fix virtual destructors that were
overriding inherited ones.
Finally a build error related to the pure virtual definitions of
Read, Write and Rewind in common_types.h required a bit of
refactoring in:
* webrtc/common_types.cc
* webrtc/common_types.h
* webrtc/system_wrappers/interface/file_wrapper.h
* webrtc/system_wrappers/source/file_impl.cc
This roll should make it possible for us to finally re-enable deadlock
detection for TSan on the buildbots.
BUG=4106
R=pbos@webrtc.org, tommi@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/41069004
Cr-Commit-Position: refs/heads/master@{#8596}
git-svn-id: http://webrtc.googlecode.com/svn/trunk@8596 4adac7df-926f-26a2-2b94-8c16560cd09d
Mainly to pick up https://codereview.chromium.org/619723006/
to fix our MSan bot.
Summary of changes (git diff c264a05..fc668e2 DEPS):
* third_party/boringssl 01fe820..c7dd5f30
* third_party/usrsctp/usrsctplib 8975bd5..d5685d4
* tools/swarming_client 79940aee..33d442a
Clang updated 216630:217949 (git diff c264a05..fc668e2 tools/clang/scripts/update.sh)
This caused TSan v2 to hit an assert in libjingle_peerconnection_unittest
and libjingle_media_unittest, which is why the dlclose call
had to be disabled for now (webrtc:3895).
BUG=3895
R=henrika@webrtc.org, pbos@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/28659004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7385 4adac7df-926f-26a2-2b94-8c16560cd09d
AddressSanitizer can't symbolize parts of the stack that contains
dlclose()d modules. This makes some LSan suppressions not kick in and
blocks launching the LSan bot for WebRTC.
This "fix" excludes dlclose() in
webrtc/modules/audio_device/linux/latebindingsymboltable_linux.cc which
resolves this on the bot.
R=xians@webrtc.org
BUG=3402,chromium:375154
Review URL: https://webrtc-codereview.appspot.com/25499004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@7157 4adac7df-926f-26a2-2b94-8c16560cd09d
a different thread.
One example is the _playWarning can be changed in AudioDeviceLinuxALSA::Init, which is called on the application's thread. At the same time it can be read via PlayoutWarning() on the VoE's process_thread.
RISK=P2
TESTED=try bots and tsan test:
tools/valgrind-webrtc/webrtc_tests.sh --tool=tsan -t out/Debug/libjingle_peerconnection_unittest --gtest_filter=PeerConnectionFactoryTestInternal.CreatePCUsingInternalModules
BUG=1205
R=xians@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/2315004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@4866 4adac7df-926f-26a2-2b94-8c16560cd09d
The addition of logging.h in r4729 was causing the win trybot to fail
with "#pragma deprecated" errors in standard library headers. This
turned out to be due to including strsafe.h (via audio_device_config.h)
before sstream (via logging.h).
strsafe.h was only being included for the unused DEBUG_PRINT macro. I
removed all references to it.
This incidentally removes a bunch of other unneeded headers discovered
while trying to track the problem down.
This didn't show up in the commitbots; my guess is that the trybots are
using the VC10 toolchain and the commitbots the VC11 toolchain.
TBR=pbos
Review URL: https://webrtc-codereview.appspot.com/2204004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@4738 4adac7df-926f-26a2-2b94-8c16560cd09d
We currently inform VoE that 44.1 kHz audio is 44 kHz. We now have arbitrary
resampling in VoE, allowing us to pass in the native 44.1 kHz.
Our ALSA interface always requires 48 kHz, allowing ALSA to handle resampling.
This also removes WEBRTC_PA_GTALK which was not defined anywhere.
BUG=webrtc:1395
TESTED=Using 44.1 for capture and render in loopback, ran through all codec channel/rate combinations. Quality is good. Testing AEC was difficult as I can't find a way to change the sample rate of an individual device in PulseAudio. Using a webcam at 32 kHz, other problems were the overriding contribution to quality degradation (delay issues, possible clock drift from the camera). At least I verified that the quality got no worse with this patch.
R=xians@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/1384004
git-svn-id: http://webrtc.googlecode.com/svn/trunk@3955 4adac7df-926f-26a2-2b94-8c16560cd09d
- Replace some deprecated calls/enums with their more modern equivalents.
- Clean up some usage of global data and/or hide it better
- Catch specific exceptions instead of Exception, and log the exception instead
of just its message.
- Random log message cleanups
- Added a build_with_libjingle gyp variable to mimic build_with_chromium for
when webrtc is built as part of a libjingle project but not part of chromium.
BUG=webrtc:1169
TEST=none
Review URL: https://webrtc-codereview.appspot.com/1105010
git-svn-id: http://webrtc.googlecode.com/svn/trunk@3554 4adac7df-926f-26a2-2b94-8c16560cd09d