Expose setLocalDescription() in SDK for Android.
Parameterless sLD is part of perfect negotiation algo. Bug: webrtc:12609 Change-Id: I13a6b0bf29db8b4e984da9b2645f9bfdb23e074c Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/212605 Reviewed-by: Xavier Lepaul <xalep@webrtc.org> Commit-Queue: Yura Yaroshevich <yura.yaroshevich@gmail.com> Cr-Commit-Position: refs/heads/master@{#33641}
This commit is contained in:
parent
d69e0709c8
commit
4e9e723dae
@ -883,6 +883,10 @@ public class PeerConnection {
|
||||
nativeCreateAnswer(observer, constraints);
|
||||
}
|
||||
|
||||
public void setLocalDescription(SdpObserver observer) {
|
||||
nativeSetLocalDescriptionAutomatically(observer);
|
||||
}
|
||||
|
||||
public void setLocalDescription(SdpObserver observer, SessionDescription sdp) {
|
||||
nativeSetLocalDescription(observer, sdp);
|
||||
}
|
||||
@ -1272,6 +1276,7 @@ public class PeerConnection {
|
||||
private native DataChannel nativeCreateDataChannel(String label, DataChannel.Init init);
|
||||
private native void nativeCreateOffer(SdpObserver observer, MediaConstraints constraints);
|
||||
private native void nativeCreateAnswer(SdpObserver observer, MediaConstraints constraints);
|
||||
private native void nativeSetLocalDescriptionAutomatically(SdpObserver observer);
|
||||
private native void nativeSetLocalDescription(SdpObserver observer, SessionDescription sdp);
|
||||
private native void nativeSetRemoteDescription(SdpObserver observer, SessionDescription sdp);
|
||||
private native void nativeRestartIce();
|
||||
|
||||
@ -571,15 +571,24 @@ static void JNI_PeerConnection_CreateAnswer(
|
||||
ExtractNativePC(jni, j_pc)->CreateAnswer(observer, options);
|
||||
}
|
||||
|
||||
static void JNI_PeerConnection_SetLocalDescriptionAutomatically(
|
||||
JNIEnv* jni,
|
||||
const JavaParamRef<jobject>& j_pc,
|
||||
const JavaParamRef<jobject>& j_observer) {
|
||||
rtc::scoped_refptr<SetLocalSdpObserverJni> observer(
|
||||
new rtc::RefCountedObject<SetLocalSdpObserverJni>(jni, j_observer));
|
||||
ExtractNativePC(jni, j_pc)->SetLocalDescription(observer);
|
||||
}
|
||||
|
||||
static void JNI_PeerConnection_SetLocalDescription(
|
||||
JNIEnv* jni,
|
||||
const JavaParamRef<jobject>& j_pc,
|
||||
const JavaParamRef<jobject>& j_observer,
|
||||
const JavaParamRef<jobject>& j_sdp) {
|
||||
rtc::scoped_refptr<SetSdpObserverJni> observer(
|
||||
new rtc::RefCountedObject<SetSdpObserverJni>(jni, j_observer, nullptr));
|
||||
rtc::scoped_refptr<SetLocalSdpObserverJni> observer(
|
||||
new rtc::RefCountedObject<SetLocalSdpObserverJni>(jni, j_observer));
|
||||
ExtractNativePC(jni, j_pc)->SetLocalDescription(
|
||||
observer, JavaToNativeSessionDescription(jni, j_sdp).release());
|
||||
JavaToNativeSessionDescription(jni, j_sdp), observer);
|
||||
}
|
||||
|
||||
static void JNI_PeerConnection_SetRemoteDescription(
|
||||
@ -587,10 +596,10 @@ static void JNI_PeerConnection_SetRemoteDescription(
|
||||
const JavaParamRef<jobject>& j_pc,
|
||||
const JavaParamRef<jobject>& j_observer,
|
||||
const JavaParamRef<jobject>& j_sdp) {
|
||||
rtc::scoped_refptr<SetSdpObserverJni> observer(
|
||||
new rtc::RefCountedObject<SetSdpObserverJni>(jni, j_observer, nullptr));
|
||||
rtc::scoped_refptr<SetRemoteSdpObserverJni> observer(
|
||||
new rtc::RefCountedObject<SetRemoteSdpObserverJni>(jni, j_observer));
|
||||
ExtractNativePC(jni, j_pc)->SetRemoteDescription(
|
||||
observer, JavaToNativeSessionDescription(jni, j_sdp).release());
|
||||
JavaToNativeSessionDescription(jni, j_sdp), observer);
|
||||
}
|
||||
|
||||
static void JNI_PeerConnection_RestartIce(JNIEnv* jni,
|
||||
|
||||
@ -47,24 +47,34 @@ void CreateSdpObserverJni::OnFailure(webrtc::RTCError error) {
|
||||
NativeToJavaString(env, error.message()));
|
||||
}
|
||||
|
||||
SetSdpObserverJni::SetSdpObserverJni(
|
||||
SetLocalSdpObserverJni::SetLocalSdpObserverJni(
|
||||
JNIEnv* env,
|
||||
const JavaRef<jobject>& j_observer,
|
||||
std::unique_ptr<MediaConstraints> constraints)
|
||||
: j_observer_global_(env, j_observer),
|
||||
constraints_(std::move(constraints)) {}
|
||||
const JavaRef<jobject>& j_observer)
|
||||
: j_observer_global_(env, j_observer) {}
|
||||
|
||||
SetSdpObserverJni::~SetSdpObserverJni() = default;
|
||||
|
||||
void SetSdpObserverJni::OnSuccess() {
|
||||
void SetLocalSdpObserverJni::OnSetLocalDescriptionComplete(RTCError error) {
|
||||
JNIEnv* env = AttachCurrentThreadIfNeeded();
|
||||
Java_SdpObserver_onSetSuccess(env, j_observer_global_);
|
||||
if (error.ok()) {
|
||||
Java_SdpObserver_onSetSuccess(env, j_observer_global_);
|
||||
} else {
|
||||
Java_SdpObserver_onSetFailure(env, j_observer_global_,
|
||||
NativeToJavaString(env, error.message()));
|
||||
}
|
||||
}
|
||||
|
||||
void SetSdpObserverJni::OnFailure(webrtc::RTCError error) {
|
||||
SetRemoteSdpObserverJni::SetRemoteSdpObserverJni(
|
||||
JNIEnv* env,
|
||||
const JavaRef<jobject>& j_observer)
|
||||
: j_observer_global_(env, j_observer) {}
|
||||
|
||||
void SetRemoteSdpObserverJni::OnSetRemoteDescriptionComplete(RTCError error) {
|
||||
JNIEnv* env = AttachCurrentThreadIfNeeded();
|
||||
Java_SdpObserver_onSetFailure(env, j_observer_global_,
|
||||
NativeToJavaString(env, error.message()));
|
||||
if (error.ok()) {
|
||||
Java_SdpObserver_onSetSuccess(env, j_observer_global_);
|
||||
} else {
|
||||
Java_SdpObserver_onSetFailure(env, j_observer_global_,
|
||||
NativeToJavaString(env, error.message()));
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace jni
|
||||
|
||||
@ -39,21 +39,28 @@ class CreateSdpObserverJni : public CreateSessionDescriptionObserver {
|
||||
std::unique_ptr<MediaConstraints> constraints_;
|
||||
};
|
||||
|
||||
class SetSdpObserverJni : public SetSessionDescriptionObserver {
|
||||
class SetLocalSdpObserverJni : public SetLocalDescriptionObserverInterface {
|
||||
public:
|
||||
SetSdpObserverJni(JNIEnv* env,
|
||||
const JavaRef<jobject>& j_observer,
|
||||
std::unique_ptr<MediaConstraints> constraints);
|
||||
~SetSdpObserverJni() override;
|
||||
SetLocalSdpObserverJni(JNIEnv* env, const JavaRef<jobject>& j_observer);
|
||||
|
||||
MediaConstraints* constraints() { return constraints_.get(); }
|
||||
~SetLocalSdpObserverJni() override = default;
|
||||
|
||||
void OnSuccess() override;
|
||||
void OnFailure(RTCError error) override;
|
||||
virtual void OnSetLocalDescriptionComplete(RTCError error) override;
|
||||
|
||||
private:
|
||||
const ScopedJavaGlobalRef<jobject> j_observer_global_;
|
||||
};
|
||||
|
||||
class SetRemoteSdpObserverJni : public SetRemoteDescriptionObserverInterface {
|
||||
public:
|
||||
SetRemoteSdpObserverJni(JNIEnv* env, const JavaRef<jobject>& j_observer);
|
||||
|
||||
~SetRemoteSdpObserverJni() override = default;
|
||||
|
||||
virtual void OnSetRemoteDescriptionComplete(RTCError error) override;
|
||||
|
||||
private:
|
||||
const ScopedJavaGlobalRef<jobject> j_observer_global_;
|
||||
std::unique_ptr<MediaConstraints> constraints_;
|
||||
};
|
||||
|
||||
} // namespace jni
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user