Commit Graph

42 Commits

Author SHA1 Message Date
a59c501c99 Java VideoRenderer class may be backed by two different native
classes depending on type of rendering.
Fix crash in AppRtcDemo by calling correct destructor on exit.

BUG=
R=braveyao@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7202 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-17 03:26:59 +00:00
996784548d HW video decoding optimization to better support HD resolution:
- Change hw video decoder wrapper to allow to feed multiple input
and query for an output every 10 ms.
- Add an option to decode video frame into an Android surface object. Create
shared with video renderer EGL context and external texture on
video decoder thread.
- Support external texture rendering in Android renderer.
- Support TextureVideoFrame in Java and use it to pass texture from video decoder
to renderer.
- Fix HW encoder and decoder detection code to avoid query codec capabilities
from sw codecs.

BUG=
R=tkchin@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7185 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-15 17:52:42 +00:00
1d53f64b0f Disabling initializeAndroidGlobals when built with WEBRTC_CHROMIUM_BUILD.
webrtc::VideoEngine::SetAndroidObjects and webrtc::VoiceEngine::SetAndroidObjects
are not compatible with WEBRTC_CHROMIUM_BUILD. Since neither VoiceEngine nor VideoEngine
are needed at the time it's better to disable it completely.

BUG=https://crbug.com/412276
R=glaznev@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7155 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-11 16:58:25 +00:00
4d19e05ab2 Peerconnection_jni to use webrtc/base/checks.h instead of implementing its own.
This needs to happen sooner or later as if webrtc/base/checks.h happens to be included transitively here it would collide.

R=glaznev@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@7115 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-09-09 11:45:44 +00:00
b648b9d85c Remove test constructor in WebRtcVideoEngine2.
Removes the need for ::Construct().

BUG=1788
R=pthatcher@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6977 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-26 11:08:06 +00:00
a09a99950e (Auto)update libjingle 73222930-> 73226398
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6891 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-08-13 17:26:08 +00:00
d4e598d57a (Auto)update libjingle 72097588-> 72159069
git-svn-id: http://webrtc.googlecode.com/svn/trunk@6799 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-29 17:36:52 +00:00
efe4b9af49 Add VP8 video decoding hw acceleration support to Java Peerconnection library.
For now NVidia decoder is supported only,
Qualcomm will be added once b/16353967 is fixed.

TODO:
- Support queuing 2-3 decoder input buffers.
- Add average decoding time statistics.
- Add Qualcomm hw decoder support.

BUG=3030
R=tkchin@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6758 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-07-22 17:44:53 +00:00
c6c1dfd7ea Add extra logging and latency restriction to VP8 HW encoder.
- Do not allow encoder to accumulate more than 100 ms of
data in input buffers.
- Add optional extra logging (disabled by default) to track
encoder buffers timing.

BUG=
R=fischman@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6435 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-06-13 22:59:08 +00:00
a40210aee2 Add support for NVidia VP8 HW encoder.
- Some changes in HW VP8 encoder search logic to detect HW codec
with supported color space format.
- Support yuv420 and nv12 formants for encoder input.
- Add some extra logging and encoder frame drop statistics.

BUG=3176
R=fischman@webrtc.org, tkchin@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6389 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-06-10 23:48:29 +00:00
c3288c130d Add OpenGL Android video renderer which can display multiple
yuv420 images in a single GLSurfaceView.
Start using new video renderer in AppRTC demo app.

BUG=
R=fischman@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6360 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-06-06 21:57:46 +00:00
9512719569 AppRTCDemo(android): support app (UI) & capture rotation.
Now app UI rotates as the device orientation changes, and the captured stream
tries to maintain real-world-up, matching Chrome/Android and Hangouts/Android
behavior.

BUG=2432
R=glaznev@webrtc.org, henrike@webrtc.org, wu@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6354 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-06-06 18:40:44 +00:00
a150bc9bbf PeerConnection(android): allow initializing either (or neither) of {Voice,Video}Engine.
Enables applications that don't want to pay the init/startup cost or request
extra permissions (e.g. audio-only app, or DataChannel-only app).

BUG=3234

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6164 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-05-14 22:00:50 +00:00
2c98af7935 PeerConnection(Java): auto-WrapCurrentThread() when creating PeerConnectionFactory.
Various pieces of talk/ assume that the current Thread is ThreadManager'd
without checking this, so unconditionally wrap the caller's thread in case it
was created by Java code unbeknownst to ThreadManager.

BUG=2947
R=wu@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6154 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-05-14 17:33:32 +00:00
f04a6ea733 MediaCodecVideoEncoder: limit MediaCodec bitrate to 95% of requested to avoid overshoot.
BUG=3194
R=noahric@google.com

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@6021 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-04-29 17:53:30 +00:00
a0d3067575 Use CreatePeerConnection method which accepts port_allocator.
Other method will be removed, in a different CL.

R=fischman@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5987 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-04-26 00:00:15 +00:00
db41b4dbcd Remove the deprecated GetStats method from PeerConnectionInterface.
R=fischman@webrtc.org, wu@webrtc.org

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5634 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-03-03 21:30:06 +00:00
358e3367a3 PeerConnection(java): enable HW encoder on N5 for standalone build.
Now that bug 2899 is fixed (r5562) packet-loss is recoverable.  Yay.

BUG=2575
R=noahric@google.com

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

git-svn-id: http://webrtc.googlecode.com/svn/trunk@5568 4adac7df-926f-26a2-2b94-8c16560cd09d
2014-02-18 17:29:37 +00:00
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