Magnus Jedvert 51254331cc Android: Refactor renderers to allow apps to inject custom shaders
This CL:
 * Abstracts the functions in GlRectDrawer to an interface.
 * Adds viewport location as argument to the draw() functions, because this information may be needed by some shaders. This also moves the responsibility of calling GLES20.glViewport() to the drawer.
 * Moves uploadYuvData() into a separate helper class.
 * Adds new SurfaceViewRenderer.init() function and new VideoRendererGui.create() function that takes a custom drawer as argument. Each YuvImageRenderer in VideoRendererGui now has their own drawer instead of a common one.

BUG=b/25694445
R=nisse@webrtc.org, perkj@webrtc.org

Review URL: https://codereview.webrtc.org/1520243003 .

Cr-Commit-Position: refs/heads/master@{#11031}
2015-12-15 15:22:38 +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, build with 
OS=linux or OS=android and include
build_with_libjingle=1 build_with_chromium=0
in $GYP_DEFINES.

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 jni/.

An example command-line to build & run the unittest:
cd path/to/trunk
GYP_DEFINES="build_with_libjingle=1 build_with_chromium=0 java_home=path/to/JDK" gclient runhooks && \
    ninja -C out/Debug libjingle_peerconnection_java_unittest && \
    ./out/Debug/libjingle_peerconnection_java_unittest
(where path/to/JDK should contain include/jni.h)

During development it can be helpful to run the JVM with the -Xcheck:jni flag.