]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
try to flag CNG frames MODOPAL-6
authorAnthony Minessale <anthony.minessale@gmail.com>
Tue, 21 Apr 2009 13:11:32 +0000 (13:11 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Tue, 21 Apr 2009 13:11:32 +0000 (13:11 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@13098 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/endpoints/mod_opal/mod_opal.cpp
src/mod/endpoints/mod_opal/mod_opal.h

index b41f0464882e7611743f9db92831cd9671e44afc..f6cf05f5ee531d5dfea7785706813ed456874e68 100644 (file)
@@ -24,6 +24,7 @@
 \r
 #include "mod_opal.h"\r
 #include <opal/patch.h>\r
+#include <opal/rtp/rtp.h>\r
 #include <h323/h323pdu.h>\r
 #include <h323/gkclient.h>\r
 \r
@@ -1354,16 +1355,33 @@ switch_status_t FSMediaStream::read_frame(switch_frame_t **frame, switch_io_flag
 \r
     //switch_core_timer_step(&m_switchTimer);\r
 \r
-    m_readFrame.buflen = m_readRTP.GetSize();\r
-    m_readFrame.data = m_readRTP.GetPayloadPtr();\r
-    m_readFrame.packet = m_readRTP.GetPointer();\r
-    m_readFrame.packetlen = m_readRTP.GetHeaderSize() + m_readFrame.datalen;\r
-    m_readFrame.payload = (switch_payload_t) m_readRTP.GetPayloadType();\r
-    m_readFrame.timestamp = m_readRTP.GetTimestamp();\r
-    m_readFrame.m = (switch_bool_t) m_readRTP.GetMarker();\r
-    m_readFrame.seq = m_readRTP.GetSequenceNumber();\r
-    m_readFrame.ssrc = m_readRTP.GetSyncSource();\r
-    m_readFrame.codec = m_switchCodec;\r
+    if (m_readFrame.payload == RTP_DataFrame::CN || m_readFrame.payload == RTP_DataFrame::Cisco_CN) {\r
+        m_readFrame.flags = SFF_CNG;\r
+    }\r
+\r
+    if (m_readFrame.flags & SFF_CNG) {\r
+        m_readFrame.buflen = sizeof(m_buf);\r
+        m_readFrame.data = m_buf;\r
+        m_readFrame.packet = NULL;\r
+        m_readFrame.packetlen = 0;\r
+        m_readFrame.timestamp = 0;\r
+        m_readFrame.m = SWITCH_FALSE;\r
+        m_readFrame.seq = 0;\r
+        m_readFrame.ssrc = 0;\r
+        m_readFrame.codec = m_switchCodec;\r
+    } else {\r
+        m_readFrame.buflen = m_readRTP.GetSize();\r
+        m_readFrame.data = m_readRTP.GetPayloadPtr();\r
+        m_readFrame.packet = m_readRTP.GetPointer();\r
+        m_readFrame.packetlen = m_readRTP.GetHeaderSize() + m_readFrame.datalen;\r
+        m_readFrame.payload = (switch_payload_t) m_readRTP.GetPayloadType();\r
+        m_readFrame.timestamp = m_readRTP.GetTimestamp();\r
+        m_readFrame.m = (switch_bool_t) m_readRTP.GetMarker();\r
+        m_readFrame.seq = m_readRTP.GetSequenceNumber();\r
+        m_readFrame.ssrc = m_readRTP.GetSyncSource();\r
+        m_readFrame.codec = m_switchCodec;\r
+    }\r
+\r
     *frame = &m_readFrame;\r
 \r
     return SWITCH_STATUS_SUCCESS;\r
index 8dc02ed4610a6e4edb02094429b63ab9bfed89b7..eef518ece0a55c01a91f783eaf0a7f826d8c9501 100644 (file)
@@ -252,6 +252,7 @@ class FSMediaStream:public OpalMediaStream {
     switch_timer_t *m_switchTimer;
     switch_codec_t *m_switchCodec;
     switch_frame_t m_readFrame;
+    unsigned char m_buf[SWITCH_RECOMMENDED_BUFFER_SIZE];
     RTP_DataFrame m_readRTP;
     bool m_callOnStart;
     uint32_t m_timeStamp;