Configuring real-time timestamp generation

Note: This feature is for full-duplex and simplex video endpoints. The procedure and example are shown for full-duplex.

Some 3G-324M terminals can provide unreliable timing information in the video encoded bit streams they generate. This can lead to issues such as inaccurate timestamp information in RTP video packets, which can disrupt the synchronization of video packets in the media stream. In these cases, you can use the Video Access Real Time Timestamp (RTTS) feature as an alternative to generating RTP timestamps, so that reliable timestamp information is included in RTP packets.

Configure any video full-duplex or simplex send RTP endpoint to enable RTTS. When RTTS is enabled, Video Access uses a real-time clock, based on the arrival time of video frames from the 3G interface, to generate the RTP timestamps for transmitted RTP video packets. When RTTS is disabled (the default), Video Access generates RTP timestamps for video frames based on timing information received in the bit stream from the 3G peer video encoder.

To enable RTTS, create the MSP_CMD_RTPFDX_RTTS_CTRL command, and send it to the CG board.

The MSP_CMD_RTPFDX_RTTS_CTRL command uses the msp_ENDPOINT_RTPFDX_RTTS_CTRL structure to determine whether to enable or disable RTTS functionality. By default, RTTS is disabled.

For more information, see Creating and sending MSPP commands and msp_ENDPOINT_RTPFDX_RTTS_CTRL.

The following event can be returned:

Event

Description

MSPEVN_SENDCOMMAND_DONE

MSP_CMD_RTPFDX_RTTS_CTRL command was successfully sent to the specified endpoint on the CG board.

Example

The following example shows how to enable RTTS for the endpoint with the MSP handle ephd:

msp_ENDPOINT_RTPFDX_RTTS_CTRL rttsCmd;
rttsCmd.enable = H2NMS_DWORD(1);
command = mspBuildCommand(MSP_ENDPOINT_RTPFDX_VIDEO_H263,
             MSP_CMD_RTPFDX_RTTS_CTRL);
ret = mspSendCommand(ephd, command, &rttsCmd, sizeof(rttsCmd));
expectedEvent = (MSPEVN_SENDCOMMAND_DONE |
    MSP_CMD_RTPFDX_RTTS_CTRL);
if (WaitForSpecificEvent(gw,  CtaQueueHd, expectedEvent, &event) != 0)
printf("\n\tERROR: mspSendCommand failed to send valid completion event\n");