Do not create DtmfSender for video sender.
On Android bindings, do not build a DtmfSender instance in a RtpSender if its video kind is Video. This will prevent showing an error when trying to access that DtmfSender instance that has no native reference Bug: webrtc:14680 Change-Id: Iba67a12cae8604c032915156b581af269f6ed265 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/283742 Commit-Queue: Sergey Silkin <ssilkin@webrtc.org> Reviewed-by: Sergey Silkin <ssilkin@webrtc.org> Cr-Commit-Position: refs/heads/main@{#38724}
This commit is contained in:
parent
d409621f28
commit
b05968e5ec
@ -12,6 +12,7 @@ package org.webrtc;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
import java.util.List;
|
||||
import org.webrtc.MediaStreamTrack;
|
||||
|
||||
/** Java wrapper for a C++ RtpSenderInterface. */
|
||||
public class RtpSender {
|
||||
@ -27,8 +28,12 @@ public class RtpSender {
|
||||
long nativeTrack = nativeGetTrack(nativeRtpSender);
|
||||
cachedTrack = MediaStreamTrack.createMediaStreamTrack(nativeTrack);
|
||||
|
||||
long nativeDtmfSender = nativeGetDtmfSender(nativeRtpSender);
|
||||
dtmfSender = (nativeDtmfSender != 0) ? new DtmfSender(nativeDtmfSender) : null;
|
||||
if (nativeGetMediaType(nativeRtpSender).equalsIgnoreCase(MediaStreamTrack.AUDIO_TRACK_KIND)) {
|
||||
long nativeDtmfSender = nativeGetDtmfSender(nativeRtpSender);
|
||||
dtmfSender = (nativeDtmfSender != 0) ? new DtmfSender(nativeDtmfSender) : null;
|
||||
} else {
|
||||
dtmfSender = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -143,4 +148,6 @@ public class RtpSender {
|
||||
private static native String nativeGetId(long rtpSender);
|
||||
|
||||
private static native void nativeSetFrameEncryptor(long rtpSender, long nativeFrameEncryptor);
|
||||
|
||||
private static native String nativeGetMediaType(long rtpSender);
|
||||
};
|
||||
|
||||
@ -110,5 +110,15 @@ static void JNI_RtpSender_SetFrameEncryptor(JNIEnv* jni,
|
||||
j_frame_encryptor_pointer)));
|
||||
}
|
||||
|
||||
static ScopedJavaLocalRef<jstring> JNI_RtpSender_GetMediaType(
|
||||
JNIEnv* jni,
|
||||
jlong j_rtp_sender_pointer) {
|
||||
cricket::MediaType media_type =
|
||||
reinterpret_cast<RtpSenderInterface*>(j_rtp_sender_pointer)->media_type();
|
||||
return media_type == cricket::MEDIA_TYPE_AUDIO
|
||||
? NativeToJavaString(jni, "audio")
|
||||
: NativeToJavaString(jni, "video");
|
||||
}
|
||||
|
||||
} // namespace jni
|
||||
} // namespace webrtc
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user