Use injectable hardware video decoder/encoder in AppRTCMobile.
Also include a small fix for getting the encoder queue. Bug: webrtc:7760 Change-Id: I96dc8ffb363b90382276d88148f81d5f89dca5f2 Reviewed-on: https://webrtc-review.googlesource.com/2683 Commit-Queue: Sami Kalliomäki <sakal@webrtc.org> Reviewed-by: Magnus Jedvert <magjed@webrtc.org> Cr-Commit-Position: refs/heads/master@{#20022}
This commit is contained in:
committed by
Commit Bot
parent
cdd1f687cf
commit
0cbaf1a6f6
@ -36,6 +36,8 @@ import org.webrtc.AudioTrack;
|
|||||||
import org.webrtc.CameraVideoCapturer;
|
import org.webrtc.CameraVideoCapturer;
|
||||||
import org.webrtc.DataChannel;
|
import org.webrtc.DataChannel;
|
||||||
import org.webrtc.EglBase;
|
import org.webrtc.EglBase;
|
||||||
|
import org.webrtc.HardwareVideoDecoderFactory;
|
||||||
|
import org.webrtc.HardwareVideoEncoderFactory;
|
||||||
import org.webrtc.IceCandidate;
|
import org.webrtc.IceCandidate;
|
||||||
import org.webrtc.Logging;
|
import org.webrtc.Logging;
|
||||||
import org.webrtc.MediaConstraints;
|
import org.webrtc.MediaConstraints;
|
||||||
@ -339,6 +341,7 @@ public class PeerConnectionClient {
|
|||||||
createPeerConnection(
|
createPeerConnection(
|
||||||
localRender, Collections.singletonList(remoteRender), videoCapturer, signalingParameters);
|
localRender, Collections.singletonList(remoteRender), videoCapturer, signalingParameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void createPeerConnection(final VideoSink localRender,
|
public void createPeerConnection(final VideoSink localRender,
|
||||||
final List<VideoRenderer.Callbacks> remoteRenders, final VideoCapturer videoCapturer,
|
final List<VideoRenderer.Callbacks> remoteRenders, final VideoCapturer videoCapturer,
|
||||||
final SignalingParameters signalingParameters) {
|
final SignalingParameters signalingParameters) {
|
||||||
@ -509,7 +512,12 @@ public class PeerConnectionClient {
|
|||||||
if (options != null) {
|
if (options != null) {
|
||||||
Log.d(TAG, "Factory networkIgnoreMask option: " + options.networkIgnoreMask);
|
Log.d(TAG, "Factory networkIgnoreMask option: " + options.networkIgnoreMask);
|
||||||
}
|
}
|
||||||
factory = new PeerConnectionFactory(options);
|
final boolean enableH264HighProfile =
|
||||||
|
peerConnectionParameters.videoCodec.equals(VIDEO_CODEC_H264_HIGH);
|
||||||
|
factory = new PeerConnectionFactory(options,
|
||||||
|
new HardwareVideoEncoderFactory(rootEglBase.getEglBaseContext(),
|
||||||
|
true /* enableIntelVp8Encoder */, enableH264HighProfile),
|
||||||
|
new HardwareVideoDecoderFactory(rootEglBase.getEglBaseContext()));
|
||||||
Log.d(TAG, "Peer connection factory created.");
|
Log.d(TAG, "Peer connection factory created.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -97,8 +97,6 @@ VideoEncoderWrapper::VideoEncoderWrapper(JNIEnv* jni, jobject j_encoder)
|
|||||||
|
|
||||||
implementation_name_ = GetImplementationName(jni);
|
implementation_name_ = GetImplementationName(jni);
|
||||||
|
|
||||||
encoder_queue_ = rtc::TaskQueue::Current();
|
|
||||||
|
|
||||||
initialized_ = false;
|
initialized_ = false;
|
||||||
num_resets_ = 0;
|
num_resets_ = 0;
|
||||||
|
|
||||||
@ -116,6 +114,7 @@ int32_t VideoEncoderWrapper::InitEncode(const VideoCodec* codec_settings,
|
|||||||
number_of_cores_ = number_of_cores;
|
number_of_cores_ = number_of_cores;
|
||||||
codec_settings_ = *codec_settings;
|
codec_settings_ = *codec_settings;
|
||||||
num_resets_ = 0;
|
num_resets_ = 0;
|
||||||
|
encoder_queue_ = rtc::TaskQueue::Current();
|
||||||
|
|
||||||
return InitEncodeInternal(jni);
|
return InitEncodeInternal(jni);
|
||||||
}
|
}
|
||||||
@ -167,6 +166,7 @@ int32_t VideoEncoderWrapper::Release() {
|
|||||||
jobject ret = jni->CallObjectMethod(*encoder_, release_method_);
|
jobject ret = jni->CallObjectMethod(*encoder_, release_method_);
|
||||||
frame_extra_infos_.clear();
|
frame_extra_infos_.clear();
|
||||||
initialized_ = false;
|
initialized_ = false;
|
||||||
|
encoder_queue_ = nullptr;
|
||||||
return HandleReturnCode(jni, ret);
|
return HandleReturnCode(jni, ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user