<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:Verdana
}
--></style>
</head>
<body class='hmmessage'>
<br><br><hr id="stopSpelling">



<style>
.ExternalClass .ecxhmmessage P
{padding:0px;}
.ExternalClass body.ecxhmmessage
{font-size:10pt;font-family:Verdana;}
</style>&nbsp;&nbsp; Hi All,<div>&nbsp;&nbsp;I am trying to write a sip application for audio/video &nbsp;call using codec PCMU and H.263.I&nbsp;negotiate&nbsp;the SDP parameter with kapanga(sip softphone) and then call the Live555 API for sending the H.263 video.But somehow on receiving the H.263 video stream, Kapnga shows&nbsp;"Bad marker" and "header damaged" on reception of H263 packet.</div><div>&nbsp;&nbsp;I&nbsp;negotiate&nbsp;with kapanga using "h263-1998" and payload type 105 .</div><div>Following is my code snippet for starting the video call:</div><div>(this is almost same what has been given in live555's test program)</div><div><br></div><div><div>int PlayVideo(char *ipAddr,int videoRtpPort,int videoRtcpPort)&nbsp;</div><div>{</div><div>&nbsp;&nbsp;// Begin by setting up our usage environment:</div><div>&nbsp;&nbsp;TaskScheduler* scheduler = BasicTaskScheduler::createNew();</div><div>&nbsp;&nbsp;env = BasicUsageEnvironment::createNew(*scheduler);</div><div><br></div><div>&nbsp;&nbsp;// Create 'groupsocks' for RTP and RTCP:</div><div>&nbsp;&nbsp;char const* destinationAddressStr</div><div>#ifdef USE_SSM</div><div>&nbsp;&nbsp; &nbsp;//= "10.0.8.32";</div><div>&nbsp;&nbsp;=ipAddr;</div><div>#else</div><div>&nbsp;&nbsp; &nbsp;= "239.255.42.42";</div><div>&nbsp;&nbsp;// Note: This is a multicast address. &nbsp;If you wish to stream using</div><div>&nbsp;&nbsp;// unicast instead, then replace this string with the unicast address</div><div>&nbsp;&nbsp;// of the (single) destination. &nbsp;(You may also need to make a similar</div><div>&nbsp;&nbsp;// change to the receiver program.)</div><div>#endif</div><div>&nbsp;&nbsp;const unsigned short rtpPortNum =videoRtpPort; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 8888;</div><div>&nbsp;&nbsp;const unsigned short rtcpPortNum = videoRtcpPort;</div><div>&nbsp;&nbsp;const unsigned char ttl = 255; // low, in case routers don't admin scope</div><div><br></div><div>&nbsp;&nbsp;struct in_addr destinationAddress;</div><div>&nbsp;&nbsp;destinationAddress.s_addr = our_inet_addr(destinationAddressStr);</div><div>&nbsp;&nbsp;const Port rtpPort(rtpPortNum);</div><div>&nbsp;&nbsp;const Port rtcpPort(rtcpPortNum);</div><div><br></div><div>&nbsp;&nbsp;Groupsock rtpGroupsock(*env, destinationAddress, rtpPort, ttl);</div><div>&nbsp;&nbsp;Groupsock rtcpGroupsock(*env, destinationAddress, rtcpPort, ttl);</div><div>#ifdef USE_SSM</div><div>&nbsp;&nbsp;rtpGroupsock.multicastSendOnly();</div><div>&nbsp;&nbsp;rtcpGroupsock.multicastSendOnly();</div><div>#endif</div><div><br></div><div>&nbsp;&nbsp;// Create a 'MPEG Video RTP' sink from the RTP 'groupsock':</div><div>&nbsp;&nbsp;//videoSink = MPEG1or2VideoRTPSink::createNew(*env, &amp;rtpGroupsock);</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;videoSink =H263plusVideoRTPSink::createNew(*env, &amp;rtpGroupsock,105);</div><div><br></div><div>&nbsp;&nbsp;// Create (and start) a 'RTCP instance' for this RTP sink:</div><div>&nbsp;&nbsp;const unsigned estimatedSessionBandwidth = 500; // in kbps; for RTCP b/w share</div><div>&nbsp;&nbsp;const unsigned maxCNAMElen = 100;</div><div>&nbsp;&nbsp;unsigned char CNAME[maxCNAMElen+1];</div><div>&nbsp;&nbsp;gethostname((char*)CNAME, maxCNAMElen);</div><div>&nbsp;&nbsp;CNAME[maxCNAMElen] = '\0'; // just in case</div><div>#ifdef IMPLEMENT_RTSP_SERVER</div><div>&nbsp;&nbsp;RTCPInstance* rtcp =</div><div>#endif</div><div><br></div><div>RTCPInstance::createNew(*env, &amp;rtcpGroupsock,</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;estimatedSessionBandwidth, CNAME,</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;videoSink, NULL /* we're a server */, isSSM);</div><div>&nbsp;&nbsp;// Note: This starts RTCP running automatically</div><div><br></div><div>#ifdef IMPLEMENT_RTSP_SERVER</div><div>&nbsp;&nbsp;RTSPServer* rtspServer = RTSPServer::createNew(*env);</div><div>&nbsp;&nbsp;// Note that this (attempts to) start a server on the default RTSP server</div><div>&nbsp;&nbsp;// port: 554. &nbsp;To use a different port number, add it as an extra</div><div>&nbsp;&nbsp;// (optional) parameter to the "RTSPServer::createNew()" call above.</div><div>&nbsp;&nbsp;if (rtspServer == NULL) {</div><div>&nbsp;&nbsp; &nbsp;*env &lt;&lt; "Failed to create RTSP server: " &lt;&lt; env-&gt;getResultMsg() &lt;&lt; "\n";</div><div>&nbsp;&nbsp; &nbsp;exit(1);</div><div>&nbsp;&nbsp;}</div><div>&nbsp;&nbsp;ServerMediaSession* sms</div><div>&nbsp;&nbsp; &nbsp;= ServerMediaSession::createNew(*env, "testStream", inputFileName,</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "Session streamed by \"testMPEG1or2VideoStreamer\"",</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; isSSM);</div><div>&nbsp;&nbsp;sms-&gt;addSubsession(PassiveServerMediaSubsession::createNew(*videoSink, rtcp));</div><div>&nbsp;&nbsp;rtspServer-&gt;addServerMediaSession(sms);</div><div><br></div><div>&nbsp;&nbsp;char* url = rtspServer-&gt;rtspURL(sms);</div><div>&nbsp;&nbsp;*env &lt;&lt; "Play this stream using the URL \"" &lt;&lt; url &lt;&lt; "\"\n";</div><div>&nbsp;&nbsp;delete[] url;</div><div>#endif</div><div><br></div><div>&nbsp;&nbsp;// Finally, start the streaming:</div><div>&nbsp;&nbsp;*env &lt;&lt; "Beginning streaming...\n";</div><div>&nbsp;&nbsp;play();</div><div><br></div><div>&nbsp;&nbsp;env-&gt;taskScheduler().doEventLoop(); // does not return</div><div><br></div><div>&nbsp;&nbsp;return 0; // only to prevent compiler warning</div><div>}</div></div><div><br></div><div>I am also attaching the media file which I am using for streaming.</div><div>Can anyone please help me for pointing out the issue ?</div><div><br></div><div>Best Regards,</div><div>Parveen Jain</div><div><br></div>                                               <br><hr>Build a bright career through MSN Education <a href="http://education.in.msn.com/">Sign up now.</a>                                               <br /><hr />Manage your finance and manage money through MSN Money Special <a href='http://news.in.msn.com/moneyspecial/' target='_new'>Drag n' drop</a></body>
</html>