<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><blockquote type="cite"><div>Our device want to send both video and audio data to the our server <br>simultaneously, but I don't how many port I should use in server for <br>receive the video and audio data.<br><br>Should I send both the video and audio data to same port of the server? <br>Can the multiple RTPSources receive from same port for different media <br>type? Or I should separate the transfer channel, use 2 port in the <br>server side so it receive video and audio separately?<br></div></blockquote><div><br></div><div>If you're sending RTP/UDP packets for both audio and video streams, then you will need to two separate port numbers, and two separate "RTPSource" objects (at the receiver) to receive them.</div><div><br></div><br><blockquote type="cite"><div>The other question: Why the destructor of the "RTCPInstance" is <br>protected? No need for dynamically create this type object and manual <br>destroy it?<br></div></blockquote></div><br><div>All subclasses of "Medium" (which includes "RTCPInstance") have a protected constructor, to prevent objects of such classes from being allocated on the stack.  (We force all such objects to be heap-allocated, because that then makes it possible to define and implement subclasses of these classes, without having to recompile library code that uses the base class.)  Instead, all subclasses of "Medium" use a "createNew()" static function to create new objects of the class.</div><div><br></div><div>Similarly, subclasses of "Medium" also have a protected destructor, and we use the "Medium::close()" function to delete them.  Strictly speaking, though, I don't think this is necessary; we might be able to have public destructors instead.  (However, I think that having public destructors with protected constructors might cause warning messages for some compilers.)</div><br><br><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; ">Ross Finlayson<br>Live Networks, Inc.<br><a href="http://www.live555.com/">http://www.live555.com/</a></span></span>
</div>
<br></body></html>