
This CL should reduce the number of timeouts for dequeueInputBuffer() which results in the log "MediaCodecVideo: dequeueInputBuffer error" followed by software fallback for VP8/VP9 and codec restart for H264. A timeout always happen for dequeueInputBuffer() when frames_received_ > frames_decoded_ + num_input_buffers. The following code tries to drain the decoder before enqueuing more input buffers: // Try to drain the decoder and wait until output is not too // much behind the input. if (frames_received_ > frames_decoded_ + max_pending_frames_) { ALOGV("Received: %d. Decoded: %d. Wait for output...", frames_received_, frames_decoded_); if (!DeliverPendingOutputs(jni, kMediaCodecTimeoutMs, true /* dropFrames */)) { ALOGE << "DeliverPendingOutputs error"; return ProcessHWErrorOnCodecThread(); } if (frames_received_ > frames_decoded_ + max_pending_frames_) { ALOGE << "Output buffer dequeue timeout"; return ProcessHWErrorOnCodecThread(); } ... } However, for H264, |max_pending_frames_| can currently be larger than the number of input buffers so that the code above is never executed. This CL limits |max_pending_frames_| to the number of input buffers. TBR=glaznev BUG=b/24867188,b/24864151 Review URL: https://codereview.webrtc.org/1394303005 Cr-Commit-Position: refs/heads/master@{#10273}
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.