Microsoft KB Archive/812839

= XCCC: Poor Quality Video in Multicast Conference Over Low Bandwidth Connection =

Article ID: 812839

Article Last Modified on 2/27/2007

-

APPLIES TO


 * Microsoft Exchange 2000 Enterprise Server
 * Microsoft Exchange 2000 Server Standard Edition
 * Microsoft Exchange 2000 Conferencing Server

-



SUMMARY
When you create a multicast conference that contains both audio and video, some participants may receive &quot;jittery&quot; or intermittent sound and poor quality or &quot;choppy&quot; video performance.

If the remote client turns off the video portion of the conference, the sound quality improves.



CAUSE
This issue may occur if your network does not have enough bandwidth for the multicast session.

Audio and video quality may be poor in a multicast conference that is held over a 512 kilobits per second (512 Kbps) or less wide area network (WAN) link.



WORKAROUND
To work around this issue, modify the Session Description Protocol blob to set a limit on the bandwidth used by the conference participants. For example, set the upper bandwidth limit to 60 Kbps or 80 Kbps. To do this, modify the Exchange Conferencing Server Web access page (Xipconf.asp) to set a bit rate for connected clients.

The following example of the Xipconf.asp file has been modified to include a &quot;strBitRate&quot; parameter between the  tags. Edit the strBitRate value by using a text editor such as Notepad to set the bit rate that you want, currently set at 50 Kbps, to the maximum value that you want to permit. This example of the Xipconf.asp file is from Exchange Conferencing Server Service Pack 2 (SP2). If you are not using Exchange Conferencing Server SP2, copy the two  sections from this example and paste them into the Xipconf.asp file from your version of Exchange Conferencing Server.

Microsoft provides programming examples for illustration only, without warranty either expressed or implied, including, but not limited to, the implied warranties of merchantability and/or fitness for a particular purpose. This article assumes that you are familiar with the programming language being demonstrated and the tools used to create and debug procedures. Microsoft support professionals can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific needs. If you have limited programming experience, you may want to contact a Microsoft Certified Partner or the Microsoft fee-based consulting line at (800) 936-5200. For more information about Microsoft Certified Partners, see the following Microsoft Web site:

https://partner.microsoft.com/global/30000104

For additional information about the support options available from Microsoft, visit the following Microsoft Web site:

http://support.microsoft.com/default.aspx?scid=fh;EN-US;CNTACTMS

<% @ CodePage=1252 Language=VBScript %> <% OPTION EXPLICIT Response.Expires = 0

'This page expects the following parameters: '?SDP=                  Attempt to join the meeting with the passed conference ID '?DS=7              Pre-join request '?DS=8             Post-join request '?DS=9             No MADCAP servers currently available '?DS=10            Too many users (currently not used) '?DS=11            All MADCAP servers failed '?DS=12            No MADCAP servers matching the required advertising scope were found '?DS=13            No MADCAP servers configured with the multicast scope list specified by the resource were found '?DS=14            The resource has no specified multicast scopes

' ================================ CONSTANTS ================================================= CONST L_PreJoinTitle_Text               = &quot;The video conference you are trying to join has not yet started. Please wait; you will be joined automatically when the conference starts.&quot; 'Title for screenshot 7 CONST L_PostJoinTitle_Text              = &quot;The video conference you are trying to join has ended. Check the date and time of the conference you are trying to join.&quot;                                                'Title for screenshot 8 CONST L_TooManyUsersTitle_Text          = &quot;The maximum number of participants allowed in this video conference has been reached. Wait a few minutes, and then try again.&quot;

CONST L_NoMadcapServersTitle_Text       = &quot;The videoconference was not started because no multicast address allocation (MADCAP) servers are running or configured. Contact your system administrator for assistance.&quot; CONST L_AllMadcapServersFailedTitle_Text = &quot;The videoconference was not started because none of the available multicast address allocation (MADCAP) servers can issue a multicast address. Contact your system administrator for assistance.&quot;

CONST L_NoScopeMatch1_Text              = &quot;The videoconference was not started because no multicast address allocation (MADCAP) server is within the advertising scope specified by the conference resource. The advertising scope is &quot; CONST L_NoScopeMatch2_Text              = &quot; and the Time-To-Live (TTL) value for IP multicast packets is &quot; CONST L_NoScopeMatch3_Text              = &quot;. Please note these values and forward them to your system administrator.&quot;

CONST L_NoScopesFound_Text              = &quot;The videoconference was not started because no multicast address allocation (MADCAP) servers configured with a multicast scope specified by the conference resource could be found. Contact your system administrator for assistance.&quot;

CONST L_NoScopesInResource_Text         = &quot;The videoconference was not started because no mutlicast scopes were specified by the conference resource. Contact your system administrator for assistance.&quot;

CONST L_DisplayOlderH323Client_Text     = &quot;This audio video conference is in session. You can now use your H.323 client program (for example, NetMeeting) to participate in the conference. If you are not in the conference, try one of the following: Try to rejoin the conference. Verify that your T.120 client program is running. Check your network connection or protocol settings.&quot; CONST L_DisplayNoAudioVideoClient_Text  = &quot;An audio video connection to the Exchange Conferencing Server could not be automatically established. Either client, server, or network capabilities could not be negotiated or the conference capacity may have been reached.&quot; CONST L_DisplayNoAudioVideoActiveX_Text = &quot;An audio video connection to the Exchange Conferencing Server could not be automatically established. Verify that your browser security settings permit the download of ActiveX controls.&quot;

CONST L_LocalVideoWindowTitle_Text      = &quot;Local Video&quot; CONST L_RemoteVideoWindowTitle_Text     = &quot;Remote Video&quot;

CONST PROVIDER_CLASS_ID                 = &quot;{42749791-A1E6-11D2-9BA4-00AA00BD8C91}&quot;

' ================================ VARIABLES ================================================= 'REQUEST STRING VARIABLES: DIM inDisplayState DIM inScope DIM inTimeToLive DIM inH323 DIM NoScopeMatchMessage

' =============================== INITIALIZATION ============================================== inDisplayState  = Request.QueryString(&quot;DS&quot;) inScope         = Request.QueryString(&quot;SCOPE&quot;) inTimeToLive    = Request.QueryString(&quot;TTL&quot;) inH323          = Request.QueryString(&quot;H323&quot;)

%>

 

   <% ' =============================== HTML ==================================================== SELECT CASE inDisplayState CASE DISPLAY_PREJOIN, DISPLAY_POSTJOIN, DISPLAY_TOO_MANY_USERS, DISPLAY_NO_MADCAP_SERVERS, DISPLAY_ALL_MADCAP_SERVERS_FAILED, _ DISPLAY_NO_MADCAP_SCOPES_FOUND, DISPLAY_NO_SCOPES_IN_RESOURCE, DISPLAY_OLDER_H323_CLIENT, DISPLAY_NO_AUDIOVIDEO_CLIENT, _ DISPLAY_NO_AUDIOVIDEO_ACTIVEX, DISPLAY_NO_MADCAP_SERVERS_MATCH_SCOPE %>   <% If (DISPLAY_PREJOIN = inDisplayState) Then %> <%=L_PreJoinTitle_Text%></CENTER> <% ElseIf (DISPLAY_POSTJOIN = inDisplayState) Then %> <CENTER><%=L_PostJoinTitle_Text%></FONT></CENTER> <% ElseIf (DISPLAY_TOO_MANY_USERS = inDisplayState) Then %> <CENTER><%=L_TooManyUsersTitle_Text%></FONT></CENTER> <% ElseIf (DISPLAY_NO_MADCAP_SERVERS = inDisplayState) Then %> <CENTER><%=L_NoMadcapServersTitle_Text%></FONT></CENTER> <% ElseIf (DISPLAY_ALL_MADCAP_SERVERS_FAILED = inDisplayState) Then %> <CENTER><%=L_AllMadcapServersFailedTitle_Text%></FONT></CENTER> <% ElseIf ( DISPLAY_NO_MADCAP_SCOPES_FOUND = inDisplayState) Then %> <CENTER><%=L_NoScopesFound_Text%></FONT></CENTER> <% ElseIf (DISPLAY_NO_SCOPES_IN_RESOURCE = inDisplayState) Then %> <CENTER><%=L_NoScopesInResource_Text%></FONT></CENTER> <% ElseIf (DISPLAY_OLDER_H323_CLIENT = inDisplayState) Then %> <CENTER><%=L_DisplayOlderH323Client_Text%></FONT></CENTER> <% ElseIf (DISPLAY_NO_AUDIOVIDEO_CLIENT = inDisplayState) Then %> <CENTER><%=L_DisplayNoAudioVideoClient_Text%></FONT></CENTER> <% ElseIf (DISPLAY_NO_AUDIOVIDEO_ACTIVEX = inDisplayState) Then %> <CENTER><%=L_DisplayNoAudioVideoActiveX_Text%></FONT></CENTER> <% ElseIf (DISPLAY_NO_MADCAP_SERVERS_MATCH_SCOPE = inDisplayState) Then %> <% NoScopeMatchMessage = L_NoScopeMatch1_Text & inScope & L_NoScopeMatch2_Text & inTimeToLive & L_NoScopeMatch3_Text %> <CENTER><%=NoScopeMatchMessage%></FONT></CENTER> <% End If %>

<% CASE DISPLAY_MULTICAST_CLIENT%> </HEAD> <BODY BGCOLOR=#0066CC TOPMARGIN=0 LEFTMARGIN=0 RIGHTMARGIN=0 BOTTOMMARGIN=0 MARGINHEIGHT=0 MARGINWIDTH=0>

<OBJECT classid=clsid:1533A74E-B073-11D2-8F7E-0080C7852DA3 codeBase=&quot;/<%=VROOT_CONFBIN%>/xipcctl.cab#Version=###BUILD_VERSION###&quot; type=&quot;application/x-cabinet&quot; height=&quot;100%&quot; id=ExConf style=&quot;HEIGHT: 100%; WIDTH: 100%&quot; width=&quot;100%&quot;></OBJECT>

<SCRIPT language=&quot;JavaScript&quot;>

</SCRIPT>

<SCRIPT language=&quot;JavaScript&quot;>

</SCRIPT>

</BODY> </HTML>

<% CASE DISPLAY_H323_CLIENT%>

<SCRIPT Language=Javascript>

</SCRIPT>

</HEAD> <BODY scroll=auto onload=&quot;SetAutoScrollbars;&quot; BGCOLOR=#0066CC TOPMARGIN=0 LEFTMARGIN=0 RIGHTMARGIN=0 BOTTOMMARGIN=0 MARGINHEIGHT=0 MARGINWIDTH=0> <SCRIPT FOR=window event=onunload> if (typeof(NetMeetingLocal) != &quot;undefined&quot;) {          NetMeetingLocal.LeaveConference; }      if (typeof(NetMeetingRemote) != &quot;undefined&quot;) {          NetMeetingRemote.LeaveConference; }   </SCRIPT> </BODY> </HTML>

<%   CASE ELSE 'Standard join page IF (0 = ErrorCount AND &quot;&quot; = inDisplayState) THEN 'Decide between H323 and multicast %> </HEAD> <BODY BGCOLOR=#0066CC TOPMARGIN=0 LEFTMARGIN=15 RIGHTMARGIN=15 BOTTOMMARGIN=15 MARGINHEIGHT=0 MARGINWIDTH=15>

<OBJECT ID=&quot;NetMeetingCAC&quot; CLASSID=&quot;CLSID:9A04E3F0-3BB2-11d2-91E2-00C04FAEC46B&quot; HEIGHT=&quot;0&quot; WIDTH=&quot;0&quot; codebase=&quot;/<%=VROOT_CONFBIN%>/xcliacc.cab#Version=###BUILD_VERSION###&quot; TYPE=&quot;application/x-cabinet&quot;></OBJECT> <SCRIPT language=&quot;JavaScript&quot;>

</SCRIPT>

</BODY> </HTML> <%       ELSE 'Error has occurred, send error page (this code is currently never reached) CONST L_InvalidDisplayStateTitle_ErrorMessage = &quot;Invalid Display URL&quot; CONST L_InvalidDisplayStateReason_ErrorMessage = &quot;The URL for this page was mistyped or incorrectly entered.&quot; CONST L_InvalidDisplayStateFix1_ErrorMessage  = &quot;Click Back on your browser, and then try to send your last command again.&quot; CONST L_InvalidDisplayStateFix2_ErrorMessage  = &quot;If you copied the URL from another message, verify that you are using the correct URL.&quot; CALL SetError(L_InvalidDisplayStateTitle_ErrorMessage, CDbl(inDisplayState), &quot;displayState&quot;, &quot;Invalid Display URL&quot;) CALL SetReason(L_InvalidDisplayStateReason_ErrorMessage) CALL AddFix(L_InvalidDisplayStateFix1_ErrorMessage) CALL AddFix(L_InvalidDisplayStateFix2_ErrorMessage) CALL AddFix(L_LinkToConferenceListsFix_ErrorMessage & &quot;<A HREF=&quot;&quot;list.asp&quot;&quot;>&quot; & L_LinkToConferenceListsFix2_ErrorMessage & &quot;</A>&quot;) CALL DisplayErrorPage END IF END SELECT %>

<div class="moreinformation_section">

MORE INFORMATION
For additional information, click the following article numbers to view the articles in the Microsoft Knowledge Base:

280444 XCCC: How to Configure Exchange 2000 Conferencing Server for Internet Attendees

326184 XCCC: White Paper - Using Microsoft Exchange 2000 Conferencing Server over the Internet

247474 XCCC: How to Manually Add Audio/Video ActiveX Controls for Exchange Conferencing Server

290174 XCCC: Bandwidth Considerations for Conferencing over the Internet

273891 XCCC: How to Select Another Video Camera for Use in an Online Video Conference

314630 XCCC: Allocating Multicast Addresses for Audio and Video Conferences

Additional query words: kbRTC

Keywords: kbprb KB812839

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.