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}
diff --git a/sdk/android/api/org/webrtc/RtpSender.java b/sdk/android/api/org/webrtc/RtpSender.java
index b78bbf6..2d0bc6c 100644
--- a/sdk/android/api/org/webrtc/RtpSender.java
+++ b/sdk/android/api/org/webrtc/RtpSender.java
@@ -12,6 +12,7 @@
 
 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 @@
     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 @@
   private static native String nativeGetId(long rtpSender);
 
   private static native void nativeSetFrameEncryptor(long rtpSender, long nativeFrameEncryptor);
+
+  private static native String nativeGetMediaType(long rtpSender);
 };
diff --git a/sdk/android/src/jni/pc/rtp_sender.cc b/sdk/android/src/jni/pc/rtp_sender.cc
index 233a353..fc83862 100644
--- a/sdk/android/src/jni/pc/rtp_sender.cc
+++ b/sdk/android/src/jni/pc/rtp_sender.cc
@@ -110,5 +110,15 @@
               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