694 Commits

Author SHA1 Message Date
Joachim Bauch
6780c51b23 Use SRTP_AES128_CM_SHA1_80 by default instead of SRTP_AES128_CM_SHA1_32.
A field has been added to "CryptoOptions" to enable SRTP_AES128_CM_SHA1_32
from native apps if really necessary.

R=deadbeef@webrtc.org

Bug: webrtc:7670
Change-Id: I36b6ab3e302fbf3cda2611ff196757e43a56e704
Reviewed-on: https://webrtc-review.googlesource.com/41420
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Joachim Bauch <jbauch@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21952}
2018-02-07 21:56:01 +00:00
Sami Kalliomäki
95a5f00484 Update HWVideoEncoder to reuse codec buffer instead of copying the data.
In practice, this is safe since WebRTC doesn't access the buffer after the
callback returns. This avoids unnecessary memory allocations causing out of
memory errors.

Bug: b/72675429
Change-Id: I2ed0224f40b7e1fa67c7aba625b99211f9c1e0a3
Reviewed-on: https://webrtc-review.googlesource.com/49162
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21932}
2018-02-07 13:52:58 +00:00
Niels Möller
1e06289cdb Delete macro RTC_ACCESS_ON, replaced by RTC_GUARDED_BY.
Both macros do the same thing, as wrappers for
__attribute__((guarded_by)), and more names for the same thing doesn't
add to clarity.

Bug: none
Change-Id: Iaaf7b21dbf3345ee90fee22c39b636823d195eb0
Reviewed-on: https://webrtc-review.googlesource.com/48361
Commit-Queue: Niels Moller <nisse@webrtc.org>
Reviewed-by: Tommi <tommi@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21929}
2018-02-07 10:07:28 +00:00
Sami Kalliomäki
740f8e72df Android: Fix a race condition in VideoDecoderWrapper.
Fixes a race condition where frame_extra_infos_ is accessed from
multiple threads by adding a lock.

Adds thread safety idioms to the file to guard agains similar mistakes
in the future.

Bug: b/72979294
Change-Id: I0f2f947282a5b3414f1351e9e8e52ad523f7d2f6
Reviewed-on: https://webrtc-review.googlesource.com/48641
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21926}
2018-02-07 08:53:11 +00:00
Jonathan Yu
7092368982 Fix race condition in cleanup of old frame records.
VideoEncoderWrapper may be released and reused (Release() followed by
InitEncode()). This often happens back to back when encoders are
reconfigured. Because encoded frames are posted asynchronously to the
encoder queue, they may be processed after the encoder associated with
them has already been released.

In the existing code, if a frame for the new encoder had already been
received, the processing of the frame for the old encoder would clear
out the record for the new encoder's frame. This is now fixed by only
clearing out records that are older than the encoded frame being
processed.

A particularly bad symptom is when the new encoder is used for the same
stream as the old one (but was reconfigured for e.g. a change in
resolution). In that case, the new encoder's initial keyframe gets
dropped, and all subsequent difference frames are based off the last
sent frame from the old encoder. This all renders as garbage until a new
keyframe is sent.

Bug: webrtc:8849
Change-Id: I25094f12b38e03e158dc10ac66e92aa9ebaa5541
Reviewed-on: https://webrtc-review.googlesource.com/47549
Commit-Queue: Jonathan Yu <yujo@chromium.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21896}
2018-02-05 18:44:24 +00:00
Sami Kalliomäki
debbc7801f Use correct presentationTimestampUs for VideoFrames in old encoder.
In MediaCodecVideoEncoder, VideoFrame timestamp was used as a
presentation timestamp. With this change timestamp maintained in C++
code is used instead. This matches the behaviour with old frame
callbacks.

Bug: b/72832862
Change-Id: I1f0543ebe837ccac22c83a81a81f3ea128e2a866
Reviewed-on: https://webrtc-review.googlesource.com/47381
Reviewed-by: Anders Carlsson <andersc@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21872}
2018-02-02 13:37:16 +00:00
Sami Kalliomäki
682dc619f2 Conclude VideoFrame emit fieldtrial.
Concludes VideoFrame emit fieldtrial and start producing VideoFrames
by default. Deprecates old onByteBufferFrameCaptured and
onTextureFrameCaptured methods.

Bug: webrtc:8776
Change-Id: Icc224e9f8d89a30f04cf95dd46a498d69cffe9d0
Reviewed-on: https://webrtc-review.googlesource.com/43022
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Anders Carlsson <andersc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21866}
2018-02-02 10:20:22 +00:00
Qingsi Wang
9a5c6f8f3f Add the network preference to RTCConfiguration.
The network preference is added to RTCConfiguration and passed to ICE.
ICE considers now the preference set by applications over network
interface types when making decisions in candidate pair switching.

Bug: webrtc:8816
Change-Id: I40d2612705b54c83dd45772ac855808e0a76b1e1
Reviewed-on: https://webrtc-review.googlesource.com/44020
Commit-Queue: Qingsi Wang <qingsi@google.com>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21855}
2018-02-01 19:32:21 +00:00
Anders Carlsson
dd8c16574e Enable building WebRTC without built-in software codecs
This CL adds a GN build flag to include builtin software codecs
(enabled by default).

When setting the flag to false, libvpx can also be excluded. The
benefit is that the resulting binary is smaller.

Replaces https://webrtc-review.googlesource.com/c/src/+/29203

Bug: webrtc:7925
Change-Id: Id330ea8a43169e449ee139eca18e4557cc932e10
Reviewed-on: https://webrtc-review.googlesource.com/36340
Commit-Queue: Anders Carlsson <andersc@webrtc.org>
Reviewed-by: Patrik Höglund <phoglund@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Reviewed-by: Erik Språng <sprang@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21818}
2018-01-31 08:33:59 +00:00
Sami Kalliomäki
607f464b16 Remove ThreadUtils.waitUninterruptibly.
This method is an anti-pattern. Removes usage of the method from
CameraCapturer and deletes it.

Bug: webrtc:8456
Change-Id: I8a70ce968af412fa6e6b9308a9e05d6a8a1ba05d
Reviewed-on: https://webrtc-review.googlesource.com/46140
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Anders Carlsson <andersc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21808}
2018-01-30 15:25:59 +00:00
Sami Kalliomäki
82f96e6a56 Create an experimental Android NDK.
Following files were split:
sdk/android/native_api/jni_helpers.h
  -> sdk/android/native_api/jni/java_types.h
sdk/android/native_api/jni_helpers.cc
  -> sdk/android/native_api/jni/java_types.cc

Skipping presubmit to avoid changing moved code.

Bug: webrtc:8769

Change-Id: I0ef0f6b297b5002322915660d26cca33e91ff05b
No-Presubmit: true
Reviewed-on: https://webrtc-review.googlesource.com/40800
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Reviewed-by: Anders Carlsson <andersc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21799}
2018-01-30 09:33:42 +00:00
Sami Kalliomäki
88a0c4add3 Never use surface mode in MediaCodecVideoEncoder if egl_context_ is null.
When using VideoFrames, expect_encode_from_texture is true even for
ByteBuffer frames. This causes the encoder to sometimes initialize
itself in surface mode even when egl_context_ is not available.
This leads to a crash.

Bug: webrtc:8776
Change-Id: I8cac36514725b8f430d7bf456d481a4b0c6fcd42
Reviewed-on: https://webrtc-review.googlesource.com/43861
Reviewed-by: Anders Carlsson <andersc@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21789}
2018-01-29 11:03:37 +00:00
Zach Stein
ba37b4b075 Change return type of RtpSenderInterface::SetParameters from bool to RTCError
Note that RTCErrorTypes are mapped to the following DOMException names:
INTERNAL_ERROR -> OperationError
UNSUPPORTED_PARAMETER -> OperationError
INVALID_STATE -> InvalidStateError
INVALID_MODIFICATION -> InvalidModificationError
INVALID_RANGE -> RangeError

Bug: webrtc:8772
Change-Id: I44e3fe2456b007b8fb227d37d74b07ba226a19e4
Reviewed-on: https://webrtc-review.googlesource.com/37141
Commit-Queue: Zach Stein <zstein@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21766}
2018-01-25 19:06:04 +00:00
Mirko Bonadei
63e83c77ae Forward fix jni_generator_helper.h.
In crrev.com/531028, the JNI generator starts to add heap profiler
events to JNI generated functions.

This will cause a ~80KiB regression and at the moment it is breaking
the Chromium Roll into WebRTC.

This CL defines a void macro to re-enable the Chromium Roll avoiding
the size regression.

Bug: chromium:801260
Change-Id: I9543299199c4e14b6b9b235c5cb98c0d53cf29ea
Reviewed-on: https://webrtc-review.googlesource.com/43021
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21730}
2018-01-23 10:33:26 +00:00
Niels Möller
1d7ecd29c7 Rename a few MediaConfig::Video flags for consistency.
enable_cpu_overuse_detection --> enable_cpu_adaptation
  disable_prerenderer_smoothing --> enable_prerenderer_smoothing

where the latter also gets opposite meaning.

Bug: none
Change-Id: Ic10de0871a87e86a899aefa72ecb7e46fcdeaa65
Reviewed-on: https://webrtc-review.googlesource.com/40280
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21726}
2018-01-22 17:32:58 +00:00
Sami Kalliomäki
75db552b33 Add VideoSink interface to VideoFileRenderer.
Bug: webrtc:8776
Change-Id: I1782b0c197abf6f82a200a2808ddc87d1f250326
Reviewed-on: https://webrtc-review.googlesource.com/41320
Reviewed-by: Anders Carlsson <andersc@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21719}
2018-01-22 14:57:38 +00:00
Mirko Bonadei
848f31e57d Removing "initialized lambda captures" (C++14 feature).
WebRTC is still targeting C++11, this C++14 only feature sneaked in
because the Android toolchain used to build WebRTC on the trybots
uses C++14 features.

Bug: None
Change-Id: I095fb76134dff729c72b7660cdb3d6abc4de2e0c
Reviewed-on: https://webrtc-review.googlesource.com/42501
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21711}
2018-01-22 13:27:58 +00:00
Fredrik Solenberg
a8b7c7f4c6 Move remaining traces of VoiceEngine
- Move files from voice_engine/ to audio/.
- Rename voice_engine/utility.* to remix_resample.* since there are no other
  utilities in those files.
- Move test/mock_voe_channel_proxy.h to audio/.
- Removed voe_channel_id from Audio[Receive|Send]Stream::Config.
- Remove VoiceEngine* from AudioState::Config.
- Fix a few cpplint complaints which showed when moving files.

NOPRESUBMIT=true

Bug: webrtc:4690
Change-Id: Id266c822d956625c358fa5e193e6f4837164aef8
Reviewed-on: https://webrtc-review.googlesource.com/39268
Commit-Queue: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21657}
2018-01-17 13:27:47 +00:00
Jonas Oreland
e662d0ecf0 Extend Android SDK to enable adding custom PortAllocator
This patch exposes the network_thread so that
a custom PortAllocator can use it instead of e.g
creating own thread.

Bug: webrtc:8640
Change-Id: I705629e4f1a4d0a4fed7d53a774ba9564ba076fe
Reviewed-on: https://webrtc-review.googlesource.com/39925
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Jonas Oreland <jonaso@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21643}
2018-01-16 14:52:14 +00:00
Sami Kalliomäki
6f247e944c Add a method for getting the native factory from PeerConnectionFactory.
Bug: webrtc:8662
Change-Id: Icfe09e82737e1b700e469afde00c4f0923bbeb42
Reviewed-on: https://webrtc-review.googlesource.com/39516
Reviewed-by: Anders Carlsson <andersc@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21628}
2018-01-16 08:43:12 +00:00
Sami Kalliomäki
ce5c19add1 Move ownership of PeerConnectionObserver from Java to C++.
New OwnedPeerConnection takes ownership of the observer. This is done
to allow NativePeerConnectionFactory to return a capsulated object.

Bug: webrtc:8662
Change-Id: Ie876f7b9a1a17ebcfbe51537f712a32ab1a7cbfb
Reviewed-on: https://webrtc-review.googlesource.com/35300
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21610}
2018-01-15 09:52:38 +00:00
Sami Kalliomäki
02879f9990 Reland "Make freeNativePeerConnectionObserver generic."
This is a reland of 046f78cae64fec756391e81206c5aa007274b791
Original change's description:
> Make freeNativePeerConnectionObserver generic.
> 
> Previously, it was only possible to free PeerConnectionObserverJni
> objects using this method. Now it is generic and can free any
> PeerConnectionObserver.
> 
> Bug: webrtc:8662
> Change-Id: I619ca5ed88a0c2553fa6d19ce41e510947d5bd44
> Reviewed-on: https://webrtc-review.googlesource.com/35222
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
> Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21411}

Bug: webrtc:8662
Change-Id: Iba64d613f7b434260a0d7b762ca67d49b295a84f
Reviewed-on: https://webrtc-review.googlesource.com/38901
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21587}
2018-01-11 15:26:11 +00:00
Sam Zackrisson
aa6b24f23c Delete DefaultAudioProcessingFactory in the Java layer
This removes the DefaultAudioProcessingFactory, PostProcessingFactory and DefaultAudioProcessingFactoryTest classes and leaves the interface AudioProcessingFactory without any default implementation (as the default APM is already created by the PeerConnectionFactory JNI).

Bug: webrtc:8701
Change-Id: I259108afbc5b24cab5161485f45af4236f775c18
Reviewed-on: https://webrtc-review.googlesource.com/37220
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21577}
2018-01-11 12:51:01 +00:00
Yura Yaroshevich
77a47e0081 Handle any exception in Camera.setPreviewTexture.
On Meizu devices (and maybe on other devices too) when camera is
disallowed in settings `android.hardware.Camera.open` returns
non-null Camera instance, but when any method is invoked on `Camera`
instance the `RuntimeException` is thrown. It claims that Camera
instance is used after `release()` was invoked on that instance.
`Camera1Session.open` didn't handle that case and crashed whole
application when returned Camera instance was already released or
more likely was not even properly initialized during `Camera.open`.

Bug: webrtc:8685
Change-Id: I5cda397a599e87971bf9a4bd3faf6fc4a0d198f3
Reviewed-on: https://webrtc-review.googlesource.com/36300
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21556}
2018-01-10 15:15:57 +00:00
Ivo Creusen
62337e59dd Use AudioProcessingBuilder everywhere AudioProcessing is created.
The AudioProcessingBuilder was recently introduced in https://webrtc-review.googlesource.com/c/src/+/34651 to make it easier to create APM instances. This CL replaces all calls to the old Create methods with the new AudioProcessingBuilder.

Bug: webrtc:8668
Change-Id: Ibb5f0fc0dbcc85fcf3355b01bec916f20fe0eb67
Reviewed-on: https://webrtc-review.googlesource.com/36082
Commit-Queue: Ivo Creusen <ivoc@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21534}
2018-01-09 13:45:20 +00:00
Mirko Bonadei
f641687a80 Forward fixing WebRTC to compile with Android NDK r16.
Starting from Chromium Roll [1], WebRTC should start to use NDK r16
for Android builds. The roll cannot be completed because of three
compilation errors:

../../sdk/android/src/jni/pc/androidnetworkmonitor.cc:15:9: error: 'RTLD_NOLOAD' macro redefined [-Werror,-Wmacro-redefined]
        ^
../../third_party/android_tools/ndk/sysroot/usr/include/dlfcn.h:62:9: note: previous definition is here

../../modules/audio_device/android/audio_record_jni.cc:251:41: error: format specifies type 'long long' but the argument has type 'jlong' (aka 'long') [-Werror,-Wformat]
  ALOGD("direct buffer capacity: %lld", capacity);

../../modules/audio_device/android/audio_track_jni.cc:229:41: error: format specifies type 'long long' but the argument has type 'jlong' (aka 'long') [-Werror,-Wformat]
  ALOGD("direct buffer capacity: %lld", capacity);

This CL forward fixes these errors in order to fix the Chromium Roll
into WebRTC.

[1] - https://webrtc-review.googlesource.com/c/src/+/37540

Bug: webrtc:8710
Change-Id: I5bc64e73919eee7c9e965a442a386b5e1897b56a
Reviewed-on: https://webrtc-review.googlesource.com/37640
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21510}
2018-01-08 07:27:32 +00:00
Patrik Höglund
be214a26f8 Move videosinkinterface.h to common_video to solve a circular dep.
I updated some dependency enforcement rules to allow examples and pc
to depend on common_video. I reckoned depending on common_video is
not controversial when they already dependend on media/base, which
is a lower-level abstraction.

Bug: webrtc:6828
Change-Id: I77dbeb10187b4e70dda1d873a29994fa76070758
Reviewed-on: https://webrtc-review.googlesource.com/34187
Reviewed-by: Stefan Holmer <stefan@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21495}
2018-01-04 13:19:49 +00:00
Alex Loiko
97cb448d25 Update Webrtc to new AudioProcessing API.
webrtc::PostProcessor changed to webrtc::CustomProcessor and one APM
factory method has been deprecated.

The APM API changed in this cl: https://webrtc-review.googlesource.com/c/src/+/29201

TBR=henrik.lundin@webrtc.org, sakal@webrtc.org

Bug: webrtc:8665
Change-Id: I76dfc7831575d4dfce7e60cbe22007bd2a50e946
Reviewed-on: https://webrtc-review.googlesource.com/34381
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21451}
2017-12-27 09:03:59 +00:00
Sami Kalliomäki
b96d62dbf2 Revert "Make freeNativePeerConnectionObserver generic."
This reverts commit 046f78cae64fec756391e81206c5aa007274b791.

Reason for revert: Breaks chromium.webrtc.fyi tree

Original change's description:
> Make freeNativePeerConnectionObserver generic.
> 
> Previously, it was only possible to free PeerConnectionObserverJni
> objects using this method. Now it is generic and can free any
> PeerConnectionObserver.
> 
> Bug: webrtc:8662
> Change-Id: I619ca5ed88a0c2553fa6d19ce41e510947d5bd44
> Reviewed-on: https://webrtc-review.googlesource.com/35222
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
> Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#21411}

TBR=magjed@webrtc.org,sakal@webrtc.org,kwiberg@webrtc.org

Change-Id: I4490945ca3d9a25d5ed5795bc7954dc1044bdd22
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8662
Reviewed-on: https://webrtc-review.googlesource.com/35781
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21413}
2017-12-21 13:09:01 +00:00
Sami Kalliomäki
046f78cae6 Make freeNativePeerConnectionObserver generic.
Previously, it was only possible to free PeerConnectionObserverJni
objects using this method. Now it is generic and can free any
PeerConnectionObserver.

Bug: webrtc:8662
Change-Id: I619ca5ed88a0c2553fa6d19ce41e510947d5bd44
Reviewed-on: https://webrtc-review.googlesource.com/35222
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21411}
2017-12-21 12:36:20 +00:00
Magnus Jedvert
84d8ae5df7 Android: Use scoped java refs
We currently use raw jobject in our code mixed with sporadic
ScopedLocalRefFrame. This CL moves every jobject into a scoped object,
either local, global, or a parameter. Also, this CL uses the JNI
generation script to generate declaration stubs for the Java->C++
functions so that it no longer becomes possible to mistype them
without getting compilation errors.

TBR=brandt@webrtc.org

Bug: webrtc:8278,webrtc:6969
Change-Id: Ic7bac74a89c11180177d65041086d7db1cdfb516
Reviewed-on: https://webrtc-review.googlesource.com/34655
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21387}
2017-12-20 15:46:06 +00:00
Magnus Jedvert
1212f1e227 Android: One JNI file per Java file
This CL does the following:
 * Split out MediaStream JNI code from peerconnection.cc to mediastream.h/mediastream.cc.
 * Split out RtpSender JNI code from peerconnection.cc to rtpsender.h/rtpsender.cc.
 * Split out TurnCustomizer JNI code from peerconnection.cc to turncustomizer.h/turncustomizer.cc.
 * Add missing instanceof function to WrappedNativeVideoDecoder.java.
 * Move some PeerConnectionFactory JNI declarations from pc/video.cc to peerconnectionfactory.cc.
 * Add declaration to video.h for the JNI functions that depend on EglBase14_jni.h.
 * Use a scoped object to store the global Java MediaStream objects that also call dispose.

Bug: webrtc:8278
Change-Id: I3c56a599b8bcbc8f34e5c5a7b9c9fe1d192ff3f3
Reviewed-on: https://webrtc-review.googlesource.com/34645
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21380}
2017-12-20 11:30:26 +00:00
Sami Kalliomäki
1ece1edddc Android: Allow injecting native PeerConnection.
This allows application to construct PeerConnection object in JNI and
pass that to Android API. API for wrapping Java PeerConnection Observers
is exposed for convenience.

Bug: webrtc:8662
Change-Id: Id110b92e6bb5ab00661cd50616d05c3e18a1697d
Reviewed-on: https://webrtc-review.googlesource.com/34520
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Reviewed-by: Jonas Oreland <jonaso@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21379}
2017-12-20 11:27:56 +00:00
Sami Kalliomäki
e8b26cd86b Android: Deprecate peerconnection constraints.
C++ API allows passing all configuration through RTCConfiguration
object. This adds all values previously passed through PC constraints
to Java RTCConfiguration object and deprecates API that takes PC
contraints.

Using the deprecated API overrides the values in RTCConfigration
object.

Bug: webrtc:8663, webrtc:8662
Change-Id: I128432c3caba74403513fb1347ff58830c643885
Reviewed-on: https://webrtc-review.googlesource.com/33460
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Taylor Brandstetter <deadbeef@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21357}
2017-12-19 12:23:20 +00:00
Yura Yaroshevich
5a7508ab24 Fixed NPE inside org.webrtc.Camera1Session.create
On some devices `android.hardware.Camera.open` returns null
instead of raising exception. It causes `NPE` inside
`Camera1Session.create` when method `setPreviewTexture` is
invoked on local variable `camera`, which is `null`.

Bug: webrtc:8658
Change-Id: Ic65b4aef2c0b8b65735a9db02433b536bfe92ddd
Reviewed-on: https://webrtc-review.googlesource.com/33620
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21352}
2017-12-19 10:01:20 +00:00
Magnus Jedvert
9060eb1528 Android: Generate JNI code for remaining classes in sdk/android
Bug: webrtc:8278
Change-Id: I20a4388ab347d8745d0edde808f7a0b610f077f9
Reviewed-on: https://webrtc-review.googlesource.com/31484
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21227}
2017-12-12 12:36:17 +00:00
Mirko Bonadei
654320666d Including libyuv headers using fully qualified paths.
Using fully qualified paths to include libyuv headers allows WebRTC to
avoid to rely on the //third_party/libyuv:libyuv_config target to
set the -I compiler flag.

Today some WebRTC targets depend on //third_party/libyuv only to
include //third_party/libyuv:libyuv_config but with fully qualified
paths this should not be needed anymore.

A follow-up CL will remove //third_party/libyuv from some targets that
don't need it because they are not including libyuv headers.

Bug: webrtc:8605
Change-Id: Icec707ca761aaf2ea8088e7f7a05ddde0de2619a
No-Try: True
Reviewed-on: https://webrtc-review.googlesource.com/28220
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Magnus Flodman <mflodman@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21209}
2017-12-11 15:51:26 +00:00
Magnus Jedvert
655e1967ea Android: Generate JNI code for MediaCodecVideoEncoder/Decoder
Bug: webrtc:8278
Change-Id: I19cff18b5d110720ea50d16254ddc4377adc3dbe
Reviewed-on: https://webrtc-review.googlesource.com/31261
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21204}
2017-12-11 12:38:15 +00:00
Magnus Jedvert
de5afcfcbf Android: Merge peerconnectionobserver_jni and peerconnection_jni
The generated JNI files are actually implementation files that can only
be included from one place. For generating JNI code for
PeerConnection.java, this means we need to collect all JNI
PeerConnection code into one place. This CL moves
peerconnectionobserver_jni.h to peerconnection.h, and merges
peerconnectionobserver_jni.cc and peerconnection_jni.cc. It also moves
converter functions JavaToNativeIceServers and
JavaToNativeRTCConfiguration to peerconnection.h since they are also
related to PeerConnection.java.

This CL does not contain anything else than a pure code move.

TBR=sakal@webrtc.org

Bug: webrtc:8278
Change-Id: I31c696c1aab495e09f95e5ba5d79f95df7c34a0e
Reviewed-on: https://webrtc-review.googlesource.com/31483
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21200}
2017-12-11 10:17:05 +00:00
Steve Anton
a3a92c264b Replace string type with SdpType enum
This moves all WebRTC internal code from using
SessionDescriptionInterface::type() which returns a string and
from using CreateSessionDescription with a string type parameter.

Bug: webrtc:8613
Change-Id: I1cdd93dc4b26dec157e22476fdac569d5da2810a
Reviewed-on: https://webrtc-review.googlesource.com/29500
Commit-Queue: Steve Anton <steveanton@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Zhi Huang <zhihuang@webrtc.org>
Reviewed-by: Peter Thatcher <pthatcher@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21147}
2017-12-07 19:08:47 +00:00
Magnus Jedvert
3863153267 Android: Generate JNI code for jni_helper, RtpSender, and VideoEncoderFactory
Bug: webrtc:8278
Change-Id: I6111e562cc5a8fe6c595fcb8dfd5202d46a08806
Reviewed-on: https://webrtc-review.googlesource.com/28622
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21140}
2017-12-07 15:18:57 +00:00
Magnus Jedvert
ba700f642b Android: Generate JNI code for RtpReceiver and PeerConnection.Observer
Bug: webrtc:8278
Change-Id: Ief62c37dd6820c2eb1ce94e37e0a61dd8726caae
Reviewed-on: https://webrtc-review.googlesource.com/28621
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21035}
2017-12-04 13:29:59 +00:00
Sami Kalliomäki
b9f3f9bdd7 Make EglBase an interface.
Bug: webrtc:8084
Change-Id: I50f57f81fe7148e2ed262e0672d5ab3a4f0f251e
Reviewed-on: https://webrtc-review.googlesource.com/26960
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#21026}
2017-12-04 08:41:38 +00:00
Oskar Sundbom
51907f641b Optional: Use nullopt and implicit construction in /sdk/android/src/jni/pc
Changes places where we explicitly construct an Optional to instead use
nullopt or the requisite value type only.

This CL was uploaded by git cl split.

Bug: None
Change-Id: Idf275495910f651ec35f641611926e62414daa9a
Reviewed-on: https://webrtc-review.googlesource.com/23610
Commit-Queue: Oskar Sundbom <ossu@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20972}
2017-12-01 10:22:01 +00:00
Magnus Jedvert
bba8e9eb85 Reland "Android: Generate JNI code for stats"
This reverts commit 43d069a2cdb90ec8c887cf8aa68b42b7cf7ea49d.

Reason for revert: Include fix for local reference overflow.

Original change's description:
> Revert "Android: Generate JNI code for stats"
>
> This reverts commit aede67a199ae0552074bfec4bb03cc9a6a5fba0f.
>
> Reason for revert: Causes error:
> JNI ERROR (app bug): local reference table overflow (max=512)'
>
> Original change's description:
> > Android: Generate JNI code for stats
> >
> > This CL also unifies the functions for converting from C++ to Java, and
> > generates the boiler plate for converting C++ vectors to Java arrays.
> >
> > Bug: webrtc:8278
> > Change-Id: I262e9162beae8a64ba0e8b6a27e1081207b03961
> > Reviewed-on: https://webrtc-review.googlesource.com/26020
> > Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
> > Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#20918}
>
> TBR=magjed@webrtc.org,sakal@webrtc.org
>
> Change-Id: Ieb26ed8577bd489a4dd4f7542d16a7d0e11f409f
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: webrtc:8278
> Reviewed-on: https://webrtc-review.googlesource.com/26900
> Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
> Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#20926}

TBR=magjed@webrtc.org,sakal@webrtc.org

Change-Id: I6f7097f308098e7922fbf0bed577bd69da4e1c61
Bug: webrtc:8278
Reviewed-on: https://webrtc-review.googlesource.com/26901
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20951}
2017-11-30 11:40:51 +00:00
Magnus Jedvert
43d069a2cd Revert "Android: Generate JNI code for stats"
This reverts commit aede67a199ae0552074bfec4bb03cc9a6a5fba0f.

Reason for revert: Causes error:
JNI ERROR (app bug): local reference table overflow (max=512)'

Original change's description:
> Android: Generate JNI code for stats
> 
> This CL also unifies the functions for converting from C++ to Java, and
> generates the boiler plate for converting C++ vectors to Java arrays.
> 
> Bug: webrtc:8278
> Change-Id: I262e9162beae8a64ba0e8b6a27e1081207b03961
> Reviewed-on: https://webrtc-review.googlesource.com/26020
> Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
> Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#20918}

TBR=magjed@webrtc.org,sakal@webrtc.org

Change-Id: Ieb26ed8577bd489a4dd4f7542d16a7d0e11f409f
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:8278
Reviewed-on: https://webrtc-review.googlesource.com/26900
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20926}
2017-11-29 10:09:10 +00:00
Magnus Jedvert
aede67a199 Android: Generate JNI code for stats
This CL also unifies the functions for converting from C++ to Java, and
generates the boiler plate for converting C++ vectors to Java arrays.

Bug: webrtc:8278
Change-Id: I262e9162beae8a64ba0e8b6a27e1081207b03961
Reviewed-on: https://webrtc-review.googlesource.com/26020
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20918}
2017-11-28 17:27:58 +00:00
Magnus Jedvert
4fa5da54d5 Android: Generate JNI code for MediaStreamTrack
Bug: webrtc:8278
Change-Id: Id5ac6ecd4f65bed4ae4b2953ef58ebc390508d21
Reviewed-on: https://webrtc-review.googlesource.com/25963
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20910}
2017-11-28 13:14:08 +00:00
Magnus Jedvert
6a0345b3b0 Android: Generate JNI code for MediaStream
Bug: webrtc:8278
Change-Id: I48d0615f3db3f22e7179a2d7c59b970a33678ada
Reviewed-on: https://webrtc-review.googlesource.com/25962
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20891}
2017-11-27 11:58:32 +00:00
Magnus Jedvert
80610c4fd1 Android: Generate JNI code for IceCandidate
Bug: webrtc:8278
Change-Id: I4facd1f6babd6e8a9b35c86b6ad7420e52321f49
Reviewed-on: https://webrtc-review.googlesource.com/25960
Reviewed-by: Sami Kalliomäki <sakal@webrtc.org>
Commit-Queue: Magnus Jedvert <magjed@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#20888}
2017-11-27 11:17:02 +00:00