Commit Graph

24 Commits

Author SHA1 Message Date
c2d75e0708 PeerConnection(java): account for thread shutdown vagaries.
Android's JVM requires threads to detach before they exit, but ONLY if
they needed to AttachCurrentThread.  Conversly, threads that were
attached by the JVM (e.g. the result of making a native call from Java)
must NOT be detached by the application.  This is bug 2441.

The fix for the above is to only pthread_setspecific() for threads that
Attach(), not for already-attached threads.  To ensure that we only
detach Attached threads, added a GetEnv() call to ThreadDestructor(),
which revealed that Oracle's JVM can overly-eagerly clear TLS accounting
data, effectively detaching threads without their consent at shutdown.
Work around this with a specific check.

To guard against (some) regression, added a variant of PeerConnectionTest
that runs on a non-main thread.  This revealed a bug in LinuxDeviceManager
which implicitly assumes its talk_base::Thread has already been
initialized.  Fixed that here too.

BUG=2441
R=henrike@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/8759004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5567 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-02-18 16:57:36 +00:00
3eda643a91 PeerConnection(java): added MediaConstraints support to AudioSource, now fed to AudioTrack.
BUG=2912
R=wu@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/8509004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5540 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-02-13 04:01:04 +00:00
540acde5b3 PeerConnection(java): use MediaCodec for HW-accelerated video encode where available.
Still disabled by default until https://code.google.com/p/webrtc/issues/detail?id=2899 is resolved.

Also (because I needed them during development):
- make AppRTCDemo "debuggable" for extra JNI checks
- honor audio constraints served by apprtc.appspot.com
- don't "restart" video when it hasn't been stopped (affects running with the
  screen off)

BUG=2575
R=noahric@google.com

Review URL: https://webrtc-codereview.appspot.com/8269004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5539 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-02-13 03:56:14 +00:00
a06ebab1e1 PeerConnectionTest(java): test SCTP DataChannels.
BUG=1408,2253,2626
R=jiayl@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/7929004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5477 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-02-03 19:11:29 +00:00
d7568a08c3 PeerConnection(java): Add OnRenegotiationNeeded support
Also:
- Make PeerConnectionObserver::OnRenegotiationNeeded() pure virtual to avoid
  this sort of mistake in the future.
- Sprinkle @Override annotations on some callback definitions that were missing
  them.
- Fix a JNI method-signature-lookup typo (s/(V)V/()V/) in PCOJava::OnError()
- Add an explicit ScopedLocalFrameRef to PCOJava::OnError() to match all other
  C++-fired callbacks, for consistency.

BUG=2771
R=wu@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/6829004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5376 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-01-13 22:04:12 +00:00
4177615e87 PeerConnection(java): replace ScopedLocalRef with ScopedLocalRefFrame and fix a local reference leak in OnMessage.
Hopefully the approach of pushing/popping frames will be easier to avoid messing up than remembering to annotate every single local reference with a ScopedLocalRef.

BUG=2761
R=wu@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/6729004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5355 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-01-09 00:31:17 +00:00
f41f06b916 PeerConnection(java): rationalize pointer-to-jlong conversion.
In r4665 I went a bit crazy with the manual reinterpretation of a pointer to a
jlong (to avoid undefined behavior) but that's what reinterpret_cast<> is for.
So use it directly now.
Added a do-nothing DataChannel to AppRTCDemo to regression test this, since the
only repro I've found of the original bug requires ARM ABI (PeerConnectionTest
on ia32 fails to repro).

BUG=2302
R=henrike@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/5489004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5269 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-12-11 21:07:18 +00:00
eb7def234e Fix compilation errors on Fedora 20.
peerconnection_jni.cc: syscall() comes from <unistd.h>
RTPtimeshift.cc: char* being compared to 0 instead of the atoi() of it
rtp_payload_registry_unittest.cc: avoid narrowing int to uint32.

BUG=2700
R=andrew@webrtc.org, fischman@webrtc.org, henrik.lundin@webrtc.org, henrike@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/5019004

Patch from Victor Costan <costan@gmail.com>.

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5248 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-12-09 21:34:30 +00:00
31628aae7e Upgrade scoped_ptr to Chromium's latest version.
Analogous to the recent libjingle change: http://cl/54929753-p10.
This supports scoped_ptr<T[]> and scoped_ptr<C, FreeDeleter> rather
than scoped_array and scoped_ptr_malloc respectively.

- Add Chromium's template-based COMPILE_ASSERT. We didn't have this
previously in order to support the macro in C. Instead, move the
existing macro to compile_assert_c.h.
- Additionally copy the move.h and template_util.h depedencies and add
the WARN_UNUSED_RESULT macro.
- Leave scoped_array and scoped_ptr_malloc for now, but mark as
deprecated.
- Remove scoped_ptr foo(NULL) use. The default constructor handles it.
- Remove the now redundant COMPILE_ASSERT from peerconnection_jni.cc.
- Add a CHECK_ARRAY_SIZE macro to rtp_format_vp8_unittest.cc to remove
some repeated code.

TESTED=trybots
R=pbos@webrtc.org, tommi@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/2449005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5015 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-22 12:50:00 +00:00
a7266ca134 Fix clang build break
TBR=henrike@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/2350004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4917 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-03 19:04:18 +00:00
4e65e07e41 VideoCaptureAndroid: rewrote the (standalone) implementation of video capture on Android.
Besides being ~40% the size of the previous implementation, this makes it so
that VideoCaptureAndroid can stop and restart capture, which is necessary to
support onPause/onResume reasonably on Android.

BUG=1407
R=henrike@webrtc.org, wu@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/2334004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4915 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-03 18:23:13 +00:00
7e4d0df8ee PeerConnection(Android): enable tracing to logcat.
BUG=1295
R=henrike@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/2258007

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4888 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-10-01 02:40:43 +00:00
9080518a39 Restore severity precondition to logging.h.
I mistakenly ommitted the checks when logging.h was ported from
libjingle to webrtc. This caused a significant CPU cost for logs which
were later filtered out anyway.

Verified with LS_VERBOSE logging in neteq4, running:
$ out/Release/modules_unittests \
--gtest_filter=NetEqDecodingTest.TestBitExactness \
--gtest_repeat=50 > time.txt
$ grep "case ran" time.txt | grep "[0-9]* ms" -o | sort

Results on a MacBook Retina, averaged over 5 runs:
Verbose logs disabled:                          666 ms
Exisiting implementation, verbose logs enabled: 944 ms (1.42x)
New implementation, verbose logs enabled:       673 ms (1.01x)

BUG=2314
R=henrik.lundin@webrtc.org, henrike@webrtc.org, kjellander@webrtc.org, turaj@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/2160005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4682 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-05 16:40:43 +00:00
8788167b9b PeerConnection Java: explicitly cast DataChannel* to jlong for Java.
Otherwise on 32-bit ARM Android the nativeDataChannel param the Java ctor sees
is a 64-bit value whose low 32 bits are the pointer, and whose high 32-bits are
garbage.

BUG=2302
R=wu@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/2114004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4665 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-09-03 18:58:12 +00:00
32001ef124 PeerConnection shutdown-time fixes
- TCPPort::~TCPPort() was leaking incoming_ sockets; now they are deleted.
- PeerConnection::RemoveStream() now removes streams even if the
  PeerConnection::IsClosed().  Previously such streams would never get removed.
- Gave MediaStreamTrackInterface a virtual destructor to ensure deletes on base
  pointers are dispatched virtually.
- VideoTrack.dispose() delegates to super.dispose() (instead of leaking)
- PeerConnection.dispose() now removes streams before disposing of them.
- MediaStream.dispose() now removes tracks before disposing of them.
- VideoCapturer.dispose() only unowned VideoCapturers (mirroring C++ API)
- AppRTCDemo.disconnectAndExit() now correctly .dispose()s its
  VideoSource and PeerConnectionFactory.
- CHECK that Release()d objects are deleted when expected to (i.e. no ref-cycles
  or missing .dispose() calls) in the Java API.
- Create & Return webrtc::Traces at factory birth/death to be able to assert
  that _all_ threads started during the test are collected by the end.
- Name threads attached to the JVM more informatively for debugging.
- Removed a bunch of unnecessary scoped_refptr instances in
  peerconnection_jni.cc whose only job was messing with refcounts.

RISK=P2
TESTED=AppRTCDemo can be ended and restarted just fine instead of crashing on camera unavailability.  No more post-app-exit logcat lines.  PCTest.java now asserts that all threads are collected before exit.

BUG=2183
R=wu@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/2005004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4534 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-08-12 23:26:21 +00:00
c883fdc273 PeerConnection.java: enable setting trace & log levels from Java
Replaces the hard-coded scheme that was there before and lets apps decide what
to log and to where.

R=wu@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/1969004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4498 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-08-06 19:00:53 +00:00
3d496fb046 Roll chromium_revision 205140:214260 to pick up build fixes for ninja iOS device build.
TESTED=git try
BUG=2106
R=wu@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/1888005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4431 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-07-30 17:14:35 +00:00
c46967dc53 Revert 4391 "Roll chromium 205140:212975 to support ninja iOS ar..."
r4391 results in Mac Release Bot fail: http://chromegw/i/internal.client.webrtc/builders/Mac32%20Release/builds/334/steps/modules_integrationtests


> Roll chromium 205140:212975 to support ninja iOS armv7 build.
> 
> In particular, picks up new clang, libvpx, libsrtp, yasm, and gyp.
> 
> TESTED=git try on patchset #1
> BUG=2106
> R=henrike@webrtc.org
> 
> Review URL: https://webrtc-codereview.appspot.com/1849005

TBR=fischman@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/1874004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4399 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-07-25 17:48:24 +00:00
33584f942c Introduce a bit of sanity to talk/PRESUBMIT.py's license checking.
The comma this allows is a very common variant of the license header (3:1
preferred over the no-comma variant in talk/).

Also pacify pylint a bit, and correct a flagrantly incorrect header I happened
to come across.

BUG=2098,2133
R=henrike@webrtc.org, niklas.enbom@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/1866004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4396 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-07-25 16:43:30 +00:00
87f8a7eb67 Roll chromium 205140:212975 to support ninja iOS armv7 build.
In particular, picks up new clang, libvpx, libsrtp, yasm, and gyp.

TESTED=git try on patchset #1
BUG=2106
R=henrike@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/1849005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4391 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-07-24 20:15:43 +00:00
8c7347124c talk: DataChannel.java repeated contents. This removes the duplicate.
TBR=ajm

BUG=N/A

Review URL: https://webrtc-codereview.appspot.com/1825004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4365 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-07-17 16:28:37 +00:00
9de257d00f Update talk folder to revision=49470012. Same as 375 in libjingle's google code repository.
TBR=wu@webrtc.org

BUG=N/A

Review URL: https://webrtc-codereview.appspot.com/1824004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4364 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-07-17 14:42:53 +00:00
723d683ecb Update talk folder to revision=49260075. Same as 369 in libjingle's google code repository.
TBR=wu@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/1797004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4338 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-07-12 16:04:50 +00:00
28e2075280 Adds trunk/talk folder of revision 359 from libjingles google code to
trunk/talk


git-svn-id: http://webrtc.googlecode.com/svn/trunk@4318 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-07-10 00:45:36 +00:00