Implement "Speed" option on RTSP "PLAY" command by Changing Live555 Code =============================================================================== Architecture: * Live555 RTSP stack is used by the client component of UTC's Prism surveillance product. * In particular, the streaming driver (session_lnvr.dll) of Prism client uses this open source software. * The driver statically links the Live555 library. * The driver communicates with the Live555 RTSP stack via RTSPAsyncAdapter, which is based on testRTSPClient demo application of Live555 but significantly modified to fit UTC architecture. * RTSPAsyncAdapter modules (United Technologies Corp) included in the attached zip file (along with Live555 modules): RTSPAsyncAdapter.cpp RTSPAsyncAdapter.h * Version of Live555 source used: "2015.05.31" * Changes to Live555 code are limited to liveMedia/include/MediaSession.hh, liveMedia/include/RTSPClient.hh, and liveMedia/RTSPClient.cpp * This version of Live555 ("2015.05.31") is integrated into UTC Prism surveillance product and tested for "Speed:" option support. The changes worked. Change Details: 1. RTSPClient.cpp: * Implement new method, void RTSPClient::setSpeed(MediaSession& session, float speed) * Implement new method, static char* createSpeedString(float speed) * Enhance method, RTSPCLient::setRequestFields() method to add 'Speed:" option to PLAY command * Implement new method, Boolean RTSPClient::parseSpeedParam(char const* paramStr, float& speed) to process 'Speed' parameter in response * Enhance RTSPClient::handlePLAYResponse() method to handle 'Speed:" option * Initialize & retrieve speedParamsStr in RTSPClient::handleResponseBytes() method 2. RTSPClient.hh: * Declare new method, void RTSPClient::setSpeed(MediaSession& session, float speed) to set speed property in MediaSession and MediaSubsession objects. * Declare new method, Boolean RTSPClient::parseSpeedParam(char const* paramStr, float& speed); * Modify declaration of method, Boolean RTSPClient::handlePLAYResponse(MediaSession& session, MediaSubsession& subsession, char const* scaleParamsStr, char const* rangeParamsStr, char const* rtpInfoParamsStr, const char* speedParamsStr); 3. MediaSession.hh: * Define 'fSpeed' property and implement new method, float& MediaSession::speed() to access it. * Define 'fSpeed' property and implement new method, float& MediaSubsession::speed() to access it.