[vlc-commits] chromecast: add the known player commands to send to the player
Steve Lhomme
git at videolan.org
Fri Mar 25 09:06:42 CET 2016
vlc | branch: master | Steve Lhomme <robux4 at videolabs.io> | Mon Mar 21 15:01:23 2016 +0100| [1a74d595400d8b9730a609def488977e66626ba5] | committer: Jean-Baptiste Kempf
chromecast: add the known player commands to send to the player
based on https://developers.google.com/cast/docs/reference/messages
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=1a74d595400d8b9730a609def488977e66626ba5
---
modules/stream_out/chromecast/chromecast.h | 7 ++
modules/stream_out/chromecast/chromecast_ctrl.cpp | 93 +++++++++++++++++++++
2 files changed, 100 insertions(+)
diff --git a/modules/stream_out/chromecast/chromecast.h b/modules/stream_out/chromecast/chromecast.h
index 6864434..de7c466 100644
--- a/modules/stream_out/chromecast/chromecast.h
+++ b/modules/stream_out/chromecast/chromecast.h
@@ -110,6 +110,13 @@ struct intf_sys_t
void msgReceiverGetStatus();
void msgPlayerLoad();
+ void msgPlayerPlay();
+ void msgPlayerStop();
+ void msgPlayerPause();
+ void msgPlayerGetStatus();
+ void msgPlayerSeek(const std::string & currentTime);
+ void msgPlayerSetVolume(float volume);
+ void msgPlayerSetMute(bool mute);
void processMessage(const castchannel::CastMessage &msg);
diff --git a/modules/stream_out/chromecast/chromecast_ctrl.cpp b/modules/stream_out/chromecast/chromecast_ctrl.cpp
index f39acc3..8318edc 100644
--- a/modules/stream_out/chromecast/chromecast_ctrl.cpp
+++ b/modules/stream_out/chromecast/chromecast_ctrl.cpp
@@ -685,6 +685,15 @@ void intf_sys_t::msgReceiverLaunchApp()
buildMessage( NAMESPACE_RECEIVER, ss.str() );
}
+void intf_sys_t::msgPlayerGetStatus()
+{
+ std::stringstream ss;
+ ss << "{\"type\":\"GET_STATUS\","
+ << "\"requestId\":" << i_requestId++
+ << "}";
+
+ pushMediaPlayerMessage( ss );
+}
void intf_sys_t::msgPlayerLoad()
{
@@ -706,6 +715,90 @@ void intf_sys_t::msgPlayerLoad()
pushMediaPlayerMessage( ss );
}
+void intf_sys_t::msgPlayerPlay()
+{
+ assert(!mediaSessionId.empty());
+
+ std::stringstream ss;
+ ss << "{\"type\":\"PLAY\","
+ << "\"mediaSessionId\":" << mediaSessionId << ","
+ << "\"requestId\":" << i_requestId++
+ << "}";
+
+ pushMediaPlayerMessage( ss );
+}
+
+void intf_sys_t::msgPlayerStop()
+{
+ assert(!mediaSessionId.empty());
+
+ std::stringstream ss;
+ ss << "{\"type\":\"STOP\","
+ << "\"mediaSessionId\":" << mediaSessionId << ","
+ << "\"requestId\":" << i_requestId++
+ << "}";
+
+ pushMediaPlayerMessage( ss );
+}
+
+void intf_sys_t::msgPlayerPause()
+{
+ assert(!mediaSessionId.empty());
+
+ std::stringstream ss;
+ ss << "{\"type\":\"PAUSE\","
+ << "\"mediaSessionId\":" << mediaSessionId << ","
+ << "\"requestId\":" << i_requestId++
+ << "}";
+
+ pushMediaPlayerMessage( ss );
+}
+
+void intf_sys_t::msgPlayerSetVolume(float f_volume)
+{
+ assert(!mediaSessionId.empty());
+
+ if ( f_volume < 0.0 || f_volume > 1.0)
+ return;
+
+ std::stringstream ss;
+ ss << "{\"type\":\"SET_VOLUME\","
+ << "\"volume\":{\"level\":" << f_volume << "},"
+ << "\"mediaSessionId\":" << mediaSessionId << ","
+ << "\"requestId\":" << i_requestId++
+ << "}";
+
+ pushMediaPlayerMessage( ss );
+}
+
+void intf_sys_t::msgPlayerSetMute(bool b_mute)
+{
+ assert(!mediaSessionId.empty());
+
+ std::stringstream ss;
+ ss << "{\"type\":\"SET_VOLUME\","
+ << "\"volume\":{\"muted\":" << ( b_mute ? "true" : "false" ) << "},"
+ << "\"mediaSessionId\":" << mediaSessionId << ","
+ << "\"requestId\":" << i_requestId++
+ << "}";
+
+ pushMediaPlayerMessage( ss );
+}
+
+void intf_sys_t::msgPlayerSeek(const std::string & currentTime)
+{
+ assert(!mediaSessionId.empty());
+
+ std::stringstream ss;
+ ss << "{\"type\":\"SEEK\","
+ << "\"currentTime\":" << currentTime << ","
+ << "\"mediaSessionId\":" << mediaSessionId << ","
+ << "\"requestId\":" << i_requestId++
+ << "}";
+
+ pushMediaPlayerMessage( ss );
+}
+
/**
* @brief Send a message to the Chromecast
* @param msg the CastMessage to send
More information about the vlc-commits
mailing list