<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Windows CE Networking Team WebLog</title><link>http://blogs.msdn.com/b/cenet/</link><description>Windows CE Networking - from NDIS to TCP to SOAP to VOIP and everything in between.</description><dc:language>en-US</dc:language><generator>Telligent Evolution Platform Developer Build (Build: 5.6.50428.7875)</generator><item><title>Kerberos cannot resolve netapi32.dll in CE5.0 after QFE updates</title><link>http://blogs.msdn.com/b/cenet/archive/2008/05/16/kerberos-cannot-resolve-netapi32-dll-in-ce5-0-after-qfe-updates.aspx</link><pubDate>Fri, 16 May 2008 19:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8513825</guid><dc:creator>cenet</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=8513825</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2008/05/16/kerberos-cannot-resolve-netapi32-dll-in-ce5-0-after-qfe-updates.aspx#comments</comments><description>&lt;P&gt;If you install the recent CE 5.0 QFE's AND try to build Kerberos.dll, you will run into a bug that unfortunately was introduced in this QFE.&amp;nbsp; Check out customer thread alerting us to it &lt;A class="" href="http://groups.google.com/group/microsoft.public.windowsce.embedded/browse_thread/thread/7fcf17ca2210f18b/734ad43a17e0c8d7?lnk=st&amp;amp;q=late+bind+from+kerberos.dll+to+NETAPI32.dll#734ad43a17e0c8d7" mce_href="http://groups.google.com/group/microsoft.public.windowsce.embedded/browse_thread/thread/7fcf17ca2210f18b/734ad43a17e0c8d7?lnk=st&amp;amp;q=late+bind+from+kerberos.dll+to+NETAPI32.dll#734ad43a17e0c8d7"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Short summary is that customer is seeing:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;"Warning: Unable to do imports from kerberos.dll to NETAPI32.dll - will late bind"&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Root cause:&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;To fix a problem with how Kerberos resolves domain names (basically turning REDMOND domain into a DC controller mydomain-controllername.redmond.microsoft.com), Kerberos was changed to call into the official NetApi32 &lt;A class="" href="http://msdn.microsoft.com/en-us/library/aa450367.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa450367.aspx"&gt;DsGetDcName&lt;/A&gt;&amp;nbsp;instead of using a private interface.&amp;nbsp; This meant that kerberos has a dependency on Netapi32.dll being in the image which previously it did not.&amp;nbsp; Customers never think about dependency logic (or hardly ever) because Microsoft runs a large suite of tests to make sure that if component A relies on component B being in the image it explicitly sets it (Kerberos needing Netapi32 in this case) and we fix these issues before releasing the product.&lt;/P&gt;
&lt;P&gt;In this case, because it was a QFE we don't usually add dependencies like this, so we didn't catch the dependency prior to QFE release.&lt;/P&gt;
&lt;P&gt;The customer workaround is straightforward.&amp;nbsp; Basically set SYSGEN_NETAPI32=1 (I'm not sure what exactly this translates to in the IDE catalog, probably something like "Domain Discovery").&amp;nbsp; You only need to do this if you include Kerberos component, which most devices do not.&amp;nbsp; As near as I can tell, the only way you get kerberos is of course if you manually include it, or if you bring in the voipPhone local authentication plugin (SYSGEN_VOIPPHONE_LAP).&lt;/P&gt;
&lt;P&gt;We apologize for the inconvenience.&amp;nbsp; We're going to be releasing the same QFE effectively in CE6.0 and we will fixup the dependencies prior to releasing that QFE.&lt;/P&gt;
&lt;P&gt;John&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8513825" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+John+Spaith/">Author: John Spaith</category></item><item><title>Inspect incoming SIP headers in RTC CE 6.0 R2 release</title><link>http://blogs.msdn.com/b/cenet/archive/2008/05/13/inspect-incoming-sip-headers-in-rtc-ce-6-0-r2-release.aspx</link><pubDate>Tue, 13 May 2008 22:22:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8501346</guid><dc:creator>cenet</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=8501346</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2008/05/13/inspect-incoming-sip-headers-in-rtc-ce-6-0-r2-release.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;There are many scenarios where inspecting incoming SIP messages for custom headers is useful. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;Many servers add their custom headers for custom functionalities like custom ring tones, shared line functionality, privacy, etc. and hence having the ability to inspect incoming SIP messages is very useful. In CE 6.0 R2 release, RTC supports the capability of inspecting incoming SIP messages. &lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;The incoming SIP messages that can be inspected are those that generate an RTC EVENT. All Event interfaces can now be queried for the interface: &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb667060.aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCSIPEvent&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, which exposes the following g API:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;HRESULT GetSIPMessage(&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[out] &lt;/FONT&gt;&lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb821756.aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCSIPMessage&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; **&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;ppMessage&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;);&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;If the event indeed was generated because of an incoming SIP message, then the above API will return a valid &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb821756.aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCSIPMessage&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; interface, else the error RTC_E_NO_SIP_MESSAGE will be returned and the incoming pointer will be set to NULL in that case.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Interfaces that can be queried for &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb667060.aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCSIPEvent&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; are:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms775732(VS.85).aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCRegistrationStateChangeEvent&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms775794(VS.85).aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCSessionStateChangeEvent&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms775770(VS.85).aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCSessionOperationCompleteEvent&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms775653(VS.85).aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCMessagingEvent&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms775631(VS.85).aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCInfoEvent&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/ms775737(VS.85).aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCReInviteEvent&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa922184.aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCSessionReferStatusEvent&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa926566.aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCSessionReferredEvent&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa924990.aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCSubscriptionStateChangeEvent&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa925822.aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCSubscriptionNotificationEvent&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb667066.aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCUnsolicitedNotificationEvent&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb821733.aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCSessionConsultantReferredEvent&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb667075.aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCSessionNotificationEvent&lt;/FONT&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;A few examples of cases where RTC events are generated due to incoming SIP messages and for which, those incoming SIP messages can be inspected are:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;REGISTRATION success, registration failure response from the server, etc.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Incoming INVITEs for different types of RTC sessions, incoming INFO, MESSAGE types&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;3.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Incoming PRACK messages&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;4.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Incoming notifications for subscriptions&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;5.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Etc.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8501346" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+Rajesh+Khetan/">Author: Rajesh Khetan</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Real+Time+Communication/">Real Time Communication</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/RTC/">RTC</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/VOIP/">VOIP</category></item><item><title>Adding custom SIP headers using RTC, in CE 6.0 R2 release.</title><link>http://blogs.msdn.com/b/cenet/archive/2008/05/13/adding-custom-sip-headers-using-rtc-in-ce-6-0-r2-release.aspx</link><pubDate>Tue, 13 May 2008 18:09:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8500509</guid><dc:creator>cenet</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=8500509</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2008/05/13/adding-custom-sip-headers-using-rtc-in-ce-6-0-r2-release.aspx#comments</comments><description>&lt;H1 style="MARGIN: 24pt 0in 0pt"&gt;&lt;FONT face=Cambria color=#365f91 size=5&gt;Adding custom SIP headers using RTC, in CE 6.0 R2 release.&lt;/FONT&gt;&lt;/H1&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;In CE 6.0 R2, RTC now supports the capability of adding custom headers to outgoing REQUEST messages, for RTC sessions and RTC subscriptions. Here is how once can do it.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;After CE 6.0 R2 release, &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa921716.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa921716.aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCSession&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; interface and &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa921917.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa921917.aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCSubscription&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; can now be queried for the interface: &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb821711.aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb821711.aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCSIPObject&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;. This interface supports the following 2 functions:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;HRESULT SetAdditionalHeaderValues(&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[in]&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;BSTR&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;bstrHeaderValuePairs&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;);&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;HRESULT GetAdditionalHeaderValues(&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[out]&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;BSTR*&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;pbstrHeaderValuePairs&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;);&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb667116.aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb667116.aspx"&gt;&lt;FONT face=Calibri size=3&gt;SetAdditionalHeaderValues&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; function can be used to add additional custom headers to outgoing REQUEST style messages, of the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa921716.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa921716.aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCSession&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; and &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa921917.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa921917.aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCSubscription&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, on which it gets called. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;So, in case of &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa921716.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa921716.aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCSession&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, those messages would be:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 0.5in"&gt;&lt;FONT face=Calibri size=3&gt;INVITE, PRACK(in case PRACK is supported) and final ACK during session setup or mid –session(for cases like Hold).&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt 0.5in"&gt;&lt;FONT face=Calibri size=3&gt;CANCEL or BYE message when the session is cancelled or terminated.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;In case of &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/aa921917.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa921917.aspx"&gt;&lt;FONT face=Calibri size=3&gt;IRTCSubscription&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;, the message will be SUBCRIBE.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;To stop sending custom headers, &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb667116.aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb667116.aspx"&gt;&lt;FONT face=Calibri size=3&gt;SetAdditionalHeaderValues&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; can be called again with a NULL value.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb667110.aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb667110.aspx"&gt;&lt;FONT face=Calibri size=3&gt;GetAdditionalHeaderValues&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; API can be used to get back the header pair value string that is set by the &lt;/FONT&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/bb667116.aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb667116.aspx"&gt;&lt;FONT face=Calibri size=3&gt;SetAdditionalHeaderValues&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt; API.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Note:&lt;/B&gt; These APIs give direct control in modifying outgoing SIP messages and hence should be used with &lt;B style="mso-bidi-font-weight: normal"&gt;“extreme”&lt;/B&gt; caution. RTC &lt;B style="mso-bidi-font-weight: normal"&gt;does not&lt;/B&gt; validate the contents of the custom headers added, &lt;B style="mso-bidi-font-weight: normal"&gt;nor does&lt;/B&gt; it check the format of these custom headers. Adding improper custom header values can cause the remote side of the RTC session or subscription to reject SIP messages, which can lead to unexpected application behavior. &lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8500509" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+Rajesh+Khetan/">Author: Rajesh Khetan</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Real+Time+Communication/">Real Time Communication</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/RTC/">RTC</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/VOIP/">VOIP</category></item><item><title>Old Man Spaith is out of ideas</title><link>http://blogs.msdn.com/b/cenet/archive/2008/03/09/old-man-spaith-is-out-of-ideas.aspx</link><pubDate>Mon, 10 Mar 2008 01:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8119092</guid><dc:creator>cenet</dc:creator><slash:comments>12</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=8119092</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2008/03/09/old-man-spaith-is-out-of-ideas.aspx#comments</comments><description>&lt;P&gt;I just checked out the blog and realized it's been ~1.5 months since the last post, which is lame.&amp;nbsp; I have a dilemna since I've run out of tricks/advice that I think are useful, for now at least.&amp;nbsp; I&amp;nbsp;can either write nothing or do something random, like put up a picture of my dog, Daisy.&amp;nbsp; It never would've occurred to me to do this, even in desperation for posts, on what I think of as a work-blog&amp;nbsp;until I checked out the main feed at blogs.msdn.com.&amp;nbsp; I was amazed at the number of personal, totally random, stuff up there.&lt;/P&gt;
&lt;P&gt;My compromise is that I'll just link to pictures of Daisy rather than wasting bandwidth for people here for work.&amp;nbsp;&amp;nbsp;So check out&amp;nbsp;&lt;A class="" href="http://my.spaith.com/blog/2007/12/18/a-toastmasters-best-friend/" mce_href="http://my.spaith.com/blog/2007/12/18/a-toastmasters-best-friend/"&gt;Daisy Spaith&lt;/A&gt; on my &lt;A class="" href="http://my.spaith.com/" mce_href="http://my.spaith.com"&gt;Toastmasters blog&lt;/A&gt;, &lt;A class=""&gt;www.mySpaith.com&lt;/A&gt;.&amp;nbsp; (I guess given MS investment in Facebook I should've named SpaithBook, but I put it up before that and mySpaith is better anyway.)&lt;/P&gt;
&lt;P&gt;I wish I could say we had made CE networking technologies so easy and awesome for our developers that we could turn the CENet blog into the "dogs of the CE Networking team" site.&amp;nbsp; We know we're not there yet.&amp;nbsp; Please keep the questions coming in the newsgroups and we'll do our best to help.&amp;nbsp; Thanks for your continued support through the years.&amp;nbsp; I'll try to come up with better stuff so we can avoid the self-indulgent posts like this I promise.&lt;/P&gt;
&lt;P&gt;-- Old Man Spaith (just turned 31, it's down hill from here)&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8119092" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+John+Spaith/">Author: John Spaith</category></item><item><title>Problems building svsutil.hxx in Windows Mobile SDK</title><link>http://blogs.msdn.com/b/cenet/archive/2008/01/22/problems-building-svsutil-hxx-in-windows-mobile-sdk.aspx</link><pubDate>Tue, 22 Jan 2008 19:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7199595</guid><dc:creator>cenet</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=7199595</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2008/01/22/problems-building-svsutil-hxx-in-windows-mobile-sdk.aspx#comments</comments><description>&lt;P&gt;If you try to build &lt;A class="" href="http://blogs.msdn.com/cenet/archive/2005/06/14/429004.aspx" mce_href="http://blogs.msdn.com/cenet/archive/2005/06/14/429004.aspx"&gt;svsutil.hxx&lt;/A&gt; on certain versions of the Windows Mobile SDK, you may run into build errors.&amp;nbsp; I know it's on WM5 SDK at a minimum, I don't know about WM6 SDK.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The error you'll see will complain about the methods int operator==(int iBit) and int operator==(SVSBitField &amp;amp;bf) in the class SVSBitField in particular.&amp;nbsp; What happened is that the compiler got a bit more picky at some point but the SDK headers weren't updated to reflect this in the given SDK version.&amp;nbsp; We have fixed this in latest &amp;amp; greatest svsutil.hxx.&lt;/P&gt;
&lt;P&gt;If you run into this, what you'll need to do is change the initial&lt;BR&gt;&amp;nbsp;&amp;nbsp;for (int i = 0 ; i &amp;lt; m_iWLength - 1 ; ++i) {&lt;BR&gt;&lt;/P&gt;
&lt;P align=left&gt;So that the 'int i' is outside the for loop, namely:&lt;/P&gt;
&lt;P align=left&gt;&amp;nbsp;&amp;nbsp;int i;&lt;BR&gt;&amp;nbsp;&amp;nbsp;for (i = 0 ; i &amp;lt; m_iWLength - 1 ; ++i) {&lt;BR&gt;&lt;/P&gt;
&lt;P align=left&gt;Our apologies to anyone who hits this.&lt;/P&gt;
&lt;P align=left&gt;John&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7199595" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+John+Spaith/">Author: John Spaith</category></item><item><title>Controlling VOIP interfaces on Windows Mobile devices</title><link>http://blogs.msdn.com/b/cenet/archive/2008/01/16/controlling-voip-interfaces-on-windows-mobile-devices.aspx</link><pubDate>Wed, 16 Jan 2008 23:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7134584</guid><dc:creator>cenet</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=7134584</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2008/01/16/controlling-voip-interfaces-on-windows-mobile-devices.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;RTC 1.5 can be restricted to use only certain types of interfaces (Wifi, Ethernet, etc.) on Windows Mobile devices. Same restriction cannot be applied on Windows CE, as RTC uses connection manager functionality to do that, which is not available on Windows CE.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;RTC can be restricted using the following reg keys. These reg keys need to be set before RTC gets initialized.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;HKLM\Comm\RTC\AdapterTypes&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;One can list all the allowed interfaces as numerical keys:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;e.g. &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;3&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ETC.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;The value of each key should be an ORed value of the connection manager interface type and sub-type&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;e.g. If one wants to allow Ethernet interface only. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;The connection manager interface type to use will be CM_CONNTYPE_NIC (0x2)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;The connection manager sub-interface type to use will be CM_CONNSUBTYPE_NIC_ETHERNET (0x1)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;The Ored value = (0x2 &amp;lt;&amp;lt; 16) | 0x1 = 0x20001&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;So the reg key will look like:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;HKLM\Comm\RTC\AdapterTypes\1 (DWORD with value 0x2001)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;Similarly, if Wifi is &lt;B&gt;also&lt;/B&gt; desired, &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;The connection manager interface type to use will be CM_CONNTYPE_NIC (0x2)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;The connection manager sub-interface type to use will be CM_CONNSUBTYPE_NIC_WIFI (0x2)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;The ored value&amp;nbsp; = 0x2 &amp;lt;&amp;lt; 16 | 0x2 = 0x20002&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;So the reg keys will look like:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT color=#1f497d&gt;&lt;FONT face=Calibri&gt;HKLM\Comm\RTC\AdapterTypes\1 (DWORD with value 0x2001) &lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: Wingdings"&gt;ß&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; for Ethernet&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT color=#1f497d&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2(DWORD with value 0x2002) &lt;/FONT&gt;&lt;SPAN style="FONT-FAMILY: Wingdings"&gt;ß&lt;/SPAN&gt;&lt;FONT face=Calibri&gt; For Wifi&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7134584" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+Rajesh+Khetan/">Author: Rajesh Khetan</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Real+Time+Communication/">Real Time Communication</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/RTC/">RTC</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/VOIP/">VOIP</category></item><item><title>Pluggable video codec for RTC 1.5 stack</title><link>http://blogs.msdn.com/b/cenet/archive/2008/01/14/pluggable-video-codec-for-rtc-1-5-stack.aspx</link><pubDate>Tue, 15 Jan 2008 02:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7113173</guid><dc:creator>cenet</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=7113173</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2008/01/14/pluggable-video-codec-for-rtc-1-5-stack.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; TEXT-ALIGN: center" align=center&gt;&lt;A class="" title=_Toc169667872 name=_Toc169667872&gt;&lt;/A&gt;&lt;FONT face=Calibri size=3&gt;RTC 1.5 (CE 6.0 R 2 release) supports Point to Point Video calling. However, the stack does not ship any built-in video codecs. Instead it supports a pluggable video codec architecture through which, one can add their own video codecs.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;Below are the steps one needs to take to plug-in a video codec into the RTC stack.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Implement your video codec in form of a DShow filter. Here is a MSDN link that explains &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms788163(VS.85).aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms788163(VS.85).aspx"&gt;&lt;FONT color=#800080&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;How to write a DShow filter&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;On the device, set the following reg keys before RTC is initialized:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;HKEY_LOCAL_MACHINE\Comm\RTC\Video\Codecs\&amp;lt;key set#&amp;gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;*Note: &amp;lt;key set#&amp;gt; can be any name (e.g. 1,2,3 or codec name itself)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;FONT face=Calibri size=3&gt;*Note: For latest and up to date pluggable video codec reg keys listed below, please visit the MSDN link &lt;/FONT&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb667035.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb667035.aspx"&gt;&lt;FONT color=#800080&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;here&lt;/B&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt; .&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE class=MsoNormalTable style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BACKGROUND: #cccccc; MARGIN: auto auto auto 0.5in; BORDER-LEFT: medium none; WIDTH: 97%; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid #DDDDDD .5pt; mso-yfti-tbllook: 1184" cellSpacing=0 cellPadding=0 width="97%" border=1 class="MsoNormalTable"&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD class="" style="BORDER-RIGHT: #ece9d8 1pt inset; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8 1pt inset; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8 1pt inset; PADDING-TOP: 3pt; BORDER-BOTTOM: #c8cdde 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: inset windowtext .75pt; mso-border-bottom-alt: solid #C8CDDE .5pt" vAlign=bottom&gt;
&lt;P class=MsoNormal style="MARGIN: 3pt 0in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;SPAN style="COLOR: #000066; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Name &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #ece9d8 1pt inset; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8 1pt inset; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #c8cdde 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: inset windowtext .75pt; mso-border-bottom-alt: solid #C8CDDE .5pt; mso-border-left-alt: inset windowtext .75pt" vAlign=bottom&gt;
&lt;P class=MsoNormal style="MARGIN: 3pt 0in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;SPAN style="COLOR: #000066; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Type &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #ece9d8 1pt inset; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8 1pt inset; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #c8cdde 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: inset windowtext .75pt; mso-border-bottom-alt: solid #C8CDDE .5pt; mso-border-left-alt: inset windowtext .75pt" vAlign=bottom&gt;
&lt;P class=MsoNormal style="MARGIN: 3pt 0in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;SPAN style="COLOR: #000066; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Description &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1"&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #d5d5d3 1pt solid; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;EncoderFilter&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;REG_SZ&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;Specifies the COM CLSID of the encoding IBaseFilter.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.95pt; mso-yfti-irow: 2"&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #d5d5d3 1pt solid; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; HEIGHT: 14.95pt; mso-border-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;DecoderFilter&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; HEIGHT: 14.95pt; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;REG_SZ&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; HEIGHT: 14.95pt; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;Specifies the COM CLSID of the decoding IBaseFilter.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 15.85pt; mso-yfti-irow: 3"&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #d5d5d3 1pt solid; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; HEIGHT: 15.85pt; mso-border-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;DecoderMediaSubtype&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; HEIGHT: 15.85pt; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;REG_SZ&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; HEIGHT: 15.85pt; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;Specifies the media subtype GUID of the format of the incoming data. Examples of incoming data format include H263 and H264.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 4"&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #d5d5d3 1pt solid; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;CodecType&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;REG_SZ&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;Specifies the codec type. Always set the data to &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 12.5pt; LINE-HEIGHT: 115%; mso-fareast-font-family: 'MS Mincho'"&gt;&lt;FONT style="BACKGROUND-COLOR: #dddddd" color=#000066&gt;Filter&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;FONT face=Calibri size=3&gt;. There is no default value.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 28.45pt; mso-yfti-irow: 5"&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #d5d5d3 1pt solid; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; HEIGHT: 28.45pt; mso-border-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;CodecRank&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; HEIGHT: 28.45pt; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;REG_DWORD&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; HEIGHT: 28.45pt; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;Sets the relative priority of the codec. The data is an integer between 0 and 100. The highest priority is 0 and the lowest is 100.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 37.9pt; mso-yfti-irow: 6"&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #d5d5d3 1pt solid; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; HEIGHT: 37.9pt; mso-border-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;CodecName&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; HEIGHT: 37.9pt; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;REG_SZ&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; HEIGHT: 37.9pt; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;Specifies the name of the codec sent in the Session Description Protocol (SDP) payload. For example, the codec name could be &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 12.5pt; LINE-HEIGHT: 115%; mso-fareast-font-family: 'MS Mincho'"&gt;&lt;FONT style="BACKGROUND-COLOR: #dddddd" color=#000066&gt;H263-1998&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;FONT face=Calibri size=3&gt;. The name must contain fewer than 32 characters.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 7"&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #d5d5d3 1pt solid; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;PayloadType&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;REG_DWORD&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;Specifies the RTP payload type associated with the codec. For example …&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TR&gt;
&lt;TR style="HEIGHT: 14.05pt; mso-yfti-irow: 8; mso-yfti-lastrow: yes"&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #d5d5d3 1pt solid; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; HEIGHT: 14.05pt; mso-border-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;ClockRate&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; HEIGHT: 14.05pt; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;REG_DWORD&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; HEIGHT: 14.05pt; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;Indicates the clock rate of the codec as it appears in the &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 12.5pt; LINE-HEIGHT: 115%; mso-fareast-font-family: 'MS Mincho'"&gt;&lt;FONT style="BACKGROUND-COLOR: #dddddd" color=#000066&gt;a=rtpmap&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;FONT face=Calibri size=3&gt; line of the SDP . For many codecs the correct data is 90,000.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Note:&lt;/B&gt; If a codec needs to be represented by multiple payload types (as some codec do), then a separate key set needs to be added for each payload type. RTC supports plugging in a maximum of 7 such key sets (7 separate payload types).&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;3.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;If your codec supports custom codec properties, which needs to be negotiated through SDP using FMTP lines, then the codec can put its FMTP string in the following reg key:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 0.5in; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;HKEY_LOCAL_MACHINE\Comm\RTC\Video\Codecs\&amp;lt;key set#&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE class=MsoNormalTable style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BACKGROUND: #cccccc; MARGIN: auto auto auto 0.5in; BORDER-LEFT: medium none; WIDTH: 97%; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid #DDDDDD .5pt; mso-yfti-tbllook: 1184" cellSpacing=0 cellPadding=0 width="97%" border=1 class="MsoNormalTable"&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD class="" style="BORDER-RIGHT: #ece9d8 1pt inset; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8 1pt inset; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8 1pt inset; PADDING-TOP: 3pt; BORDER-BOTTOM: #c8cdde 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: inset windowtext .75pt; mso-border-bottom-alt: solid #C8CDDE .5pt" vAlign=bottom&gt;
&lt;P class=MsoNormal style="MARGIN: 3pt 0in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;SPAN style="COLOR: #000066; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Name &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #ece9d8 1pt inset; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8 1pt inset; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #c8cdde 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: inset windowtext .75pt; mso-border-bottom-alt: solid #C8CDDE .5pt; mso-border-left-alt: inset windowtext .75pt" vAlign=bottom&gt;
&lt;P class=MsoNormal style="MARGIN: 3pt 0in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;SPAN style="COLOR: #000066; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Type &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #ece9d8 1pt inset; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8 1pt inset; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #c8cdde 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: inset windowtext .75pt; mso-border-bottom-alt: solid #C8CDDE .5pt; mso-border-left-alt: inset windowtext .75pt" vAlign=bottom&gt;
&lt;P class=MsoNormal style="MARGIN: 3pt 0in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;SPAN style="COLOR: #000066; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Description &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1; mso-yfti-lastrow: yes"&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #d5d5d3 1pt solid; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;SDPFmtp&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;REG_SZ&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 0pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;Indicates the format specific parameters FMTP of the codec as it appears in the SDP &lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 12.5pt; LINE-HEIGHT: 115%; mso-fareast-font-family: 'MS Mincho'"&gt;&lt;FONT style="BACKGROUND-COLOR: #dddddd" color=#000066&gt;a=fmtp&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;FONT face=Calibri size=3&gt; line of the SDP. If &lt;B&gt;SDPFmtp&lt;/B&gt; is not set, no FMTP lines will be sent. &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;This data indicates only the parameters themselves. SDP automatically fills in the following text:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;CODE&gt;&lt;SPAN style="FONT-SIZE: 12.5pt; LINE-HEIGHT: 115%; mso-fareast-font-family: 'MS Mincho'"&gt;&lt;FONT style="BACKGROUND-COLOR: #dddddd" color=#000066&gt;a=fmtp:&amp;lt;RTP Payload Type #&amp;gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT style="BACKGROUND-COLOR: #dddddd" color=#000066&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;RTC will read the reg key during initialization, and will add it to the outgoing SDP as is, as FMTP properties of the codec. If no reg key is specified, no FMTP lines will get published in SDP for the codec.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;4.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;RTC also supports passing of incoming FMTP property string to the plugged in codec, so that the codec can make a decision if it supports those properties or not. The pluggable codec needs to implement the following interface: &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb667058.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb667058.aspx"&gt;&lt;FONT color=#800080&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;IRTCSDPValidator&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt; to accept incoming FMTP strings from the SDP. The following reg keys needs to be set for the codec, to let RTC know of the interface:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;HKEY_LOCAL_MACHINE\Comm\RTC\Video\SdpValidators&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE class=MsoNormalTable style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BACKGROUND: #cccccc; MARGIN: auto auto auto 36.6pt; BORDER-LEFT: medium none; WIDTH: 97%; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid #DDDDDD .5pt; mso-yfti-tbllook: 1184" cellSpacing=0 cellPadding=0 width="97%" border=1 class="MsoNormalTable"&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD class="" style="BORDER-RIGHT: #ece9d8 1pt inset; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8 1pt inset; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8 1pt inset; PADDING-TOP: 3pt; BORDER-BOTTOM: #c8cdde 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: inset windowtext .75pt; mso-border-bottom-alt: solid #C8CDDE .5pt" vAlign=bottom&gt;
&lt;P class=MsoNormal style="MARGIN: 3pt 0in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;SPAN style="COLOR: #000066; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Name &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #ece9d8 1pt inset; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8 1pt inset; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #c8cdde 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: inset windowtext .75pt; mso-border-bottom-alt: solid #C8CDDE .5pt; mso-border-left-alt: inset windowtext .75pt" vAlign=bottom&gt;
&lt;P class=MsoNormal style="MARGIN: 3pt 0in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;SPAN style="COLOR: #000066; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Type &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #ece9d8 1pt inset; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8 1pt inset; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #c8cdde 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: inset windowtext .75pt; mso-border-bottom-alt: solid #C8CDDE .5pt; mso-border-left-alt: inset windowtext .75pt" vAlign=bottom&gt;
&lt;P class=MsoNormal style="MARGIN: 3pt 0in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;SPAN style="COLOR: #000066; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Description &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1; mso-yfti-lastrow: yes"&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #d5d5d3 1pt solid; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&amp;lt;Codec Name&amp;gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;REG_SZ&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Specifies the CLSID that implements this object.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 10pt 0.5in"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN lang=IT style="mso-ansi-language: IT"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;e.g.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE class=MsoNormalTable style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BACKGROUND: #cccccc; MARGIN: auto auto auto 34.5pt; BORDER-LEFT: medium none; WIDTH: 96.06%; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid #DDDDDD .5pt; mso-yfti-tbllook: 1184" cellSpacing=0 cellPadding=0 width="96%" border=1 class="MsoNormalTable"&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD class="" style="BORDER-RIGHT: #ece9d8 1pt inset; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8 1pt inset; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8 1pt inset; WIDTH: 21.46%; PADDING-TOP: 3pt; BORDER-BOTTOM: #c8cdde 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: inset windowtext .75pt; mso-border-bottom-alt: solid #C8CDDE .5pt" vAlign=bottom width="21%"&gt;
&lt;P class=MsoNormal style="MARGIN: 3pt 0in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;SPAN style="COLOR: #000066; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Name &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #ece9d8 1pt inset; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8 1pt inset; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #c8cdde 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: inset windowtext .75pt; mso-border-bottom-alt: solid #C8CDDE .5pt; mso-border-left-alt: inset windowtext .75pt" vAlign=bottom&gt;
&lt;P class=MsoNormal style="MARGIN: 3pt 0in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;SPAN style="COLOR: #000066; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Description &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1; mso-yfti-lastrow: yes"&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #d5d5d3 1pt solid; WIDTH: 21.46%; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top width="21%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;H263-1998&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="COLOR: #000066; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Courier New'"&gt;{D018239F-4022-4c15-BC87-03CCADC1A4E3}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P style="MARGIN-LEFT: 0.5in; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;Note: &lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;An &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;/SPAN&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb667058.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb667058.aspx"&gt;&lt;FONT color=#800080&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;IRTCSDPValidator&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;registry value is not required. If a codec does not implement this registry key, the codec accepts all SDP.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 0.5in; VERTICAL-ALIGN: top; TEXT-INDENT: -0.25in; LINE-HEIGHT: 140%; mso-list: l0 level1 lfo1"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;&lt;SPAN style="mso-list: Ignore"&gt;5.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;Implement interfaces that allow adding and removing custom RTP headers.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 0.5in; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;RTC uses RTP as the media transport protocol for video. RTP allows adding codec specific headers for each RTP payload. Since this header is codec specific, RTC provides a mechanism so that pluggable codecs can add/remove these custom RTP headers during the encode/decode process.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 0.5in; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;Implement the interface &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb667057.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb667057.aspx"&gt;&lt;FONT color=#800080&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;IRTCPluggableVideoEncoder&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt; to add custom RTP header and the interface &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb821713.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb821713.aspx"&gt;&lt;FONT color=#333399&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;IRTCPluggableVideoDecoder&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt; to remove custom RTP headers. Publish these interfaces in the reg key:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 0.5in; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;HKEY_LOCAL_MACHINE\Comm\RTC\Video\Codecs\&amp;lt;key set#&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;TABLE class=MsoNormalTable style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BACKGROUND: #cccccc; MARGIN: auto auto auto 39pt; BORDER-LEFT: medium none; WIDTH: 89.4%; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid #DDDDDD .5pt; mso-yfti-tbllook: 1184" cellSpacing=0 cellPadding=0 width="89%" border=1 class="MsoNormalTable"&gt;
&lt;TBODY&gt;
&lt;TR style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;TD class="" style="BORDER-RIGHT: #ece9d8 1pt inset; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8 1pt inset; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8 1pt inset; WIDTH: 9.6%; PADDING-TOP: 3pt; BORDER-BOTTOM: #c8cdde 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: inset windowtext .75pt; mso-border-bottom-alt: solid #C8CDDE .5pt" vAlign=bottom width="9%"&gt;
&lt;P class=MsoNormal style="MARGIN: 3pt 0in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;SPAN style="COLOR: #000066; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Name &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #ece9d8 1pt inset; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8 1pt inset; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #c8cdde 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: inset windowtext .75pt; mso-border-bottom-alt: solid #C8CDDE .5pt; mso-border-left-alt: inset windowtext .75pt" vAlign=bottom&gt;
&lt;P class=MsoNormal style="MARGIN: 3pt 0in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;SPAN style="COLOR: #000066; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Type &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #ece9d8 1pt inset; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8 1pt inset; PADDING-LEFT: 3pt; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #c8cdde 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: inset windowtext .75pt; mso-border-bottom-alt: solid #C8CDDE .5pt; mso-border-left-alt: inset windowtext .75pt" vAlign=bottom&gt;
&lt;P class=MsoNormal style="MARGIN: 3pt 0in; LINE-HEIGHT: normal"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;B&gt;&lt;SPAN style="COLOR: #000066; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Description &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 1"&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #d5d5d3 1pt solid; WIDTH: 9.6%; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top width="9%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;EncoderPlugin&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;REG_SZ&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;Specifies the COM CLSID of the &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb667057.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb667057.aspx"&gt;&lt;FONT color=#800080&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;IRTCPluggableVideoEncoder&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt; interface. Set H.263 to {A7D8A6EF-575B-4750-A727-04234A70D9DE} to use the Microsoft provided implementation of this interface. Set H.264 to {92A200F8-0981-11DC-813E-B77255D89593} to use the Microsoft provided implementation of this interface.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TR&gt;
&lt;TR style="mso-yfti-irow: 2; mso-yfti-lastrow: yes"&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #d5d5d3 1pt solid; WIDTH: 9.6%; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top width="9%"&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B&gt;DecoderPlugin&lt;/B&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;REG_SZ&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;
&lt;TD class="" style="BORDER-RIGHT: #cccccc 1pt solid; PADDING-RIGHT: 3pt; BORDER-TOP: #ece9d8; PADDING-LEFT: 3pt; BACKGROUND: white; PADDING-BOTTOM: 3pt; BORDER-LEFT: #ece9d8; PADDING-TOP: 3pt; BORDER-BOTTOM: #d5d5d3 1pt solid; mso-border-alt: solid #D5D5D3 .5pt; mso-border-left-alt: solid #D5D5D3 .5pt; mso-border-top-alt: solid #D5D5D3 .5pt; mso-border-right-alt: solid #CCCCCC .25pt" vAlign=top&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0.6pt 10pt"&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;Specifies the COM CLSID of the &lt;/FONT&gt;&lt;/SPAN&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb821713.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb821713.aspx"&gt;&lt;FONT color=#333399&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;IRTCPluggableVideoDecoder&lt;/SPAN&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt; interface. Set H.263 to {0CE193DF-27F0-48c7-92F7-75CA7A5965E6} to use the Microsoft provided implementation of this interface. Set H.264 to {86546C00-0981-11DC-88BE-AE7255D89593} to use the Microsoft provided implementation of this interface.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;SPAN style="mso-bookmark: _Toc169667872"&gt;&lt;/SPAN&gt;
&lt;P style="MARGIN-LEFT: 0.5in; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="FONT-SIZE: 9pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;*Note: The Microsoft implementation of the above interfaces for H263 and H264 video codecs can be found at CE OS installation location: public\fp_voip\oak\codecs\H263Parse and public\fp_voip\oak\codecs\H264Parse respectively.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 0.5in; VERTICAL-ALIGN: top; LINE-HEIGHT: 140%"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;Now that we know how to write a pluggable video codec and add it to RTC, let’s see how RTC will use the codec and all other interfaces by the codec module:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 0.75in; VERTICAL-ALIGN: top; TEXT-INDENT: -0.25in; LINE-HEIGHT: 140%; mso-list: l1 level1 lfo2"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;&lt;SPAN style="mso-list: Ignore"&gt;1.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;As soon as RTCClient object is initialized, RTC goes through the &lt;B style="mso-bidi-font-weight: normal"&gt;all&lt;/B&gt; reg keys defined above to check for any pluggable video codecs. If the reg keys are set, RTC will check, verify and load the codec for future use. &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 0.75in; VERTICAL-ALIGN: top; TEXT-INDENT: -0.25in; LINE-HEIGHT: 140%; mso-list: l1 level1 lfo2"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;&lt;SPAN style="mso-list: Ignore"&gt;2.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;When a user makes an outgoing video using RTC, then:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 1.25in; VERTICAL-ALIGN: top; TEXT-INDENT: -0.25in; LINE-HEIGHT: 140%; mso-list: l1 level2 lfo2"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;&lt;SPAN style="mso-list: Ignore"&gt;a.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;All pluggable video codecs that are successfully loaded by RTC, will get published in the outgoing SDP.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 1.25in; VERTICAL-ALIGN: top; TEXT-INDENT: -0.25in; LINE-HEIGHT: 140%; mso-list: l1 level2 lfo2"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;&lt;SPAN style="mso-list: Ignore"&gt;b.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;If the codec has set the &lt;/SPAN&gt;&lt;B&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;SDPFmtp &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-weight: bold; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;reg key to specify its FMTP properties, then RTC will add that string in the outgoing SDP for the respective video codec.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 0.75in; VERTICAL-ALIGN: top; TEXT-INDENT: -0.25in; LINE-HEIGHT: 140%; mso-list: l1 level1 lfo2"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;&lt;SPAN style="mso-list: Ignore"&gt;3.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;When an incoming video call is received by RTC, then:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 1.25in; VERTICAL-ALIGN: top; TEXT-INDENT: -0.25in; LINE-HEIGHT: 140%; mso-list: l1 level2 lfo2"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;&lt;SPAN style="mso-list: Ignore"&gt;a.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;For each video codec published in the incoming SDP, RTC will try to match it with its plugged in codecs. If any of the codec name matches, then RTC checks to see if the codec implements &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb667058.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb667058.aspx"&gt;&lt;FONT color=#800080&gt;IRTCSDPValidator&lt;/FONT&gt;&lt;/A&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;interface. If it does, then RTC will call the &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; COLOR: black; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-weight: bold; mso-bidi-font-family: Arial; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb821701.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb821701.aspx"&gt;&lt;FONT color=#800080&gt;CheckAcceptableFmtp&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;function of the &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;interface with the incoming FMTP string, to let the codec check if it can support those properties. If the function returns S_OK, RTC considers that codec is capable of handling the incoming FMTP properties, and it proceeds with the call as usual. Any other return value is considered a failure. If there is no codec match, RTC will reject the call.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 1.25in; VERTICAL-ALIGN: top; TEXT-INDENT: -0.25in; LINE-HEIGHT: 140%; mso-list: l1 level2 lfo2"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;&lt;SPAN style="mso-list: Ignore"&gt;b.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;If the codec does not implement &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb667058.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb667058.aspx"&gt;&lt;FONT color=#800080&gt;IRTCSDPValidator&lt;/FONT&gt;&lt;/A&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;, then RTC assumes that the codec is capable of handling any incoming FMTP property, and will proceed with the call as usual (generally by triggering an event of an incoming video call)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 0.75in; VERTICAL-ALIGN: top; TEXT-INDENT: -0.25in; LINE-HEIGHT: 140%; mso-list: l1 level1 lfo2"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;&lt;SPAN style="mso-list: Ignore"&gt;4.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;Once the call has been established:&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 1.25in; VERTICAL-ALIGN: top; TEXT-INDENT: -0.25in; LINE-HEIGHT: 140%; mso-list: l1 level2 lfo2"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;&lt;SPAN style="mso-list: Ignore"&gt;a.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;During the encode process, RTC will call the appropriate filter APIs to encode the raw video frames. After that, RTC will call the &lt;/SPAN&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb667057.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb667057.aspx"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;FONT color=#800080&gt;IRTCPluggableVideoEncoder&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt; interface API to let the codec generate custom RTP header for the encoded frame. Please see the MSDN page for more details on the interface.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 1.25in; VERTICAL-ALIGN: top; TEXT-INDENT: -0.25in; LINE-HEIGHT: 140%; mso-list: l1 level2 lfo2"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;&lt;SPAN style="mso-list: Ignore"&gt;b.&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;During the decode process, RTC will first call the &lt;/SPAN&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb821713.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb821713.aspx"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;FONT color=#333399&gt;IRTCPluggableVideoDecoder&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt; interface API to let the interface extract the encoded frame from RTP payload. Once an entire encoded frame is extracted, RTC will then call the &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;filter APIs to decode the raw video frames&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;. Please see the MSDN page for more details on the interface.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P style="MARGIN-LEFT: 1.25in; VERTICAL-ALIGN: top; TEXT-INDENT: -0.25in; LINE-HEIGHT: 140%; mso-list: l1 level2 lfo2"&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 11pt; LINE-HEIGHT: 140%; FONT-FAMILY: 'Calibri','sans-serif'; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: JA"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7113173" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+Rajesh+Khetan/">Author: Rajesh Khetan</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Real+Time+Communication/">Real Time Communication</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/RTC/">RTC</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/VOIP/">VOIP</category></item><item><title>Sample Code for Local Audio Mixing using RTC 1.5 (CE 6.0 R2 Release)</title><link>http://blogs.msdn.com/b/cenet/archive/2008/01/09/sample-code-for-local-audio-mixing-using-rtc-1-5-ce-6-0-r2-release.aspx</link><pubDate>Thu, 10 Jan 2008 03:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7047194</guid><dc:creator>cenet</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=7047194</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2008/01/09/sample-code-for-local-audio-mixing-using-rtc-1-5-ce-6-0-r2-release.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Sample code for local audio mixing to achieve 3 way/N way calling. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;In CE 6.0 R2 release, RTC 1.5 started supporting local audio mixing. Local audio mixing can be enabled by using the flag RTCIF_ENABLE_GLOBAL_MEDIA_MIXING during RTCClient object initialization. Here is the code example (ignoring error handling):&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Initialize RTC to enable local media mixing:&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;hr =&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;CoInitializeEx(NULL, COINIT_MULTITHREADED);&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;hr = CoCreateInstance(CLSID_RTCClient,&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: 0.5in"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;NULL,&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: 0.5in"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;CLSCTX_INPROC_SERVER,&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: 0.5in"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;IID_IRTCClient,&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt 1in; TEXT-INDENT: 0.5in"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;(LPVOID *)&amp;amp;gpRTCClient );&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;IRTCClient2 *piRTC2 = NULL;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;hr = gpRTCClient-&amp;gt;QueryInterface(IID_IRTCClient2, (void**)&amp;amp;piRTC2);&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;hr = piRTC2-&amp;gt;InitializeEx(&lt;SPAN style="COLOR: red"&gt;RTCIF_ENABLE_GLOBAL_MEDIA_MIXING&lt;/SPAN&gt;);&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/SPAN&gt;Once media mixing is enabled, audio for all calls will be locally mixed. Consider the following example to see how 3-way /N way calling can be achieved:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 9pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Consider two audio calls between a caller (Endpoint 1) and two other callers (Endpoint 2 and 3). Without local media mixing, 2 and 3 can talk to 1, but not to each other on the existing calls. When local audio mixing is enabled on endpoint 1, endpoint 1 mixes the audio stream as described below, which will enable 3-way conferencing, and all three can talk to each other. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 13.5pt 13.2pt; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; mso-bidi-font-size: 11.0pt"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Endpoint 1 mixes its own audio (1) with the audio that it receives from endpoint 3 (3) and sends it to endpoint 2. Similarly, &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 13.5pt 13.2pt; TEXT-INDENT: -0.25in; LINE-HEIGHT: normal; mso-list: l0 level1 lfo1; tab-stops: list .5in"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: Symbol; mso-fareast-font-family: Symbol; mso-bidi-font-family: Symbol; mso-bidi-font-size: 11.0pt"&gt;&lt;SPAN style="mso-list: Ignore"&gt;·&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Endpoint 1 mixes its own audio (1) with the audio that it receives from endpoint 2 (2) and send it to endpoint 3. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 9pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;This way, endpoint 2 can listen to endpoint 3, and endpoint 3 can also listen to endpoint 2. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 9pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Since Endpoint 1 is the mixer, the conferencing is dependent on endpoint 1. If endpoint 1 disconnects any of the calls, then Endpoint 2&amp;amp; 3 won’t be able to talk to each other.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 9pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Here is a code example (ignoring error conditions for simplicity)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 9pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Establishing a 3 way call:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 9pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Step 1: Endpoint 1 Calling Endpoint 2&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;hr = gpRTCClient-&amp;gt;CreateSession(RTCST_PC_TO_PC, NULL, NULL, 0, &amp;amp;pSessionEndpoint2);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;if (SUCCEEDED(hr)) &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;hr = pSessionEndpoint2-&amp;gt;AddParticipant(bstrEndpoint2URI, bstrEndpoint2Name, NULL);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;After this, RTC will post a session connected event, once the call has been established between endpoin1 and endpoint 3.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 9pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Step 2: Endpoint 1 putting Endpoint 2 on Hold, before calling Endpoint 3&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;IRTCSessionCallControl* pSessionEndpoint2CallCtrl = NULL;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// Query for the IRTCSessionCallControl interface.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;HRESULT hr = pSessionEndpoint2-&amp;gt;QueryInterface (IID_IRTCSessionCallControl,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;(void**) &amp;amp; pSessionEndpoint2CallCtrl);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;hr = pSessionEndpoint2-&amp;gt;get_State(&amp;amp;enState);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;if(enState != RTCSS_CONNECTED)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ASSERT(0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// Handle error!!&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;pSessionEndpoint2CallCtrl-&amp;gt;Hold(lCookie);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 9pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto"&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Step 3: Endpoint 1 Calling Endpoint 3&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;hr = gpRTCClient-&amp;gt;CreateSession(RTCST_PC_TO_PC, NULL, NULL, 0, &amp;amp;pSessionEndpoint3);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;if (SUCCEEDED(hr)) &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;hr = pSessionEndpoint3-&amp;gt;AddParticipant(bstrEndpoint3URI, bstrEndpoint3Name, NULL);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 9pt; LINE-HEIGHT: normal; mso-margin-top-alt: auto"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;Step 4:&lt;/B&gt; &lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Endpoint 1 Unholds Endpoint 2 to establish 3 way conference&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;IRTCSessionCallControl* pSessionEndpoint2CallCtrl = NULL;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// Query for the IRTCSessionCallControl interface.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;HRESULT hr = pSessionEndpoint2-&amp;gt;QueryInterface (IID_IRTCSessionCallControl,&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;(void**) &amp;amp; pSessionEndpoint2CallCtrl);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;hr = pSessionEndpoint2-&amp;gt;get_State(&amp;amp;enState);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;if(enState != RTCSS_HOLD)&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;ASSERT(0);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;// Handle error!!&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;pSessionEndpoint2CallCtrl-&amp;gt;UnHold(lCookie);&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;After Step 4, all 3 endpoints can talk to each other. Please note that Step 2 and Step 4 (putting Endpoint 1 call on Hold and then UnHold) are optional steps. RTC 1.5 will allow making call to Endpoint 3 while call to Endpoint 2 is active. But this kind of calling is not normal in the telephony world.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;If Endpoint 1 wants to talk to Endpoint 2 exclusively, it can simply put Endpoint 3 call on Hold, and similarly it can put Endpoint 1 call on Hold if it wants to talk to Endpoint 3 exclusively.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;Also note that even though media is mixed for both calls, All APIs related to each call (like RTCSession and RTCParticipant APIs) will only act on the respective individual calls. For e.g. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Example 1:&lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt; pSessionEndpoint2-&amp;gt;Terminate(RTC_TERMINATE_REASON) will just disconnect Endpoint 2 and not Endpoint 3.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;Example 2: &lt;/SPAN&gt;&lt;/B&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;pPartEndpoint2-&amp;gt;SendDTMF(RTC_DTMF) will send DTMF tones only to Endpoint 2, and not to Endpoint 3, &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;etc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal"&gt;&lt;SPAN style="COLOR: black; mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;However, APIs like CRTCClient::put_Volume(RTC_AUDIO_DEVICE enDevice, long lVolume) will affect both calls.&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Thanks and happy coding!!&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7047194" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+Rajesh+Khetan/">Author: Rajesh Khetan</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Real+Time+Communication/">Real Time Communication</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/RTC/">RTC</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/VOIP/">VOIP</category></item><item><title>What is new in RTC 6.0 R2 release?</title><link>http://blogs.msdn.com/b/cenet/archive/2008/01/08/what-is-new-in-rtc-6-0-r2-release.aspx</link><pubDate>Wed, 09 Jan 2008 02:10:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7033786</guid><dc:creator>cenet</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=7033786</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2008/01/08/what-is-new-in-rtc-6-0-r2-release.aspx#comments</comments><description>&lt;P&gt;Following are the new features in RTC 6.0 R2 release:&lt;/P&gt;
&lt;P&gt;1. Local audio mixing capability (enabling 3 way VOIP calling)&lt;BR&gt;2. Point to Point Video Calls&lt;BR&gt;3. Pluggable Video Codec capability&lt;BR&gt;4. Ability to inspect SIP headers for certain SIP messages&lt;BR&gt;5. Ability to add custom headers to certain outgoing SIP Messages&lt;BR&gt;6. Attended Call Transfer facility&lt;BR&gt;7. Call Park/Pickup facility&lt;/P&gt;
&lt;P&gt;All the above features, except video, are available through VOIP default sysgen, i.e. SYSGEN_VOIP. Point to Point Video &lt;/P&gt;
&lt;P&gt;feature is selectable using SYSGEN_VOIP_VIDEO sysgen.&lt;/P&gt;
&lt;P&gt;As time permits, I and my team will blog out each feature in more details. &lt;/P&gt;
&lt;P&gt;For now, you can get some details about local audio mixing through the following link:&lt;BR&gt;&lt;A href="http://download.microsoft.com/download/0/7/4/0748b074-ed6c-461f-bcd0-e35d047bc1f8/Windows%20Embedded%20CE%206.0%20R2%20Release%20Notes.htm#WN7" mce_href="http://download.microsoft.com/download/0/7/4/0748b074-ed6c-461f-bcd0-e35d047bc1f8/Windows%20Embedded%20CE%206.0%20R2%20Release%20Notes.htm#WN7"&gt;http://download.microsoft.com/download/0/7/4/0748b074-ed6c-461f-bcd0-e35d047bc1f8/Windows%20Embedded%20CE%206.0%20R2%20Release%20Notes.htm#WN7&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Thanks and happy new year to all!!&lt;BR&gt;Rajesh&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7033786" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+Rajesh+Khetan/">Author: Rajesh Khetan</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Real+Time+Communication/">Real Time Communication</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/RTC/">RTC</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/VOIP/">VOIP</category></item><item><title>The History of the DCOM Remoting Addon Pack</title><link>http://blogs.msdn.com/b/cenet/archive/2008/01/08/the-history-of-the-dcom-remoting-addon-pack.aspx</link><pubDate>Wed, 09 Jan 2008 00:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7033124</guid><dc:creator>cenet</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=7033124</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2008/01/08/the-history-of-the-dcom-remoting-addon-pack.aspx#comments</comments><description>&lt;P&gt;I recently wrote about the recent &lt;A class="" href="http://blogs.msdn.com/cenet/archive/2008/01/04/dcom-remoting-on-windows-ce-6-0.aspx" mce_href="http://blogs.msdn.com/cenet/archive/2008/01/04/dcom-remoting-on-windows-ce-6-0.aspx"&gt;DCOM Remoting Addon pack being available&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Since I'm running out of things to write about, I'll explain the geeky details of how the DCOM addon pack came to be.&amp;nbsp; This post is for the very bored only or those who are intrigued by the Windows CE Build Process.&amp;nbsp; There are no profound insights on COM or any other subject, for that matter.&lt;/P&gt;
&lt;P&gt;First we had to figure out what to do with DCOM remoting.&amp;nbsp; We had to either re-port Windows Vista COM or else remove DCOM remoting from the product.&amp;nbsp; Even though CE is componentized and we could have warned that this component was insecure &amp;amp; should be avoided almost always, NT4 vintage DCOM was *so* insecure that this wasn't enough.&amp;nbsp; After all, how often do you click through the obnoxious warnings that software pops up?&lt;/P&gt;
&lt;P&gt;This was a no win situation.&amp;nbsp; Even if we wanted to spend the effort to re-port COM, the amount of time needed to do the work and then get it stable (think about how key COM is to the system) didn't allow us to go down this path.&amp;nbsp; At the same time we knew we had some OEMs who desperately needed DCOM remoting.&lt;/P&gt;
&lt;P&gt;So the Group Program Manager, who makes a lot more money than I do for good reason, helped push through the idea of an addon pack.&amp;nbsp; DCOM remoting would be available only in CE6 if you downloaded a separate product.&amp;nbsp; The addon pack made our security people happy.&amp;nbsp; Since you have to go to a website to get the bits, you can't accidentally click on some buttons and end up with it.&amp;nbsp; It also lets us warn you point blank on the download site what you're getting into in a way less likely to be missed than warning popup box #73.&lt;/P&gt;
&lt;P&gt;From the website:&lt;/P&gt;
&lt;P&gt;&amp;lt;&lt;BR&gt;"the component contains known MSRC class critical bulletins. Installing the supplemental pack ... is discouraged, and Microsoft assumes no liability if this pack is deployed."&lt;BR&gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;How does the DCOM addon pack work?&amp;nbsp; Ironically for all the time I spent in meetings discussing various aspects of it from biz/legal/security, the actual dev work was straightforward.&amp;nbsp; On NT4, DCOM has the concept of loadable transport DLL's to actually do the heavy lifting of talking to the transport layer.&amp;nbsp; rpcltscm.dll &amp;amp; rpcltscm.dll.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;The way PB builds MS doesn't ship these DLL's but instead rpcltscm.lib and rpcltscm.lib, and under the covers OEMs are building the DLL themselves.&amp;nbsp; We have config files that allow us to specify which files (in this case in public\dcom\oak\lib\&amp;lt;CPU&amp;gt;\...) are shipped out to customers.&amp;nbsp; So I changed the logic in them so that rpcltscm.lib &amp;amp; rpcltscm.lib were no longer shipped, even though they were still building.&amp;nbsp; I also changed a few configuration files to add some comments should some geek poke around the build and try to add the DLLs manually.&amp;nbsp; Check out public\dcom\oak\lib\(dcom.reg &amp;amp; dcom.bib) if you want to see Spaith's warnings.&lt;/P&gt;
&lt;P&gt;There was the extra step here of making sure that DCOM didn't have any direct calls to Winsock or other networking layer technology to do an end-round the transport DLL layer.&amp;nbsp; It doesn't.&amp;nbsp; I was impressed with the cleanliness of the design.&amp;nbsp; I anticipated whacking out winsock calls thrown all over the place and had given myself a lot more time on the schedule than I actually needed.&amp;nbsp; Of course a lot of other work that I underestimated ended up filling the free time I had!&lt;/P&gt;
&lt;P&gt;So the addon pack is basically just an MSI installer, various EULA's (the most important piece from a biz perspective), and the libraries.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;At the time of shipping this I joked about trying to get a ship-it award, which would be riduculous given that I hardly spent a few weeks on this.&amp;nbsp; (Other ship-its have taken me +1 year of work).&amp;nbsp; The Group PM said in all seriousness he'd try to make it happen, but I think it's best to let it drop.&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;John&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7033124" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+John+Spaith/">Author: John Spaith</category></item><item><title>DCOM Remoting on Windows CE 6.0</title><link>http://blogs.msdn.com/b/cenet/archive/2008/01/04/dcom-remoting-on-windows-ce-6-0.aspx</link><pubDate>Fri, 04 Jan 2008 23:53:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6983314</guid><dc:creator>cenet</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=6983314</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2008/01/04/dcom-remoting-on-windows-ce-6-0.aspx#comments</comments><description>&lt;P&gt;As I wrote &lt;A class="" href="http://blogs.msdn.com/cenet/archive/2006/11/29/dcom-demystified-kindof-on-ce-6.aspx" mce_href="http://blogs.msdn.com/cenet/archive/2006/11/29/dcom-demystified-kindof-on-ce-6.aspx"&gt;here&lt;/A&gt;, in Windows CE 6.0 we removed DCOM remoting - that is the ability to create and host COM objects across a network.&amp;nbsp; We did this due to security.&amp;nbsp; Our DCOM is built on NT4 vintage code and there was no way we could patch up our implementation to meet security requirements.&amp;nbsp; The desktop faced a similar problem post-NT4 and also came to the conclusion they couldn't do a patch up, so they had to redo lots of their DCOM.&lt;/P&gt;
&lt;P&gt;Note this is all embedded CE only - Windows Mobile &lt;A class="" href="http://blogs.msdn.com/cenet/archive/2006/10/27/why-doesn-t-windows-mobile-support-out-of-proc-com.aspx" mce_href="http://blogs.msdn.com/cenet/archive/2006/10/27/why-doesn-t-windows-mobile-support-out-of-proc-com.aspx"&gt;doesn't even have cross-proc COM objects&lt;/A&gt;, much less remoting.&lt;/P&gt;
&lt;P&gt;I'm happy to announce that an&amp;nbsp;add on&amp;nbsp;kit to CE6 is available &lt;A class="" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=6dadc411-f20a-4010-b504-b379832c3520&amp;amp;DisplayLang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=6dadc411-f20a-4010-b504-b379832c3520&amp;amp;DisplayLang=en"&gt;here&lt;/A&gt;&amp;nbsp;that will allow OEMs to get DCOM remoting in their image.&lt;/P&gt;
&lt;P&gt;As the docs call out but I will emphasize here, this is ONLY for completely closed networks.&amp;nbsp; I'm thinking of a factory floor as the main example (and they're the main ones who want this).&amp;nbsp; This is not safe for the Internet of course or anywhere that untrusted machines may get on a network due to security worries.&lt;/P&gt;
&lt;P&gt;While we can't make any official statements about future products on the blog, I'll say unofficially that we are most likely not going to be doing another remoting addon pack for Windows CE 7.0.&amp;nbsp; We wanted to provide some sort of stop gag solution as Web Services for Devices for instance (available in CE 6.0 R2) or other technologies become available.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6983314" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+John+Spaith/">Author: John Spaith</category></item><item><title>UTF-8 in ASP pages on Windows CE</title><link>http://blogs.msdn.com/b/cenet/archive/2007/12/14/utf-8-in-asp-pages-on-windows-ce.aspx</link><pubDate>Fri, 14 Dec 2007 22:53:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6772123</guid><dc:creator>cenet</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=6772123</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2007/12/14/utf-8-in-asp-pages-on-windows-ce.aspx#comments</comments><description>&lt;P&gt;My "stuff to blog about" well has pretty much run dry, as anyone who follows this blog knows.&amp;nbsp; Fortunately there's always a customer running into something that I've never thought about something to inspire me.&amp;nbsp; Bad for the poor customer hitting the issue, but good for the rest of us.&lt;/P&gt;
&lt;P&gt;A customer wasn't able to make ASP pages from CE Web Server work when the pages were UTF-8.&amp;nbsp; The same page had worked fine as ANSI.&amp;nbsp; The error they got was when setting &lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;&amp;lt;% Response.Expires = -1 %&amp;gt; in their page.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Consolas&gt;-----------------START&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Consolas size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Consolas&gt;The HTTP headers are already written to the client. HTTP header&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Consolas&gt;modifications must be made before writing page content&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Consolas size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Consolas&gt;ASP scripting compilation error: '80020009'&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Consolas size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Consolas&gt;Description:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Consolas size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Consolas&gt;In file: /Test/default.asp&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Consolas&gt;On line: 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Consolas size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Consolas&gt;-----------------END&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;ASP aficionados, can you guess what was happening?&lt;/P&gt;
&lt;P&gt;--&lt;/P&gt;
&lt;P&gt;What happens is UTF-8 puts special characters in the first bytes of a file indicating to an editor that it is UTF-8.&amp;nbsp; When our ASP interpreter parses out a page, it sees those UTF-8 characters and (unfortunately) doesn't know about UTF-8 and assumes its ASP body that needs to be sent out.&amp;nbsp; Once ASP body has been sent, you're not allowed to send HTTP headers anymore, which is why the Expires=-1 wasn't working.&lt;/P&gt;
&lt;P&gt;I had the customer remove the special bytes and also look into the &lt;SPAN style="FONT-SIZE: 11pt; FONT-FAMILY: 'Calibri','sans-serif'; mso-fareast-font-family: Calibri; mso-bidi-font-family: 'Times New Roman'; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-bidi; mso-ansi-language: EN-US; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;Response.Charset() to make sure the browser knew the encoding of the file (always a good idea with non-ANSI anyway).&lt;/SPAN&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6772123" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+John+Spaith/">Author: John Spaith</category></item><item><title>GPSID: Problem &amp; workaround on recent WM6 release</title><link>http://blogs.msdn.com/b/cenet/archive/2007/12/06/gpsid-problem-workaround-on-recent-wm6-release.aspx</link><pubDate>Thu, 06 Dec 2007 19:14:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6681436</guid><dc:creator>cenet</dc:creator><slash:comments>9</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=6681436</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2007/12/06/gpsid-problem-workaround-on-recent-wm6-release.aspx#comments</comments><description>&lt;P&gt;&lt;STRONG&gt;Background&lt;/STRONG&gt;&lt;BR&gt;A number of customers on a recent WM6 versions have run into a problem where GPSGetPosition returns ERROR_INVALID_PARAMETER always, even on apps that worked fine in the past.&amp;nbsp; The newsgroup thread is &lt;A class="" href="http://groups.google.com/group/microsoft.public.pocketpc.developer/browse_thread/thread/bba8645a7d9421a7/7387baa07060b0cb?lnk=st&amp;amp;q=%22WM5+to+WM6+GPSID+Problem+on+HTC+P3300%22#7387baa07060b0cb" mce_href="http://groups.google.com/group/microsoft.public.pocketpc.developer/browse_thread/thread/bba8645a7d9421a7/7387baa07060b0cb?lnk=st&amp;amp;q=%22WM5+to+WM6+GPSID+Problem+on+HTC+P3300%22#7387baa07060b0cb"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;The device I've reproed and tested on was an HTC P3300, but based on newsgroup thread I think other devices may have been affected also.&lt;/P&gt;
&lt;P&gt;I have determined the cause and a workaround for the problem.&amp;nbsp; It'll take a while to get a real fix, but we're working on that too.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Underlying Cause&lt;/STRONG&gt;&lt;BR&gt;In a future Windows Mobile, we're exposing extensions to the GPS_POSITION and GPS_DEVICE structures.&amp;nbsp; GPSID is actually aware of the extended structure already - in WM6 AKU0.4 &amp;amp; above, also known as 18120+ builds.&amp;nbsp; The reason being that GPS chips can do some "magic" with this stuff even before we actually expose the structures to app developers.&amp;nbsp; (It's a very long story, if you're not a GPS OEM you don't care.)&amp;nbsp; Because the structure is larger, it means the sizeof() checks on it have changed but sizeof(GPS_POSITION) that you're passing in has not changed because you're using the same GPS_POSITION as always.&amp;nbsp; The MS GPSID allows the old struct size for legacy.&lt;/P&gt;
&lt;P&gt;What complicates things is that OEMs are allowed to replace GPSID on their device, because they may want to tweak it in order to work with their GPS chips.&amp;nbsp; I don't have the source, but I'm almost positive what's happening is that an OEM GPSID is checking only against the extended GPS_POSITION size and hence is failing when it gets the original GPS_POSITION.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Workaround&lt;/STRONG&gt;&lt;BR&gt;Your application can lie about how big a structure it is passing in to worakround this.&amp;nbsp; So if your application gets ERROR_INVALID_PARAMETER, it can pass in the sizes of the new struct.&amp;nbsp; Here's code below.&amp;nbsp; I tested this with an HTC 3300 and was successfully able to get my lat/long using this.&amp;nbsp; GPSGetDeviceState has similar issue so I'm including code for it, too.&lt;/P&gt;
&lt;P&gt;// Retrieves GPS location data and prints it to the screen.&lt;BR&gt;void GetLocationAndPrint(HANDLE hGPS) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BYTE gpsPositionRaw[376];&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPS_POSITION *pGpsLocation = (GPS_POSITION*)gpsPositionRaw;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pGpsLocation-&amp;gt;dwVersion = GPS_VERSION_1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pGpsLocation-&amp;gt;dwSize&amp;nbsp;&amp;nbsp;&amp;nbsp; = sizeof(gpsPositionRaw);&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DWORD dw = GPSGetPosition(hGPS,pGpsLocation,1000,0);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (dw != ERROR_SUCCESS) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wprintf(L"GPSGetPosition() fails, GLE = 0x%08x\r\n",dw);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DebugBreak();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PrintGPSPosition(pGpsLocation);&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;void GetDeviceStateAndPrint(void) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BYTE gpsDeviceRaw[332];&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPS_DEVICE *pGpsDevice = (GPS_DEVICE *)gpsDeviceRaw;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pGpsDevice-&amp;gt;dwVersion = GPS_VERSION_1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; pGpsDevice-&amp;gt;dwSize = sizeof(gpsDeviceRaw);&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DWORD dw = GPSGetDeviceState(pGpsDevice);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (dw != ERROR_SUCCESS) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wprintf(L"GPSGetDeviceState() fails, GLE = 0x%08x\r\n",dw);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DebugBreak();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PrintGPSDeviceState(pGpsDevice);&lt;BR&gt;}&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Going Forward&lt;/STRONG&gt;&lt;BR&gt;This is clearly a stop-gag solution.&amp;nbsp; There's no way that we expect our customers to recompile existing apps for a new WM release, especially considering how hard it is to get applications signed/tested/deployed.&amp;nbsp; I have alerted the OEM to the problem and am coordinating with them on rolling out a fix.&amp;nbsp; I'll provide an update when I can.&lt;/P&gt;
&lt;P&gt;Once again I apologize for the pain that this has caused and the delay.&lt;/P&gt;
&lt;P&gt;John&lt;BR&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6681436" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+John+Spaith/">Author: John Spaith</category></item><item><title>Memory Corruption, Compiler Bug, Or Not?</title><link>http://blogs.msdn.com/b/cenet/archive/2007/10/22/memory-corruption-compiler-bug-or-not.aspx</link><pubDate>Tue, 23 Oct 2007 04:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5613267</guid><dc:creator>cenet</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=5613267</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2007/10/22/memory-corruption-compiler-bug-or-not.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;While tracking down some memory corruption issues, I noticed in one function that a parameter on the stack was always getting set to the value 2, even though it was a pointer. I could see it turn red in the memory view window as its value changed. I thought I had identified a compiler bug. But no, it was not a compiler bug. It was actually a mismatch between the optimizing compiler and the debugger. The x86 optimizer knew that the memory for the stack variable was referenced only one time and then was enregistered, so its stack memory could be used for another local variable. The debugger’s local variable display did not realize this and continued to display the memory value for the local variable – confusing.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;On ARM, a similar situation can arise since the first 4 registers (R0, R1, R2 and R3) are used as function parameters. The debugger doesn’t track when a function parameter gets moved to a “permanent” register (R6 for instance) and continues to display the function parameter register’s value as the local variable’s value.&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5613267" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+David+Kanz/">Author: David Kanz</category></item><item><title>About Harish</title><link>http://blogs.msdn.com/b/cenet/archive/2007/10/16/about-harish.aspx</link><pubDate>Wed, 17 Oct 2007 02:53:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5477961</guid><dc:creator>cenet</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=5477961</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2007/10/16/about-harish.aspx#comments</comments><description>&lt;P&gt;Hi, my name is Harish Srinivasan. I work in the Windows CE Core Networking team. I own IPsec, IKE and several other networking components.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5477961" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+Harish+Srinivasan/">Author: Harish Srinivasan</category></item><item><title>Windows CE and the Serial Carrier Detect Signal</title><link>http://blogs.msdn.com/b/cenet/archive/2007/07/24/windows-ce-and-the-serial-carrier-detect-signal.aspx</link><pubDate>Tue, 24 Jul 2007 22:49:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4032933</guid><dc:creator>cenet</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=4032933</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2007/07/24/windows-ce-and-the-serial-carrier-detect-signal.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;FONT face="Times New Roman" size=3&gt;The Windows CE serial port based networking components have an historical affinity for the RS232 Carrier Detect (CD) signal. A key feature of Windows CE 1.0 was automatic synchronization of email and contacts when docked (ActiveSync). The device needed to detect when it was docked, and it needed to wake up when docked. Since this scenario was originally serial port based, CD was used as both the wake-source interrupt and the signal to start the ActiveSync application on the device.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;FONT face="Times New Roman" size=3&gt;The corresponding components (mostly Unimodem and PPP) in Windows NT/XP/Vista do not rely on CD, so many scenarios that work between non-CE devices do not work the same when a CE device is involved. It is often due to one of the following reasons:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;The cable being used does not include the Carrier Detect line.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;The platform specific serial port device driver does not properly report CD status. The serial driver’s SL_GetModemStatus indicates CD state with the MS_RLSD_ON flag for the Win32 serial port API function GetCommModemStatus(). EV_RLSD is used to indicate a change in state of the CD signal.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 0pt 0.75in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT size=3&gt;3.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT size=3&gt;The hardware does not implement the CD signal. If this is the case, then a valid workaround is for the serial port device driver to always indicate that CD is asserted by always setting MS_RLSD_ON in its SL_GetModemStatus function.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4032933" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+David+Kanz/">Author: David Kanz</category></item><item><title>Privacy support in RTC 1.5</title><link>http://blogs.msdn.com/b/cenet/archive/2007/06/07/privacy-support-in-rtc-1-5.aspx</link><pubDate>Thu, 07 Jun 2007 20:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3146626</guid><dc:creator>cenet</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=3146626</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2007/06/07/privacy-support-in-rtc-1-5.aspx#comments</comments><description>&lt;P&gt;RTC 1.5 supports privacy for SIP. It implements a subset of RFC 3323, RFC3324, RFC 3325 and can create messages that do not divulge personal identity information. &lt;/P&gt;
&lt;P&gt;Windows CE and WM6 has the following privacy constants describing different privacy policy. By default, RTC&amp;nbsp;doesn't have&amp;nbsp;Privacy&amp;nbsp;policy set, i.e.&amp;nbsp;RTCSP_PRIVACY_NONE is used.&lt;/P&gt;
&lt;P&gt;RTCSP_PRIVACY_NONE = 0x00000000&lt;/P&gt;
&lt;P&gt;RTCSP_PRIVACY_LOCAL = 0x00000001&lt;/P&gt;
&lt;P&gt;RTCSP_PRIVACY_PROXY_HEADER = 0x00000002&lt;/P&gt;
&lt;P&gt;RTCSP_PRIVACY_PROXY_SESSION = 0x00000004&lt;/P&gt;
&lt;P&gt;RTCSP_PRIVACY_ALL = 0x0000000F&lt;/P&gt;
&lt;P&gt;Check the following link for more info on these constants:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/aa922722.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/aa922722.aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa922722.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;There are two levels of privacy support in RTC:&lt;/P&gt;
&lt;P&gt;1.Session level - the privacy setting is done for an IRTCSession.&lt;/P&gt;
&lt;P&gt;Interface, &lt;STRONG&gt;IRTCSessionSIPPrivacy&lt;/STRONG&gt;, adds privacy support for all SIP traffic for a session. It can be created by calling&amp;nbsp; QueryInterface on the IRTCSession object. The application can call IRTCSessionSIPPrivacy::put_SIPPrivacyType to set the privacy policy by using predefined privacy constants.&lt;/P&gt;
&lt;P&gt;Example:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CComPtr&amp;lt;IRTCSessionSIPPrivacy&amp;gt;&amp;nbsp;&amp;nbsp; cpPrivacy;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hr = cpNewSession-&amp;gt;QueryInterface(&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IID_IRTCSessionSIPPrivacy, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reinterpret_cast&amp;lt;void**&amp;gt;(&amp;amp;cpPrivacy)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; );&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (SUCCEEDED(hr))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;hr = cpPrivacy-&amp;gt;put_SIPPrivacyType(RTCSP_PRIVACY_LOCAL);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; if (FAILED(hr))&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;....&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;2.Client level - the privacy is set for an IRTCClient&lt;/P&gt;
&lt;P&gt;Interface, &lt;STRONG&gt;IRTCClientSIPPrivacy&lt;/STRONG&gt;, adds privacy support for all SIP traffic for a an IRTCClient. It can be created by calling&amp;nbsp; QueryInterface on the IRTCClient object. This interface also has a function,put_SIPPrivacyType, to set the privacy policy on a client. The privacy policy can be set after an IRTCClient is initialized and before the client is shut down. So it's possible for the application to add an UI to let the user change the privacy policy when the client is alive.&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3146626" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/RTC/">RTC</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/VOIP/">VOIP</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+Yue+Zeng/">Author: Yue Zeng</category></item><item><title>                                   RTC's VOIP delay</title><link>http://blogs.msdn.com/b/cenet/archive/2007/06/07/rtc-s-voip-delay.aspx</link><pubDate>Thu, 07 Jun 2007 10:09:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:3135619</guid><dc:creator>cenet</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=3135619</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2007/06/07/rtc-s-voip-delay.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt; TEXT-ALIGN: center" align=center&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&lt;/o:p&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;This blog explains the different components that contribute to the audio delay in a VOIP call, and then discusses RTC's VOIP delay numbers.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;When any VOIP call made between any 2 VOIP entities, the end-to-end delay for the VOIP call can be categorized as following: &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;a.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;VOIP Sender side delay &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;b.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Propagation delay on the wire between 2 VOIP entities.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;c.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;VOIP receiver side delay&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Since our focus is delay characteristics of a device running RTC, let's ignore the propagation delay for now.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;On VOIP sender side, the following component contributes to delay in general:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Audio Driver capture delay.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;VOIP stack send delay (RTC media stack send delay)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;3.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;(OS network + network driver) send delay&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;On VOIP receiver side, the following component contributes to the delay:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;4.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;(OS network + network driver) receive delay&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;5.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;VOIP stack receive delay (RTC media stack send delay)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo2"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;6.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Audio Driver playback delay&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;As you can see, besides VOIP (RTC) stack delay, the end-to-end delay is also dependent on the network driver as well as the audio driver of the devices, which can vary from device to device.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Let us now look at RTC numbers with respect to the above categories.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;For RTC, when a peer-to-peer VOIP call is made between 2 CEPCs (x86 machines running CE) sitting side-by-side in a lab, and using G711 codec, &lt;B style="mso-bidi-font-weight: normal"&gt;the total end-to-end delay measured was around 70msec. &lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;RTC’s send delay &lt;/B&gt;(i.e. time spent by an audio packet within RTC media stack only, after RTC receives it from the waveIn and just before RTC submits the packet to socket layer to transmit over the wire) &lt;B style="mso-bidi-font-weight: normal"&gt;was measured around 2 to 3 msec&lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;RTC’s receive delay&lt;/B&gt; (i.e. time spent by an audio packet within RTC media stack only, after RTC receives it from the socket layer and just before it submits the packet to wave API layer to play) &lt;B style="mso-bidi-font-weight: normal"&gt;is around 35 to 38 msec&lt;/B&gt;. The receive delay is more because RTC has an audio healer algorithm to dejitter and heal received audio data.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;So the total RTC delay (send + receive) is around 38&amp;nbsp;to 40 msec. &lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;The rest of the time (70 – 40 = 30 msec) is spent in the network + audio driver.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Since a human ear can tolerate a delay of around 200 mec, there is plenty of room for propagation delay. &lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=3135619" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+Rajesh+Khetan/">Author: Rajesh Khetan</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Real+Time+Communication/">Real Time Communication</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/RTC/">RTC</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/VOIP/">VOIP</category></item><item><title>How to make RTC VOIP functionality work with Vonage? </title><link>http://blogs.msdn.com/b/cenet/archive/2007/05/29/how-to-make-rtc-voip-functionality-work-with-vonage.aspx</link><pubDate>Wed, 30 May 2007 09:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2982188</guid><dc:creator>cenet</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=2982188</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2007/05/29/how-to-make-rtc-voip-functionality-work-with-vonage.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;RTC uses standard based SIP signaling and RTP/RTCP media streams to provide VOIP functionality. To verify this, I carried out a little experiment to see if RTC works with existing VOIP services like Vonage. Guess what? It did :). &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;Here are the steps to configure RTC to make it work with Vonage. Please note that these are trial &amp;amp; error steps and the experiment was mainly to validate RTC's implementation with a consumer VOIP service. I tried this in 2006 and hence these steps may change if Vonage changed its configuration (server address/port, authentication, transport protocol, etc.) since then:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 6pt 0.75in; TEXT-INDENT: -0.5in; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Use your Vonage client account information to create the RTC profile. Here is the sample profile that I used:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 6pt 0.75in; mso-add-space: auto"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;provision key='1232ab03' name='Vonage' &amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 6pt 0.75in; mso-add-space: auto"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;user name = 'Vonage User' account='&lt;B style="mso-bidi-font-weight: normal"&gt;&amp;lt;11 digit phone number&amp;gt;&lt;/B&gt;' password='&lt;B style="mso-bidi-font-weight: normal"&gt;&amp;lt;password&amp;gt;&lt;/B&gt;' uri='sip:&lt;B style="mso-bidi-font-weight: normal"&gt;&amp;lt;11 digit phone number&amp;gt;&lt;/B&gt;@216.115.20.41' allowedauth=&lt;B style="mso-bidi-font-weight: normal"&gt;'digest'&lt;/B&gt;/&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 6pt 0.75in; mso-add-space: auto"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;sipsrv addr='216.115.20.41&lt;B style="mso-bidi-font-weight: normal"&gt;:5061&lt;/B&gt;' protocol=&lt;B style="mso-bidi-font-weight: normal"&gt;'UDP'&lt;/B&gt; role='proxy'&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 6pt 0.75in; mso-add-space: auto"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;session party='First' type='pc2pc' /&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 6pt 0.75in; mso-add-space: auto"&gt;&lt;SPAN lang=IT style="mso-ansi-language: IT"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&amp;lt;/sipsrv&amp;gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 6pt 0.75in; mso-add-space: auto"&gt;&lt;SPAN lang=IT style="mso-ansi-language: IT"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&amp;lt;sipsrv addr='216.115.20.41&lt;B style="mso-bidi-font-weight: normal"&gt;:5061&lt;/B&gt;' protocol='UDP' role='registrar'/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 6pt 0.75in; mso-add-space: auto"&gt;&lt;FONT face=Calibri size=3&gt;&amp;lt;/provision&amp;gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 6pt 0.75in; mso-add-space: auto"&gt;&lt;o:p&gt;&lt;FONT face=Calibri size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 6pt 0.75in; mso-add-space: auto"&gt;&lt;FONT face=Calibri size=3&gt;Fill in &amp;lt;11 digit phone number&amp;gt; and &amp;lt;password&amp;gt; with the information that you have from Vonage.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 6pt 0.75in; mso-add-space: auto"&gt;&lt;FONT size=3&gt;&lt;FONT face=Calibri&gt;&lt;B style="mso-bidi-font-weight: normal"&gt;216.115.20.41 &lt;/B&gt;is the&lt;B style="mso-bidi-font-weight: normal"&gt; &lt;/B&gt;Vonage&lt;B style="mso-bidi-font-weight: normal"&gt; &lt;/B&gt;proxy/registrar server address that I saw was being used for my account.&lt;B style="mso-bidi-font-weight: normal"&gt; &lt;/B&gt;Verify if this is still valid or if you have a DNS name for the Vonage server, put that info instead of the IP address.&lt;B style="mso-bidi-font-weight: normal"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 6pt 0.75in; TEXT-INDENT: -0.5in; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Use UDP as the transport protocol (Set in the profile above)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 6pt 0.75in; TEXT-INDENT: -0.5in; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;3.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Use symmetric UDP for SIP signaling. i.e. During RTC initialization, use the following initialization RTC flag: RTCIF_ENABLE_SYMMETRIC_UDP_SIGNALING&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 6pt 1in; TEXT-INDENT: -0.25in; mso-list: l0 level2 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;a.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Use static local source port (5060) to listen to all incoming request i.e. During RTC initialization, use the following flag during initialization: RTCIF_PREFER_STATIC_PORT_FOR_SYMMETRIC_UDP&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 6pt 0.75in; TEXT-INDENT: -0.5in; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;4.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Used digest as authentication protocol (Set in the profile above)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 6pt 0.75in; TEXT-INDENT: -0.5in; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="mso-fareast-font-family: Calibri; mso-bidi-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri size=3&gt;5.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri size=3&gt;Use server destination port as 5061 (Set in the profile above)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;And Voila! RTC works with Vonage. I experimented before and after NAT case and it worked for both.&amp;nbsp; &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;Please note: The above test was a pure proof of concept, to test RTC's standardized SIP implementation withh existing services like Vonage. The scenario is neither officially supported by Microsoft nor Vonage.&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri size=3&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2982188" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+Rajesh+Khetan/">Author: Rajesh Khetan</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Real+Time+Communication/">Real Time Communication</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/RTC/">RTC</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/VOIP/">VOIP</category></item><item><title>NETUI and Disabling Prompts for Credentials by the Redirector</title><link>http://blogs.msdn.com/b/cenet/archive/2007/05/26/netui-and-disabling-prompts-for-credentials-by-the-redirector.aspx</link><pubDate>Sat, 26 May 2007 19:08:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2959768</guid><dc:creator>cenet</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=2959768</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2007/05/26/netui-and-disabling-prompts-for-credentials-by-the-redirector.aspx#comments</comments><description>&lt;P&gt;One of the questions that I've seen asked, time and time again, is "How do you disable the username and password dialog that is generated by such and such Microsoft provided component?"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;The answer to all great questions is that it usually depends.&amp;nbsp; In particular it depends on how this said Microsoft component generates its UI.&amp;nbsp; In the specific case of this blog posting, I'm going to talk about one of these components and one of the methods you could use to disable various UI.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;The Redirector component on Windows CE almost always refers to the client-side Server Message Block (SMB) network filesystem.&amp;nbsp; This component can display a number of UI forms, Message Boxes, Username and Password Dialogs, etc.&amp;nbsp; It puts up these UI forms by making calls into another component called NetUI, which is used by many Microsoft provided components to display UI.&amp;nbsp; The NetUI module is provided as public sample code with Platform Builder and it is available for the user to modify.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;The following MSDN article discusses how to modify/make changes to NetUI.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn2.microsoft.com/en-us/library/ms904254.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/ms904254.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms904254.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;When the Redirector component displays a Username and Password Dialog in Windows CE 6.0 it does so by calling &lt;STRONG&gt;CallGetUsernamePassword.&amp;nbsp; &lt;/STRONG&gt;This method is defined in netui.h.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;If you wanted to fail the Username and Password dialog silently in the Redirector component then you would want to set the return value of CallGetUsernamePassword to FALSE.&amp;nbsp; CallGetUsernamePassword is defined in $(_WINCEROOT)\public\common\oak\inc\netui.h.&amp;nbsp; If you investigate netui.h you can see that there is logic that handles displaying UI from both Usermode and Kernel.&amp;nbsp; What is important to know is that you must change the final calls that&amp;nbsp;both Usermode and Kernel mode will eventually call.&amp;nbsp; Reading the code in netui.h one can find dependencies on netui_kernel.h and netui_user.h.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Looking to netui.h and netui_user.h we can see:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;CallGetUsernamePassword&lt;/STRONG&gt; calls &lt;STRONG&gt;CallUGetUsernamePassword&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;CallUGetUsernamePassword&lt;/STRONG&gt; calls &lt;STRONG&gt;GetUsernamePassword&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;GetUsernamePassword &lt;/STRONG&gt;is found in &lt;STRONG&gt;getuser.c &lt;/STRONG&gt;in the netui directory:&amp;nbsp; &lt;/P&gt;
&lt;P&gt;$(_WINCEROOT)\public\common\oak\drivers\netui.&lt;/P&gt;
&lt;P&gt;Here you can modify GetUsernamePassword to return FALSE, effectively removing the username and password dialog from being displayed.&lt;/P&gt;
&lt;P&gt;Hopefully this illustration helps you&amp;nbsp;disable or improve&amp;nbsp;the default UI that comes with other Microsoft components.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2959768" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Auther_3A00_++Alexander+T-+Bussmann/">Auther:  Alexander T. Bussmann</category></item><item><title>Real Time Communication (RTC) support on CE and Windows Mobile platforms</title><link>http://blogs.msdn.com/b/cenet/archive/2007/05/23/real-time-communication-rtc-on-windows-mobile.aspx</link><pubDate>Wed, 23 May 2007 21:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2820351</guid><dc:creator>cenet</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=2820351</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2007/05/23/real-time-communication-rtc-on-windows-mobile.aspx#comments</comments><description>&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;There were many queries about using RTC on Windows Mobile platform. With this blog, I will try to clarify on which platforms RTC is available and supported.&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;So far, RTC has always shipped as a part of the general embedded CE release. It is supported as a part of CE releases only. Until WM6, RTC was never available on Windows Mobile platform. Copying CE released binaries on Windows Mobile is unsupported. There may also be licensing issues with that.&lt;BR&gt;On some Windows Mobile 6 SKUs, VOIP (Voice over IP) is supported. This functionality is based on RTC. So, RTCDll.dll (RTC binary) will be available on some of the WM 6 SKUs. However, on these SKUs, RTC is not released as an SDK, but solely to provide the VOIP functionality. So if an application wishes to use RTC on these SKUs, it is free to do so, but that scenario won’t be supported by Microsoft.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;Hope this will clarify some questions around RTC support on CE as well as Windows Mobile platforms.&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Arial','sans-serif'"&gt;&amp;nbsp;- Rajesh&lt;/SPAN&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2820351" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+Rajesh+Khetan/">Author: Rajesh Khetan</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Real+Time+Communication/">Real Time Communication</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/RTC/">RTC</category><category domain="http://blogs.msdn.com/b/cenet/archive/tags/VOIP/">VOIP</category></item><item><title>PCMCIA Problems on Windows CE Devices.</title><link>http://blogs.msdn.com/b/cenet/archive/2007/05/07/pcmcia-problems-on-windows-ce-devices.aspx</link><pubDate>Mon, 07 May 2007 20:40:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2465921</guid><dc:creator>cenet</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=2465921</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2007/05/07/pcmcia-problems-on-windows-ce-devices.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face="Times New Roman" size=3&gt;I wrote the first PCMCIA driver for Windows CE in 1995. At the time, CE had not been ported to the PC, so we had to rely on reference platforms and prototypes to debug. Some problems were not software related.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;FONT face="Times New Roman" size=3&gt;The first Windows CE reference platform was called PeRP (Pegasus Reference Platform, Pegasus was the code name for Windows CE 1.0). The designer did not understand how the software would use the PCMCIA memory mapped regions. &lt;B style="mso-bidi-font-weight: normal"&gt;He thought he would be thrifty and “save” three gates by making a byte appear at every DWORD address.&lt;/B&gt; This is why the CE 1.0 Card Services API included such functions as CardReadAttrByte and CardWriteIOByte. A vestige of this design decision remained until CE 5.0 in CardMapWindow’s pGranularity parameter. On the PeRP, pGranularity would be set to 4 or sizeof(DWORD). On all other platforms it is 1.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;FONT face="Times New Roman" size=3&gt;The next Microsoft developed reference platform was called the Odo (after a Star Trek character). It had a pluggable CPU architecture so we could test the various processors supported by CE at the time. Those in charge of the decision were sometimes too quick to approve a new CPU board. In their view, I guess booting CE to the shell was good enough. The PCMCIA support always seemed to get overlooked. I was left scrambling to figure out another reason why PCMCIA was failing on yet another Odo CPU board. I became quite adept at setting up the logic analyzer for monitoring the PCMCIA bus, and adept at reading the traces. Sometimes this wasn’t enough.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;FONT face="Times New Roman" size=3&gt;On one flavor of MIPS CPU board for Odo, some cards would work fine, and others would get recognized, but then could not be used in I/O mode. By simply reading some of the PCMCIA lines with a multi-meter we found that the power lines had not even been attached! &lt;B style="mso-bidi-font-weight: normal"&gt;The cards were being powered by the address lines!&lt;/B&gt; This of course limited the amount of power available to the card. Any card requiring more than a certain amount of power would not work in I/O mode. A card in memory mode (the initial mode a card is in when first inserted) has minimal power requirements since the attribute memory is usually a small ROM. I/O mode usually requires much more power. The amount of power varies from one card to another. This is why some worked and others did not.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; TEXT-INDENT: 0.5in"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;I have encountered many similar power related problems. Much of the time the root cause is that the batteries cannot supply enough power for the card. A closely related problem is that the device on battery power cannot power a card to operating voltage in enough time. That is why there is the power-on delay registry setting. &lt;B style="mso-bidi-font-weight: normal"&gt;Often, plugging in the A/C power adapter provides enough power in these cases.&lt;/B&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT size=3&gt;&lt;FONT face="Times New Roman"&gt;&lt;SPAN style="mso-tab-count: 1"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;Another interesting problem had nothing to do with the PCMCIA controller hardware implementation and nothing to do with power. In version 1.0, CE did not support 16 bit I/O on PCMCIA. When support for it was added, there were some platforms that had problems. When I finally put the logic analyzer to work, I discovered that accesses to some byte-wide registers were not appearing in the trace. There were only 16 bit accesses. Configuring the software for the platform to report support for only 8 bit PCMCIA I/O obviously worked since the platform worked with CE 1.0. A visit to the MIPS architecture manual revealed the reason – &lt;B style="mso-bidi-font-weight: normal"&gt;MIPS has no instructions for byte-wide memory accesses!&lt;/B&gt; On MIPS, you either support 16 bit PCMCIA access or 8 bit, but not both. The same MIPS instruction is used for both; the PCMCIA subsystem generates an 8 bit access on the PCMCIA bus if it is configured for 8 bit. Many card designs are modeled from PC (x86) architecture designs and so they freely allow mixed 8 and 16 bit I/O accesses, often to the same register. Because of this a MIPS based device almost always has to support 8 bit only PCMCIA I/O.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT face="Times New Roman" size=3&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2465921" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+David+Kanz/">Author: David Kanz</category></item><item><title>How to drop a (Microsoft Generated) debug DLL into a Windows CE device?</title><link>http://blogs.msdn.com/b/cenet/archive/2007/04/09/how-to-drop-a-debug-dll-into-a-windows-ce-device.aspx</link><pubDate>Tue, 10 Apr 2007 02:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2065424</guid><dc:creator>cenet</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=2065424</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2007/04/09/how-to-drop-a-debug-dll-into-a-windows-ce-device.aspx#comments</comments><description>&lt;P&gt;Sometimes on the newsgroups I tell an OEM that's having problems with some component to "Drop DEBUG DLL foo into the release directory and turn on full DEBUGOUT and get me the output."&amp;nbsp; Most Windows CE components have pretty good debug-time logging so a lot of times a customer can see the exact cause of the problem spit out in DEBUGOUT.&lt;/P&gt;
&lt;P&gt;&amp;lt;Note this is for Windows CE Platform Builder (PB) developers only, not Windows Mobile (unless you're an OEM building a Windows Mobile device).&amp;nbsp; Also my article is in particular about components that Microsoft delivers in both DEBUG and retail form, no code that you build yourself.&amp;nbsp; For more info on that, check out the comments from Fernando's feedback below.&amp;gt;&lt;/P&gt;
&lt;P&gt;But how do you get this DEBUG DLL and its output?&amp;nbsp; RETAIL DLLs don't have this, of course.&amp;nbsp; The easiest way is if you can build a fully DEBUG version of the OS and boot it while connected to Platform Builder, then you're pretty much done.&amp;nbsp; Just turn on appropriate debug zones for the component you need.&amp;nbsp; This is recommended since it's one less step.&lt;/P&gt;
&lt;P&gt;However there are scenario where you not have enough RAM/ROM to take a fully DEBUG OS.&amp;nbsp; In this case you want to just drop on the DEBUG dll that you're interested in but have everything else be RETAIL.&amp;nbsp; To do this:&lt;/P&gt;
&lt;P&gt;1) Build the complete platform for both DEBUG and RETAIL OS.&lt;/P&gt;
&lt;P&gt;2) Open RETAIL project in PB, then open a build window. In CE 6.0 this is Tools-&amp;gt;Open Release directory in Build Window, menu and wording may be slightly different in different versions.&lt;/P&gt;
&lt;P&gt;3) This will put you into the release directory for the RETAIL build.&amp;nbsp; The release directory is just the dir where all your intermediate DLLs/PDBs/etc get dumped prior to creating a ROM image.&amp;nbsp; Create a new directory here, ORG, and copy ModuleYouWantDebugOutFor.* to ORG.&lt;/P&gt;
&lt;P&gt;4) If you "cd ..", the DEBUG directory will also be present.&amp;nbsp; (I'm assuming you haven't customized releasedir position in anyway).&amp;nbsp; copy ..\&amp;lt;debugDir&amp;gt;\ModuleYouWantDebugOutFor.* to RETAIL releasedirectory.&lt;/P&gt;
&lt;P&gt;5) Now in PB, run Build-&amp;gt;Make Run-Time Image.&amp;nbsp; (Again, wording may change slightly across releases.)&amp;nbsp; This automatically puts the DLL you want DEBUG into the ROM image.&lt;/P&gt;
&lt;P&gt;6) Before you ship this ROM image to the world you need to remove the DEBUG bits from it.&amp;nbsp; Ideally you have a formal build process of generating DLLs from a "clean" source, not developer's machine, but in case you don't be aware of this issue.&lt;/P&gt;
&lt;P&gt;--&lt;/P&gt;
&lt;P&gt;Note that not all CE Components have DEBUG messages, but most do.&lt;/P&gt;
&lt;P&gt;Happy debugging!&lt;/P&gt;
&lt;P&gt;[Author: John Spaith]&lt;BR&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2065424" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+John+Spaith/">Author: John Spaith</category></item><item><title>Creating MPPE Attributes in an EAP Extension</title><link>http://blogs.msdn.com/b/cenet/archive/2007/04/05/creating-mppe-attributes-in-an-eap-extension.aspx</link><pubDate>Thu, 05 Apr 2007 21:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:2034418</guid><dc:creator>cenet</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=2034418</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2007/04/05/creating-mppe-attributes-in-an-eap-extension.aspx#comments</comments><description>&lt;P&gt;When an EAP extension succesfully completes authentication, it can fill in the PPP_EAP_OUTPUT pUserAttributes field with MPPE key information for use by other networking components. For example, RAS can use those keys for data encryption, and WPA/WPA2 will use them for the 4-way handshake on an 802.11 link.&lt;/P&gt;
&lt;P&gt;The PPP_EAP_OUTPUT pUserAttribute field points to an array of RAS_AUTH_ATTRIBUTE structures, terminated by an array element with raaType = raatMinimum. Documentation on the format of the RAS_AUTH_ATTRIBUTE structure can be found&amp;nbsp;at &lt;A href="http://msdn2.microsoft.com/en-gb/library/aa363535.aspx" mce_href="http://msdn2.microsoft.com/en-gb/library/aa363535.aspx"&gt;http://msdn2.microsoft.com/en-gb/library/aa363535.aspx&lt;/A&gt;.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For MPPE Keys, there will be&amp;nbsp;2 elements in the array of RAS_AUTH_ATTRIBUTES: one for the send key and one for&amp;nbsp;the receive key. For the MPPE Key attributes, the PVOID Value field of the RAS_AUTH_ATTRIBUTE will point to a structure&amp;nbsp;that is described in&amp;nbsp;&lt;A href="http://msdn2.microsoft.com/en-us/library/aa363636.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/aa363636.aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa363636.aspx&lt;/A&gt;. See the section labeled "eatVendorSpecific".&lt;/P&gt;
&lt;P&gt;Below are some sample utility functions that can assist in the creation of the data structures that contain these keys.&lt;/P&gt;&lt;PRE&gt;struct RAS_AUTH_ATTRIBUTE_VALUE
{
    BYTE VendorId[4];    // network byte order
    BYTE VendorType;
    BYTE Length;         // number of bytes from VendorType to the end of the value
    BYTE VendorValue[1]; // Length-2 bytes long
};
      
DWORD
MyEapUtilAuthAttributeInsertVSA(
    OUT RAS_AUTH_ATTRIBUTE *    pAttribute,
    IN  DWORD                   VendorId,
    IN  BYTE                    VendorType,
    IN  PBYTE                   pVendorValue,
    IN  BYTE                    cbVendorValue)
//
//    Insert a vendor specific attribute into the location pointed to by pAttribute.
//
{
      DWORD  dwResult = NO_ERROR;

      ASSERT(cbVendorValue &amp;lt; 254);

      pAttribute-&amp;gt;raaType = raatVendorSpecific;
      pAttribute-&amp;gt;dwLength = offsetof(struct RAS_AUTH_ATTRIBUTE_VALUE, VendorValue) + cbVendorValue;
      pAttribute-&amp;gt;Value = LocalAlloc(LPTR, pAttribute-&amp;gt;dwLength);
      if (pAttribute-&amp;gt;Value == NULL)
      {
            dwResult = ERROR_OUTOFMEMORY;
      }
      else
      {
            struct RAS_AUTH_ATTRIBUTE_VALUE *pAttributeValue = (struct RAS_AUTH_ATTRIBUTE_VALUE *)pAttribute-&amp;gt;Value;

            VendorId = htonl(VendorId);
            memcpy(&amp;amp;pAttributeValue-&amp;gt;VendorId[0], &amp;amp;VendorId, sizeof(VendorId));
            pAttributeValue-&amp;gt;VendorType = VendorType;
            pAttributeValue-&amp;gt;Length = 2 + cbVendorValue; // 1 byte for VendorType, 1 byte for Length, then cbVendorValue bytes of VendorValue
            memcpy(&amp;amp;pAttributeValue-&amp;gt;VendorValue[0], pVendorValue, cbVendorValue );
      }
      return dwResult;
}

RAS_AUTH_ATTRIBUTE *
MyEapUtilAuthAttributeArrayAlloc(
      DWORD nAttrs)
//
//  Allocate an array of sufficient size to hold the requested number
//  of authentication attributes.
//
{
      RAS_AUTH_ATTRIBUTE *pAttributes;

      nAttrs += 1; // Add one for the terminator
      pAttributes = (RAS_AUTH_ATTRIBUTE *)(LocalAlloc(LPTR, nAttrs * sizeof(RAS_AUTH_ATTRIBUTE)));
      if (pAttributes)
      {
            // Set the terminator array element
            pAttributes[nAttrs - 1].raaType = raatMinimum;
      }
      return pAttributes;
}

void
MyEapUtilAuthAttributeArrayFree(
      RAS_AUTH_ATTRIBUTE *pAttributes)
//
//  Free an array of authentication attribute values.
//
{
    if (pAttributes)
    {
        for (int i=0; pAttributes[i].raaType != raatMinimum; i++)
        {
            if (pAttributes[i].Value)
            {
                SecureZeroMemory(pAttributes[i].Value, pAttributes[i].dwLength);
                LocalFree(pAttributes[i].Value);
                pAttributes[i].Value = NULL;
            }
        }
        LocalFree(pAttributes);
    }
}

#define VENDOR_MICROSOFT     311
#define MS_VSA_MPPE_Send_Key 16
#define MS_VSA_MPPE_Recv_Key 17

#define MAX_MPPEKEY_LENGTH   32

// Format of the MPPE Key
// Byte 1-2:       Salt
// Byte 3:         Key Length (this is the length of the Actual Key and does not include Salt, Key Length and Padding fields) 
// Byte 4-35:      Actual Key  (Most access points require 32 byte keys for WPA)
// Byte 35-50:     Padding (required to make the length of the MPPE Key (not including the Salt) a multiple of 16 bytes)

struct MPPEKey
{
    BYTE Salt[2];
    BYTE KeyLength;
    BYTE Key[MAX_MPPEKEY_LENGTH];
    BYTE Padding[15];
};

DWORD
MyEapUtilAuthAttributeInsertMPPEKeyVSA(
    OUT RAS_AUTH_ATTRIBUTE *    pAttribute,
    IN  BYTE                    VendorType, // MS_VSA_MPPE_Send_Key or MS_VSA_MPPE_Recv_Key
    IN  BYTE const * const      pKey,
    IN  size_t                  cbKey)
//
//  Insert an MPPEKey VSA into the location specified by pAttribute.
//
{
    DWORD  dwResult;
    struct MPPEKey MPPEKey;
 
    if (cbKey &amp;gt; MAX_MPPEKEY_LENGTH)
        return ERROR_INVALID_PARAMETER;

    memset(&amp;amp;MPPEKey, 0, sizeof(MPPEKey));
    MPPEKey.KeyLength = cbKey;
    memcpy(&amp;amp;MPPEKey.Key[0], pKey, cbKey);
    dwResult = MyEapUtilAuthAttributeInsertVSA(pAttribute, VENDOR_MICROSOFT, VendorType, (PBYTE)&amp;amp;MPPEKey, sizeof(MPPEKey) - MAX_MPPEKEY_LENGTH + cbKey);  
    SecureZeroMemory(&amp;amp;MPPEKey, sizeof(MPPEKey));
    return dwResult;
}
    
DWORD 
MyEapUtilCreateMPPEAuthAttributes(
    BYTE const * const pSendKey,
    size_t             cbSendKey,
    BYTE const * const pRecvKey,
    size_t             cbRecvKey,
    RAS_AUTH_ATTRIBUTE **ppSendRecvKeyAttr)
//
// Save the MPPE Send and Recv Session Keys as Auth Attributes
//
{
    DWORD dwResult;
    RAS_AUTH_ATTRIBUTE* pSendRecvKeyAttr;

    // Allocate an auth attribute array able to hold 2 attributes (send key and recv key)
    pSendRecvKeyAttr = MyEapUtilAuthAttributeArrayAlloc(2); 
    if ( NULL == pSendRecvKeyAttr )
    {
        dwResult = ERROR_OUTOFMEMORY;
        goto done;
    }

    // Add the send key to the attribute array at index 0
    dwResult = MyEapUtilAuthAttributeInsertMPPEKeyVSA(&amp;amp;pSendRecvKeyAttr[0], MS_VSA_MPPE_Send_Key, pSendKey, cbSendKey);
    if (dwResult != NO_ERROR)
          goto done;

    // Add the receive key to the attribute array at index 1
    dwResult = MyEapUtilAuthAttributeInsertMPPEKeyVSA(&amp;amp;pSendRecvKeyAttr[1], MS_VSA_MPPE_Recv_Key, pRecvKey, cbRecvKey);
    if (dwResult != NO_ERROR)
          goto done;
          
done:
    if (dwResult != NO_ERROR)
    {
        // Free any resources
        MyEapUtilAuthAttributeArrayFree(pSendRecvKeyAttr);
        pSendRecvKeyAttr = NULL;
    }

    *ppSendRecvKeyAttr = pSendRecvKeyAttr;
    return dwResult;
}

&lt;/PRE&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=2034418" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+Jeff+Kelley/">Author: Jeff Kelley</category></item><item><title>time.h for WinCE at OpenNetCF</title><link>http://blogs.msdn.com/b/cenet/archive/2007/03/22/time-h-for-wince-at-opennetcf.aspx</link><pubDate>Thu, 22 Mar 2007 20:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1932021</guid><dc:creator>cenet</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/cenet/rsscomments.aspx?WeblogPostID=1932021</wfw:commentRss><comments>http://blogs.msdn.com/b/cenet/archive/2007/03/22/time-h-for-wince-at-opennetcf.aspx#comments</comments><description>&lt;P&gt;Windows CE does not support the time.h structures, as I blog about &lt;A class="" href="http://blogs.msdn.com/cenet/archive/2006/04/29/time-h-on-windows-ce.aspx" mce_href="http://blogs.msdn.com/cenet/archive/2006/04/29/time-h-on-windows-ce.aspx"&gt;here&lt;/A&gt;.&amp;nbsp; Fortunately Chris Tacke at OpenNETCF has created a free library to do this, which is available &lt;A class="" href="http://www.opennetcf.com/SharedSource/OpenTimeCE/tabid/247/Default.aspx" mce_href="http://www.opennetcf.com/SharedSource/OpenTimeCE/tabid/247/Default.aspx"&gt;here&lt;/A&gt;, in order to make porting easier to CE.&amp;nbsp; (If you're not porting code you should be using the Win32 time functions, which WinCE does support.)&lt;/P&gt;
&lt;P&gt;Whenever I point folks at non-MS software I always have the disclaimer that MS doesn't officially support it, buyer beware, etc etc...&amp;nbsp; I'm embarrassed to have to put that in for this case because I know Chris is a really good guy who's done a lot for the CE development community.&amp;nbsp; Thanks Chris for your work here!&lt;/P&gt;
&lt;P&gt;[Author: John Spaith]&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1932021" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/cenet/archive/tags/Author_3A00_+John+Spaith/">Author: John Spaith</category></item></channel></rss>
