Change PeerConnectionFactory.setVideoHwAccelerationOptions to create shared Egl context for harware encoders and decoders.

Before this fix, it was required that the EGL context used as an argument was kept open until all PeerConnections using the context had been closed. With this fix, that is no longer required.
Also, if a released EGLContext (EGL_NO_CONTEXT) is used, harware codecs will fallback to use byte buffers for encoding and decoding.
BUG=b/26583522
R=glaznev@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11398}
This commit is contained in:
Per
2016-01-27 15:25:46 +01:00
parent 2098fca39a
commit ec2922f864
13 changed files with 255 additions and 84 deletions

View File

@ -29,7 +29,7 @@
#ifndef TALK_APP_WEBRTC_JAVA_JNI_ANDROIDMEDIADECODER_JNI_H_
#define TALK_APP_WEBRTC_JAVA_JNI_ANDROIDMEDIADECODER_JNI_H_
#include "talk/app/webrtc/java/jni/jni_helpers.h"
#include "talk/app/webrtc/java/jni/eglbase_jni.h"
#include "talk/media/webrtc/webrtcvideodecoderfactory.h"
namespace webrtc_jni {
@ -50,7 +50,7 @@ class MediaCodecVideoDecoderFactory
void DestroyVideoDecoder(webrtc::VideoDecoder* decoder) override;
private:
jobject render_egl_context_; // Render EGL context.
EglBase egl_;
std::vector<webrtc::VideoCodecType> supported_codec_types_;
};