Appendix D: How to check what Skype® for Business codecs your PC supports


Overview:

This paper shows how to check what Microsoft® Skype® for Business 2015 - SfB - (Lync® 2013) codecs your PC supports. It forms Appendix D of a series that specifically looks at Microsoft Skype for Business 2015 (Lync 2013) and the challenges and solutions for integrating Skype for Business 2015 with H.323 or SIP standards compliant videoconferencing systems.

Within this paper, we will provide a step-by-step guide that shows exactly how to enable 'logging', create a new log file, trace a call and then examine this log file to determine what Skype for Business codecs your PC supports.

However, these results will only indicate IF your chosen device supports H.264/SVC; but they won't indicate how well it might support H.264/SVC, for that you need to look at Appendix E.

As shown in Appendix E, you need to use the right hardware in the first place and size does not always mean better. You might be very surprised to learn that just because you have a powerful quad-core workstation with dedicated graphics card does not mean that it will outperform a basic laptop when it comes to running the latest Skype for Business client.

Within these papers the terms, Lync, Skype, Skype for Business and SfB, unless stated otherwise, all refer to Skype for Business Server 2015. The paper is specifically based on Skype for Business 2015. Whilst Lync 2013 has now been renamed Skype for Business 2015, it is generally backwards compatible with Lync Server 2013.

It is recommended that you look all the papers listed below for a background into Skype for Business and a detailed explanation about the Codecs, Protocols, Procedures and some of the available solutions.

History:

Microsoft Lync is an evolutionary product for Unified Communications (UC). The initial product; Live Communications Server 2003, was only an Instant Messaging (IM) server. This then evolved through several interactions of Live Communications Server to Office Communications Server and then to Lync Server 2010; when a PBX replacement function was added. It then evolved even further to Lync Server 2013 which added much more including video conferencing, web and audio conferencing, softphone and PBX replacement and/or integration. Now, Microsoft have renamed Lync to Skype for Business.

How to check what Skype for Business codecs your PC supports:

Before you start using the Skype for Business client on your chosen device, it's obviously useful to know just what Skype for Business audio and video codecs it can support. For example, if you want or need to have a Skype HD call that's going to use the latest H.264 SVC codec, then there is no point in making that call from a device that cannot support it.

Essentially, you first need to capture the communications between the Skype clients during a call into a file, then analysis this file to determine what codecs are supported.

Wireshark Trace:

You can check what Skype for Business codecs are supported on any device by using a communications tool such as WireShark to trace the Skype call between your device and the other Skype clients device. You then need to review the created trace file, and specifically the application/sdp statement that captures the initial 'handshake' where the Skype clients exchange their capabilities and list their supported codecs.

But this might not be easy or possible as you will need WireShark and access to the communications link between the two Skype devices in the call.

Lync-UccApi.UccApilog log file:

Alternatively, for Windows based devices such as a PC, laptop or tablet, you can do this locally at the Skype client by first enabling Tracing and then looking at the Lync-UccApi.UccApilog log file.

This is very easy to do and needs no Administrator privileges.

1) Simply logon to your Skype for Business client account as shown in the example below.

2) Open the Tools -> Options menu. 

3) On the General tab, make sure that Logging in Skype for Business: is set to Full or Light as shown below.

4) Sign-out and completely exit the Skype for Business application.

5) Navigate to:

    C:\Users\....\AppData\Local\Microsoft\Office\15.0\Lync\Tracing
    or
    %localappdata%\Microsoft\Office\15.0\Lync\Tracing

6) If a Lync-UccApi-0.UccApilog file exists, either rename or delete it.

7) Logon to your Skype for Business client and note that a new Lync-UccApi-0.UccApilog log file is created.

8) Make a Skype for Business 2015 video call to another Skype for Business 2015 or Lync 2013 client. Wait a few seconds whilst the two Skype clients establish the two-way call. (You can also share an application).

9) You can now hang-up the Skype call.

10) A communications trace of the Skype call is captured in the Lync-UccApi.UccApilog log file. This log file is similar to a Wireshark trace file, but specific to just your Skype call. Wireshark can capture all the IP communications on a network; so depending upon how the capture as been setup and what filters have been applied (or not), the capture file can be huge.

Analysis the log file to determine what codecs are supported:

11) Now that you have a log file, you need to analysis it to determine what codecs are supported. Open the log file using NotePad and look for the SDP SIP INVITE statement. The quickest way is to search for application/sdp to find the first statement that contains the SDP (Session Description Protocol) information. This looks something like:

Content-Type: application/sdp
Content-Transfer-Encoding: 7bit
Content-ID:
Content-Disposition: session; handling=optional; ms-proxy-2007fallback

Under this first set of results, after Content-Disposition:, you should also see ms-proxy-2007fallback.

12) You should skip this statement as it is for backwards compatibility and find to the next application/sdp. This is the section that is much more interesting, it contains lots of lines and the start looks something like:

Content-Type: application/sdp
Content-Transfer-Encoding: 7bit
Content-ID: <4ad2c84305e6ac13a9bcd33ec46ea1ab@21lynconcascadecom.onmicrosoft.com>
Content-Disposition: session; handling=optional

v=0
o=- 0 1 IN IP4 132.245.208.78
s=session
c=IN IP4 132.245.208.78
b=CT:99980
t=0 0
a=x-mediabw:main-video send=4000;recv=4000
a=x-devicecaps:audio:send,recv;video:send,recv
m=audio 55888 RTP/AVP 117 104 114 9 112 111 0 103 8 116 115 97 13 118 101

The whole session lists all the supported media codecs, starting with audio, then video and maybe applicationsharing (if you did an application share in the test call).

13) In the above section, the c=IN line shows the IP address of the sender.

14) For a list of the supported audio codecs, we need to look at the line starting with m=audio.

m=audio 55888 RTP/AVP 117 104 114 9 112 111 0 103 8 116 115 97 13 118 101

This indicates the order of preference for which audio codec to use is 117 104 114 9 .... 101

In this paper, we will not look too closely at the RTP/AVP (RTP Audio Video Profile) or audio codecs as these are covered in depth in separate papers in this series.

15) Similarly, for a list of the supported video codecs, we need to look at the line starting with m=video in conjunction with the following lines starting with a=rtpmap that provide more details about each video codec. This should look something like:

m=video 55569 RTP/AVP 122 121 123
.
a=x-caps:121 263:1920:1080:30.0:2000000:1;
 4359:1280:720:30.0:1500000:1;
 8455:640:480:30.0:600000:1;
 12551:640:360:30.0:600000:1;
 16647:352:288:15.0:250000:1;
 20743:424:240:15.0:250000:1;
 24839:176:144:15.0:180000:1
.
a=rtpmap:122 X-H264UC/90000
a=fmtp:122 packetization-mode=1;mst-mode-NI-TC
a=rtpmap:121 x-rtvc1/90000

m=video 55569 RTP/AVP 122 121 123 indicates the order of preference to use video codecs is 122 121 123
a=rtpmap:122 X-H264UC indicates that 122 is Microsofts specific version of H.264 SVC
packetization-mode=1 indicates that UCConfig Mode 1 is the maximum supported SVC scalability mode.

This shows that the preferred video codec is Microsofts specific version of H.264 SVC to UCConfig Mode 1.

16) In the above section, a=rtpmap:121 x-rtvc1 indicates that if H.264/SVC is not supported by the receiving endpoints, then the second choice is 121 that relates to Microsofts Real-Time Video (RTV) codec.

17) Unlike the a=rtpmap:122 X-H264UC line relating to H.264/SVC, the section on RTV provides much more details about the Skype for Business clients RTV capabilities in the associated a=x-caps: list as we can see from above.

a=x-caps:121 263:1920:1080:30.0:2000000:1;
 4359:1280:720:30.0:1500000:1;
 8455:640:480:30.0:600000:1;
 12551:640:360:30.0:600000:1;
 16647:352:288:15.0:250000:1;
 20743:424:240:15.0:250000:1;
 24839:176:144:15.0:180000:1

These indicate that this (Skype for Business 2015) client can support RTV at the following resolutions:-
1920x1080; 1280x720; 640x480; 640x360; 352x288; 424x240 and 176x144

Note: Lync 2010 clients can only support RTV with a maximum 1280x720 resolution at 30 frames per second.

Note:- In the RTP/AVP (RTP Audio Video Profile), the numbers assigned to the various codecs are referred to as their PT- Payload Type - they identify what the actual codec is against its name. These numbers range between 0 - 127. These Payload Type numbers fit into categories as being either reserved; assigned to a specific codec; unassigned or dynamic. The dynamic range is 96-127, so as the name implies, the PT number allocated to a specific codec in this range could change between different conference sessions. So for example, in the above trace, 122 relates to X-H264UC which is Microsofts specific version of H.264/SVC. But as it's in the dynamic range, be aware that in another trace, any number in the 96-127 range could then relate to X-H264UC.

18) From the above, you can see that the SDP statement shows what audio and video codecs the particular Skype for Business 2015 (Lync 2013) client supports in preferential order. However, with regards to supporting the Microsoft H.264/SVC codec, it only indicates if it is supported and not the extent of that support.

For example, whilst the SDP statement might indicate that H.264/SVC is supported, it does not indicate if the client can support this at 1920x1080 or is limited to just 1280x720.

To determine the level of H.264/SVC support, we need to look at the Skype for Business clients hardware and check how it handles encoding and decoding the video to and from H.264/SVC. This is a function of several features including the Operating System, Graphics, Camera and CPU Cores.

Please see: Appendix E: How well does your PC support Skype for Business 2015 H.264/SVC


For a complete picture, please take a closer look at all the other papers in this series about Skype for Business 2015. 


References:
Microsoft Lync Server 2013 Unleashed. ISBN-13 978-0-672-33615-7