webrtc/sdk/android
Sergey Silkin 831664294c Allow getScalingSettings to be called from any thread
Scaling settings is a static property of the encoder wrapper. It has no any dependencies on underlaying HW codec and can be fetched from any thread.

getScalingSettings is called from VideoEncoderWrapper ctor [1]. Presence of checkIsOnValidThread() in getScalingSettings caused capturing of thread [2]. That required all following codec calls to be done from the thread that created the codec.

[1] https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/sdk/android/src/jni/video_encoder_wrapper.cc;drc=c05a1be5b49f5c03b6955b05bcbf47609e1b0381;l=41

[2] https://source.chromium.org/chromium/chromium/src/+/main:third_party/webrtc/rtc_base/java/src/org/webrtc/ThreadUtils.java;l=30

Bug: b/261160916, webrtc:14852
Change-Id: I7bb18bc8e3b371d83ccd44d4a5a096f716c0a0e2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/291807
Reviewed-by: Rasmus Brandt <brandtr@webrtc.org>
Commit-Queue: Sergey Silkin <ssilkin@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#39303}
2023-02-13 15:14:42 +00:00
..
api/org/webrtc AndroidNetworkMonitor - loosen assumptions even more 2022-12-05 10:01:01 +00:00
instrumentationtests Reland "Call native codec factories from Android ones." 2022-11-10 16:29:49 +00:00
native_api Include jni.h in jni_int_wrapper.h. 2022-10-11 12:30:32 +00:00
native_unittests AndroidNetworkMonitor - loosen assumptions even more 2022-12-05 10:01:01 +00:00
src Allow getScalingSettings to be called from any thread 2023-02-13 15:14:42 +00:00
tests Switch to getInput/OutputBuffer 2022-06-16 15:55:09 +00:00
AndroidManifest.xml Roll chromium_revision 4d95e6c77b..71a0e1904e (776481:782339) 2020-06-26 05:33:14 +00:00
BUILD.gn Remove all usage of //rtc_base target 2023-01-16 14:36:06 +00:00
OWNERS Remove redundant PRESUBMIT.py files. 2022-03-31 10:48:31 +00:00
README Updating android/README. 2018-03-01 20:22:48 +00:00

This directory holds a Java implementation of the webrtc::PeerConnection API, as
well as the JNI glue C++ code that lets the Java implementation reuse the C++
implementation of the same API.

To build the Java API and related tests, make sure you have a WebRTC checkout
with Android specific parts. This can be used for linux development as well by
configuring gn appropriately, as it is a superset of the webrtc checkout:
fetch --nohooks webrtc_android
gclient sync

You also must generate GN projects with:
--args='target_os="android" target_cpu="arm"'

More information on getting the code, compiling and running the AppRTCMobile
app can be found at:
https://webrtc.org/native-code/android/

To use the Java API, start by looking at the public interface of
org.webrtc.PeerConnection{,Factory} and the org.webrtc.PeerConnectionTest.

To understand the implementation of the API, see the native code in src/jni/pc/.