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: http://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

Copy

typedef enum UCC_MEDIA_STREAM_STATE

{

   UCCMSS_STARTED = 0x0000001,

   UCCMSS_ACTIVE = 0x0000002,

   UCCMSS_INACTIVE = 0x0000003,

   UCCMSS_STOPPED = 0x0000004

};

 

The reason is described here:

 

http://msdn.microsoft.com/en-us/library/microsoft.office.interop.uccapi.ucc_media_stream_state_change_reason(office.12).aspx

 

 

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

Copy

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: http://msdn.microsoft.com/en-us/library/microsoft.office.interop.uccapi._iuccaudiovideomediachannelevents.onmediastreamstatechanged(office.12).aspx