How to interpret particular traces in the Live Meeting Console log
The QUESTION, I was asked recently, what does this trace really mean ?
1939 [MC] 17:59:14:566 GMT [PID 4644] [THREAD 260] [D] [X-AV] SipAudioVideoSession::OnMediaStreamStateChanged: oldState = 2,newState = 4,direction = 1,reason = 1
ANSWER:
Considering Live Meeting Console is based of UCC API 1.0.
The states referred here are described here: https://msdn.microsoft.com/en-us/library/uccapilib.ucc_media_stream_state.aspx
Member name |
Description |
UCCMSS_ACTIVE |
A flag indicating that the RTP session is flowing. |
UCCMSS_INACTIVE |
A flag indicating that the RTP session is not flowing. |
UCCMSS_STARTED |
A flag indicating the media stream is started, but the associated RTP session has not started to flow. |
UCCMSS_STOPPED |
A flag indicating that RTP and RTCP sessions are stopped. |
Remarks
Win32 COM/C++ Syntax
typedef enum UCC_MEDIA_STREAM_STATE
{
UCCMSS_STARTED = 0x0000001,
UCCMSS_ACTIVE = 0x0000002,
UCCMSS_INACTIVE = 0x0000003,
UCCMSS_STOPPED = 0x0000004
};
The reason is described here:
Members
Member name |
Description |
UCCMSSCR_DEVICE_ERROR |
A flag indicating that the media state changed because of a device error. |
UCCMSSCR_ERROR |
A flag indicating that the media state changed because of an error. |
UCCMSSCR_MEDIA_CONNECTIVITY_FAILURE |
A flag indicating that the media state changed because the media failed to be connected to the remote endpoint. |
UCCMSSCR_NETWORK_BANDWIDTH_LIMITATION |
A flag indicating that the media state changed because of the limitation of the network bandwidth. |
UCCMSSCR_NO_DEVICE |
A flag indicating that the media state changed because no media device is found. |
UCCMSSCR_NO_PORT |
A flag indicating that the media state changed because no port is found. |
UCCMSSCR_NORMAL |
A flag indicating that the media state changed because of a normal operation or event. |
UCCMSSCR_PORT_MAPPING_FAILURE |
A flag indicating that the media state changed because the specified port could not be mapped. |
UCCMSSCR_REMOTE_REQUEST |
A flag indicating that the media state changed because of the request by the remote endpoint. |
UCCMSSCR_TIMEOUT |
A flag indicating that the media state changed because it has timed out. |
Remarks
An application can examine the reason for a media state change by reading the Reason property on the IUccMediaChannelEvent and IUccAudioVideoMediaChannelStreamsEvent interfaces and comparing it against the values defined here.
Win32 COM/C++ Syntax
typedef enum UCC_MEDIA_STREAM_STATE_CHANGE_REASON
{
UCCMSSCR_NORMAL,
UCCMSSCR_TIMEOUT,
UCCMSSCR_NO_DEVICE,
UCCMSSCR_NO_PORT,
UCCMSSCR_PORT_MAPPING_FAILURE,
UCCMSSCR_REMOTE_REQUEST,
UCCMSSCR_MEDIA_CONNECTIVITY_FAILURE,
UCCMSSCR_NETWORK_BANDWIDTH_LIMITATION,
UCCMSSCR_DEVICE_ERROR,
UCCMSSCR_ERROR
};
Conclusion:
“1939 [MC] 17:59:14:566 GMT [PID 4644] [THREAD 260] [D] [X-AV] SipAudioVideoSession::OnMediaStreamStateChanged: oldState = 2,newState = 4,direction = 1,reason = 1”
Means: Media Stream is moving from Active state to Stopped state, because the connection TIMED Out. I am not sure how that maps to RTP timeout, but hopefully someone else can provide details on that, else let me know and I will dig it further up.
The Callback “OnMediaStreamStateChanged” is described here: https://msdn.microsoft.com/en-us/library/microsoft.office.interop.uccapi._iuccaudiovideomediachannelevents.onmediastreamstatechanged(office.12).aspx