diff options
Diffstat (limited to 'hlsPlayerControl.cpp')
-rw-r--r-- | hlsPlayerControl.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/hlsPlayerControl.cpp b/hlsPlayerControl.cpp index 168c60e..17bbc12 100644 --- a/hlsPlayerControl.cpp +++ b/hlsPlayerControl.cpp @@ -12,20 +12,26 @@ cControl* cHlsPlayerControl::Create(plexclient::Video* Video) { if(!Video->m_pServer) return NULL; + + // Stop already playing stream + cHlsPlayerControl* c = dynamic_cast<cHlsPlayerControl*>(cControl::Control(true)); + if(c) { + c->Stop(); + } // get Metadata std::string uri = Video->m_pServer->GetUri() + Video->m_sKey; plexclient::MediaContainer *pmcontainer = plexclient::Plexservice::GetMediaContainer(uri); - std::string transcodeUri = plexclient::Plexservice::GetUniversalTranscodeUrl(&pmcontainer->m_vVideos[0]); - - cHlsPlayerControl* playerControl = new cHlsPlayerControl(new cHlsPlayer(transcodeUri, &pmcontainer->m_vVideos[0]), pmcontainer); + std::string transcodeUri = plexclient::Plexservice::GetUniversalTranscodeUrl(&pmcontainer->m_vVideos[0], Video->m_iMyPlayOffset); + cHlsPlayerControl* playerControl = new cHlsPlayerControl(new cHlsPlayer(transcodeUri, &pmcontainer->m_vVideos[0], Video->m_iMyPlayOffset), pmcontainer); playerControl->m_title = pmcontainer->m_vVideos[0].m_sTitle; return playerControl; } cHlsPlayerControl::cHlsPlayerControl(cHlsPlayer* Player, plexclient::MediaContainer* Container) :cControl(Player) { + dsyslog("[plex]: '%s'", __FUNCTION__); player = Player; m_pVideo = &Container->m_vVideos[0]; //m_title = title; @@ -192,6 +198,13 @@ void cHlsPlayerControl::Stop(void) player->Stop(); } +void cHlsPlayerControl::SeekTo(int offset) +{ + if (player) { + player->JumpTo(offset); + } +} + void cHlsPlayerControl::ShowMode(void) { //dsyslog("[plex]: '%s'\n", __FUNCTION__); |