<html><head><base href="x-msg://5566/"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; 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; "><div lang="ZH-CN" link="blue" vlink="purple" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div class="WordSection1" style="page: WordSection1; "><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; text-indent: 10.5pt; "><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">I want to subclass  RTSPServer and RTSPClient classes to extend my specific functions.</span></div></div></div></span></blockquote><div><br></div>I don't recommend trying to modify or 'extend' the RTSP protocol, because - if you do so - you will end up with a protocol that noone else will understand.  So, I'm not convinced that you need to subclass "RTSPClient" at all.</div><div><br></div><div>Note that 'custom' functionality can often be added to RTSP using the standard "GET_PARAMETER" and "SET_PARAMETER" commands, which you can send using the "RTSPClient::sendGetParameterCommand()" and "RTSPClient::sendSetParameterCommand()" functions - i.e., without making any modifications to "RTSPClient", or to the RTSP protocol in general.</div><div><br></div><div>See, for example</div><div><span class="Apple-tab-span" style="white-space:pre">    </span><a href="http://lists.live555.com/pipermail/live-devel/2011-January/013072.html">http://lists.live555.com/pipermail/live-devel/2011-January/013072.html</a></div><div><br></div><div><br></div><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; 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; "><div lang="ZH-CN" link="blue" vlink="purple" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div class="WordSection1" style="page: WordSection1; "><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; text-indent: 10.5pt; "><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">Also, when I want to add another video format to be processed by the server</span></div></div></div></span></blockquote><div><br></div>I think you mean "client" here.<div><br><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; 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; "><div lang="ZH-CN" link="blue" vlink="purple" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div class="WordSection1" style="page: WordSection1; "><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; text-indent: 10.5pt; "><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">, I found that I need to override the c</span><span lang="EN-US" style="font-family: 新宋体; color: rgb(1, 128, 129); background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: silver; ">eateSourceObjects</span><span lang="EN-US" style="font-family: 新宋体; color: teal; "> method to generate my specific RTPSource.</span></div></div></div></span></blockquote><div><br></div>That's correct.  However, the preferred mechanism for doing this is described in the comment that's near the top of the header file "liveMedia/include/MediaSession.hh" - i.e., the comment that begins:</div><div><span class="Apple-tab-span" style="white-space:pre">  /* NOTE: To support receiving your own custom RTP payload format, </span></div><div><span class="Apple-tab-span" style="white-space:pre">   </span>...</div><div><br></div><div><div><span class="Apple-style-span" style="border-collapse: separate; 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; "><div lang="ZH-CN" link="blue" vlink="purple" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div class="WordSection1" style="page: WordSection1; "><div style="text-indent: 0px; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; "><span lang="EN-US" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: silver; "><br></span></div><div style="text-indent: 0px; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; "><span lang="EN-US" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: silver; "><blockquote type="cite"><span class="Apple-style-span" style="border-collapse: separate; 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; "><div lang="ZH-CN" link="blue" vlink="purple" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div class="WordSection1" style="page: WordSection1; "><div style="margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; text-indent: 12pt; "><span lang="EN-US" style="font-family: 新宋体; color: teal; ">I wonder if I </span><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">want to subclass</span><span lang="EN-US" style="font-family: 新宋体; color: teal; "> </span><span lang="EN-US" style="font-size: 10.5pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125); ">RTSPServer and RTSPClient classes,  what is the minimum classes that I also need to subclass them to make it work? (RTSPClientSession, MediaSubSession, or …)</span></div></div></div></span></blockquote></span></div><div style="text-indent: 0px; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; "><span lang="EN-US" style="background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: silver; "><br></span></div><div style="text-indent: 0px; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; ">As I noted above, I don't think that you need to subclass "RTSPClient".  You will not need to subclass "RTSPServer" either, *unless* you want to extend the functionality of one or more of the standard RTSP commands - most likely "GET_PARAMETER" and/or "SET_PARAMETER", as noted above.  Again, for more information on how to do this, see</div><div style="text-indent: 0px; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; "><span class="Apple-tab-span" style="white-space:pre">      </span><a href="http://lists.live555.com/pipermail/live-devel/2011-January/013072.html">http://lists.live555.com/pipermail/live-devel/2011-January/013072.html</a></div><div style="text-indent: 0px; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; "><br></div><div style="text-indent: 0px; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; ">Also, if you want your server to stream from a new kind of data source - e.g., to stream from an input device, rather than from a file - then you will need to define your own subclass of "OnDemandServerMediaSubsession".  (I'm assuming here that you want to stream via unicast, rather than via multicast.)  This has been described several times on this mailing list, and in this FAQ entry:</div><div style="text-indent: 0px; margin-top: 0cm; margin-right: 0cm; margin-left: 0cm; margin-bottom: 0.0001pt; "><span class="Apple-tab-span" style="white-space:pre">        <a href="http://www.live555.com/liveMedia/faq.html#liveInput-unicast">http://www.live555.com/liveMedia/faq.html#liveInput-unicast</a></span></div></div></div></span></div></div><br><br><div apple-content-edited="true">
<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>