\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
\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