vlc | branch: master | Thomas Guillem <tho...@gllm.fr> | Tue Feb 20 16:55:12 2018 +0100| [a84b999cd9acd0fd20317decfdd73c1bac1e891c] | committer: Thomas Guillem
chromecast: change msg return values All msg*() methods return kInvalidId on error, 1 or the receiver/player request ID on success. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a84b999cd9acd0fd20317decfdd73c1bac1e891c --- modules/stream_out/chromecast/chromecast.h | 43 +++++---- .../chromecast/chromecast_communication.cpp | 102 +++++++++++++-------- modules/stream_out/chromecast/chromecast_ctrl.cpp | 6 +- 3 files changed, 93 insertions(+), 58 deletions(-) diff --git a/modules/stream_out/chromecast/chromecast.h b/modules/stream_out/chromecast/chromecast.h index d928524ef8..6808066ed0 100644 --- a/modules/stream_out/chromecast/chromecast.h +++ b/modules/stream_out/chromecast/chromecast.h @@ -104,24 +104,29 @@ public: */ void disconnect(); - int msgPing(); - int msgPong(); - int msgConnect( const std::string& destinationId ); - - int msgReceiverLaunchApp(); - int msgReceiverGetStatus(); - int msgReceiverClose(const std::string& destinationId); - int msgAuth(); - int msgPlayerLoad( const std::string& destinationId, unsigned int i_port, - const std::string& mime, const vlc_meta_t *p_meta ); - int msgPlayerPlay( const std::string& destinationId, int64_t mediaSessionId ); - int msgPlayerStop( const std::string& destinationId, int64_t mediaSessionId ); - int msgPlayerPause( const std::string& destinationId, int64_t mediaSessionId ); - int msgPlayerGetStatus( const std::string& destinationId ); - int msgPlayerSeek( const std::string& destinationId, int64_t mediaSessionId, - const std::string & currentTime ); - int msgPlayerSetVolume( const std::string& destinationId, int64_t mediaSessionId, - float volume, bool mute); + static const unsigned kInvalidId = 0; + + /* All msg*() methods return kInvalidId on error, 1 or the receiver/player + * request ID on success */ + + unsigned msgPing(); + unsigned msgPong(); + unsigned msgConnect( const std::string& destinationId ); + + unsigned msgReceiverLaunchApp(); + unsigned msgReceiverGetStatus(); + unsigned msgReceiverClose(const std::string& destinationId); + unsigned msgAuth(); + unsigned msgPlayerLoad( const std::string& destinationId, unsigned int i_port, + const std::string& mime, const vlc_meta_t *p_meta ); + unsigned msgPlayerPlay( const std::string& destinationId, int64_t mediaSessionId ); + unsigned msgPlayerStop( const std::string& destinationId, int64_t mediaSessionId ); + unsigned msgPlayerPause( const std::string& destinationId, int64_t mediaSessionId ); + unsigned msgPlayerGetStatus( const std::string& destinationId ); + unsigned msgPlayerSeek( const std::string& destinationId, int64_t mediaSessionId, + const std::string & currentTime ); + unsigned msgPlayerSetVolume( const std::string& destinationId, int64_t mediaSessionId, + float volume, bool mute); ssize_t receive( uint8_t *p_data, size_t i_size, int i_timeout, bool *pb_timeout ); const std::string getServerIp() @@ -138,6 +143,8 @@ private: int pushMediaPlayerMessage( const std::string& destinationId, const std::stringstream & payload ); std::string GetMedia( unsigned int i_port, const std::string& mime, const vlc_meta_t *p_meta ); + unsigned getNextReceiverRequestId(); + unsigned getNextRequestId(); private: vlc_object_t* m_module; diff --git a/modules/stream_out/chromecast/chromecast_communication.cpp b/modules/stream_out/chromecast/chromecast_communication.cpp index 999b48421b..cce61eb689 100644 --- a/modules/stream_out/chromecast/chromecast_communication.cpp +++ b/modules/stream_out/chromecast/chromecast_communication.cpp @@ -167,68 +167,90 @@ ssize_t ChromecastCommunication::receive( uint8_t *p_data, size_t i_size, int i_ /***************************************************************************** * Message preparation *****************************************************************************/ -int ChromecastCommunication::msgAuth() +unsigned ChromecastCommunication::getNextReceiverRequestId() +{ + unsigned id = m_receiver_requestId++; + return likely(id != 0) ? id : m_receiver_requestId++; +} + +unsigned ChromecastCommunication::getNextRequestId() +{ + unsigned id = m_requestId++; + return likely(id != 0) ? id : m_requestId++; +} + +unsigned ChromecastCommunication::msgAuth() { castchannel::DeviceAuthMessage authMessage; authMessage.mutable_challenge(); return buildMessage(NAMESPACE_DEVICEAUTH, authMessage.SerializeAsString(), - DEFAULT_CHOMECAST_RECEIVER, castchannel::CastMessage_PayloadType_BINARY); + DEFAULT_CHOMECAST_RECEIVER, castchannel::CastMessage_PayloadType_BINARY) + == VLC_SUCCESS ? 1 : kInvalidId; } -int ChromecastCommunication::msgPing() +unsigned ChromecastCommunication::msgPing() { std::string s("{\"type\":\"PING\"}"); - return buildMessage( NAMESPACE_HEARTBEAT, s, DEFAULT_CHOMECAST_RECEIVER ); + return buildMessage( NAMESPACE_HEARTBEAT, s, DEFAULT_CHOMECAST_RECEIVER ) + == VLC_SUCCESS ? 1 : kInvalidId; } -int ChromecastCommunication::msgPong() +unsigned ChromecastCommunication::msgPong() { std::string s("{\"type\":\"PONG\"}"); - return buildMessage( NAMESPACE_HEARTBEAT, s, DEFAULT_CHOMECAST_RECEIVER ); + return buildMessage( NAMESPACE_HEARTBEAT, s, DEFAULT_CHOMECAST_RECEIVER ) + == VLC_SUCCESS ? 1 : kInvalidId; } -int ChromecastCommunication::msgConnect( const std::string& destinationId ) +unsigned ChromecastCommunication::msgConnect( const std::string& destinationId ) { std::string s("{\"type\":\"CONNECT\"}"); - return buildMessage( NAMESPACE_CONNECTION, s, destinationId ); + return buildMessage( NAMESPACE_CONNECTION, s, destinationId ) + == VLC_SUCCESS ? 1 : kInvalidId; } -int ChromecastCommunication::msgReceiverClose( const std::string& destinationId ) +unsigned ChromecastCommunication::msgReceiverClose( const std::string& destinationId ) { std::string s("{\"type\":\"CLOSE\"}"); - return buildMessage( NAMESPACE_CONNECTION, s, destinationId ); + return buildMessage( NAMESPACE_CONNECTION, s, destinationId ) + == VLC_SUCCESS ? 1 : kInvalidId; } -int ChromecastCommunication::msgReceiverGetStatus() +unsigned ChromecastCommunication::msgReceiverGetStatus() { + unsigned id = getNextReceiverRequestId(); std::stringstream ss; ss << "{\"type\":\"GET_STATUS\"," - << "\"requestId\":" << m_receiver_requestId++ << "}"; + << "\"requestId\":" << id << "}"; - return buildMessage( NAMESPACE_RECEIVER, ss.str(), DEFAULT_CHOMECAST_RECEIVER ); + return buildMessage( NAMESPACE_RECEIVER, ss.str(), DEFAULT_CHOMECAST_RECEIVER ) + == VLC_SUCCESS ? id : kInvalidId; } -int ChromecastCommunication::msgReceiverLaunchApp() +unsigned ChromecastCommunication::msgReceiverLaunchApp() { + unsigned id = getNextReceiverRequestId(); std::stringstream ss; ss << "{\"type\":\"LAUNCH\"," << "\"appId\":\"" << APP_ID << "\"," - << "\"requestId\":" << m_receiver_requestId++ << "}"; + << "\"requestId\":" << id << "}"; - return buildMessage( NAMESPACE_RECEIVER, ss.str(), DEFAULT_CHOMECAST_RECEIVER ); + return buildMessage( NAMESPACE_RECEIVER, ss.str(), DEFAULT_CHOMECAST_RECEIVER ) + == VLC_SUCCESS ? id : kInvalidId; } -int ChromecastCommunication::msgPlayerGetStatus( const std::string& destinationId ) +unsigned ChromecastCommunication::msgPlayerGetStatus( const std::string& destinationId ) { + unsigned id = getNextRequestId(); std::stringstream ss; ss << "{\"type\":\"GET_STATUS\"," - << "\"requestId\":" << m_requestId++ + << "\"requestId\":" << id << "}"; - return pushMediaPlayerMessage( destinationId, ss ); + return pushMediaPlayerMessage( destinationId, ss ) == VLC_SUCCESS ? id : kInvalidId; } std::string ChromecastCommunication::GetMedia( unsigned int i_port, @@ -305,61 +327,66 @@ std::string ChromecastCommunication::GetMedia( unsigned int i_port, return ss.str(); } -int ChromecastCommunication::msgPlayerLoad( const std::string& destinationId, unsigned int i_port, +unsigned ChromecastCommunication::msgPlayerLoad( const std::string& destinationId, unsigned int i_port, const std::string& mime, const vlc_meta_t *p_meta ) { + unsigned id = getNextRequestId(); std::stringstream ss; ss << "{\"type\":\"LOAD\"," << "\"media\":{" << GetMedia( i_port, mime, p_meta ) << "}," << "\"autoplay\":\"false\"," - << "\"requestId\":" << m_requestId++ + << "\"requestId\":" << id << "}"; - return pushMediaPlayerMessage( destinationId, ss ); + return pushMediaPlayerMessage( destinationId, ss ) == VLC_SUCCESS ? id : kInvalidId; } -int ChromecastCommunication::msgPlayerPlay( const std::string& destinationId, int64_t mediaSessionId ) +unsigned ChromecastCommunication::msgPlayerPlay( const std::string& destinationId, int64_t mediaSessionId ) { assert(mediaSessionId != 0); + unsigned id = getNextRequestId(); std::stringstream ss; ss << "{\"type\":\"PLAY\"," << "\"mediaSessionId\":" << mediaSessionId << "," - << "\"requestId\":" << m_requestId++ + << "\"requestId\":" << id << "}"; - return pushMediaPlayerMessage( destinationId, ss ); + return pushMediaPlayerMessage( destinationId, ss ) == VLC_SUCCESS ? id : kInvalidId; } -int ChromecastCommunication::msgPlayerStop( const std::string& destinationId, int64_t mediaSessionId ) +unsigned ChromecastCommunication::msgPlayerStop( const std::string& destinationId, int64_t mediaSessionId ) { assert(mediaSessionId != 0); + unsigned id = getNextRequestId(); std::stringstream ss; ss << "{\"type\":\"STOP\"," << "\"mediaSessionId\":" << mediaSessionId << "," - << "\"requestId\":" << m_requestId++ + << "\"requestId\":" << id << "}"; - return pushMediaPlayerMessage( destinationId, ss ); + return pushMediaPlayerMessage( destinationId, ss ) == VLC_SUCCESS ? id : kInvalidId; } -int ChromecastCommunication::msgPlayerPause( const std::string& destinationId, int64_t mediaSessionId ) +unsigned ChromecastCommunication::msgPlayerPause( const std::string& destinationId, int64_t mediaSessionId ) { assert(mediaSessionId != 0); + unsigned id = getNextRequestId(); std::stringstream ss; ss << "{\"type\":\"PAUSE\"," << "\"mediaSessionId\":" << mediaSessionId << "," - << "\"requestId\":" << m_requestId++ + << "\"requestId\":" << id << "}"; - return pushMediaPlayerMessage( destinationId, ss ); + return pushMediaPlayerMessage( destinationId, ss ) == VLC_SUCCESS ? id : kInvalidId; } -int ChromecastCommunication::msgPlayerSetVolume( const std::string& destinationId, int64_t mediaSessionId, float f_volume, bool b_mute ) +unsigned ChromecastCommunication::msgPlayerSetVolume( const std::string& destinationId, int64_t mediaSessionId, float f_volume, bool b_mute ) { assert(mediaSessionId != 0); + unsigned id = getNextRequestId(); if ( f_volume < 0.0 || f_volume > 1.0) return VLC_EGENERIC; @@ -368,24 +395,25 @@ int ChromecastCommunication::msgPlayerSetVolume( const std::string& destinationI ss << "{\"type\":\"SET_VOLUME\"," << "\"volume\":{\"level\":" << f_volume << ",\"muted\":" << ( b_mute ? "true" : "false" ) << "}," << "\"mediaSessionId\":" << mediaSessionId << "," - << "\"requestId\":" << m_requestId++ + << "\"requestId\":" << id << "}"; - return pushMediaPlayerMessage( destinationId, ss ); + return pushMediaPlayerMessage( destinationId, ss ) == VLC_SUCCESS ? id : kInvalidId; } -int ChromecastCommunication::msgPlayerSeek( const std::string& destinationId, int64_t mediaSessionId, const std::string& currentTime ) +unsigned ChromecastCommunication::msgPlayerSeek( const std::string& destinationId, int64_t mediaSessionId, const std::string& currentTime ) { assert(mediaSessionId != 0); + unsigned id = getNextRequestId(); std::stringstream ss; ss << "{\"type\":\"SEEK\"," << "\"currentTime\":" << currentTime << "," << "\"mediaSessionId\":" << mediaSessionId << "," - << "\"requestId\":" << m_requestId++ + << "\"requestId\":" << id << "}"; - return pushMediaPlayerMessage( destinationId, ss ); + return pushMediaPlayerMessage( destinationId, ss ) == VLC_SUCCESS ? id : kInvalidId; } /** diff --git a/modules/stream_out/chromecast/chromecast_ctrl.cpp b/modules/stream_out/chromecast/chromecast_ctrl.cpp index d8541bff55..b33462e5e8 100644 --- a/modules/stream_out/chromecast/chromecast_ctrl.cpp +++ b/modules/stream_out/chromecast/chromecast_ctrl.cpp @@ -941,9 +941,9 @@ bool intf_sys_t::requestPlayerSeek(mtime_t pos) if( !isStatePlaying() || m_mediaSessionId == 0 ) return false; - int ret = m_communication.msgPlayerSeek( m_appTransportId, m_mediaSessionId, - timeVLCToCC( pos ) ); - if( ret == VLC_SUCCESS ) + unsigned ret = m_communication.msgPlayerSeek( m_appTransportId, m_mediaSessionId, + timeVLCToCC( pos ) ); + if( ret != ChromecastCommunication::kInvalidId ) { setState( Seeking ); return true; _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits