diff options
| -rw-r--r-- | PlexHTTPRequestHandler.cpp | 5 | ||||
| -rw-r--r-- | Plexservice.cpp | 10 | ||||
| -rw-r--r-- | hlsPlayer.cpp | 27 | ||||
| -rw-r--r-- | m3u8Parser.cpp | 17 | ||||
| -rw-r--r-- | m3u8Parser.h | 1 | ||||
| -rw-r--r-- | plex.cpp | 32 | ||||
| -rw-r--r-- | plexgdm.cpp | 6 | 
7 files changed, 42 insertions, 56 deletions
| diff --git a/PlexHTTPRequestHandler.cpp b/PlexHTTPRequestHandler.cpp index 034a739..7fc3415 100644 --- a/PlexHTTPRequestHandler.cpp +++ b/PlexHTTPRequestHandler.cpp @@ -93,8 +93,7 @@ void ResourceRequestHandler::handleRequest(Poco::Net::HTTPServerRequest& request  	response.setStatus(Poco::Net::HTTPResponse::HTTP_REASON_OK); -	 -	std::cout << "Resources Response sent..." << std::endl; +	dsyslog("[plex]Resources Response sent...");  }  void PlayerRequestHandler::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net::HTTPServerResponse& response){ @@ -112,7 +111,7 @@ void PlayerRequestHandler::handleRequest(Poco::Net::HTTPServerRequest& request,  		std::ostream& ostr = response.send(); // Stream must not be empty!  		ostr << " ";  		response.setStatus(Poco::Net::HTTPResponse::HTTP_REASON_OK); -		std::cout << "OPTION Reply send" << std::endl; +		dsyslog("[plex]OPTION Reply send");  		return;  	}  diff --git a/Plexservice.cpp b/Plexservice.cpp index fe73391..cf926c3 100644 --- a/Plexservice.cpp +++ b/Plexservice.cpp @@ -317,15 +317,7 @@ std::string Plexservice::GetUniversalTranscodeUrl(Video* video)  	params << "&videoResolution=1920x1080";  	params << "&videoQuality=100";  	params << "&session=" << encode(Config::GetInstance().GetUUID()); // TODO: generate Random SessionID -	 -	//params << "&X-Plex-Client-Identifier=" << encode(Config::GetInstance().GetUUID()); -	//params << "&X-Plex-Product=Plex%20Home%20Theater"; -	//params << "&X-Plex-Device=PC"; -	//params << "&X-Plex-Platform=Plex%20Home%20Theater"; -	//params << "&X-Plex-Model=Linux"; -	//params << "&X-Plex-Platform-Version=7"; -	//params << "&X-Plex-Version=1.2.12"; -	//params << "&X-Plex-Device-Name=" << "Plex%2FWeb%20(Chrome)"; +  	return pServer->GetUri() + params.str();  } diff --git a/hlsPlayer.cpp b/hlsPlayer.cpp index 6c8d70c..4d19384 100644 --- a/hlsPlayer.cpp +++ b/hlsPlayer.cpp @@ -43,8 +43,8 @@ void cHlsSegmentLoader::Action(void)  	int estSize = EstimateSegmentSize();  	m_ringBufferSize = MEGABYTE(estSize*3); - -	std::cout << "Create Ringbuffer " << estSize*3 << "MB" << std::endl; +	 +	isyslog("[plex]%s Create Ringbuffer %d MB", __FUNCTION__, estSize*3);  	m_pRingbuffer = new cRingBufferLinear(m_ringBufferSize, 2*TS_SIZE); @@ -102,7 +102,7 @@ void cHlsSegmentLoader::LoadStartList(void)  		return;  	} -	m_startParser.Parse(startFile); +	bool res = m_startParser.Parse(startFile);  	pcrecpp::RE re("([0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12})", pcrecpp::RE_Options(PCRE_CASELESS));  	string value; @@ -112,6 +112,9 @@ void cHlsSegmentLoader::LoadStartList(void)  int cHlsSegmentLoader::EstimateSegmentSize()  { +	if(&m_startParser.vPlaylistItems[0] == NULL) { +		esyslog("[plex]%s first element NULL", __FUNCTION__); +	}  	double bandw = m_startParser.vPlaylistItems[0].bandwidth / 8.0 / 1000.0 / 1000.0;  	int len = m_indexParser.TargetDuration; @@ -121,8 +124,7 @@ int cHlsSegmentLoader::EstimateSegmentSize()  }  bool cHlsSegmentLoader::LoadSegment(std::string segmentUri) -{ -	std::cout << "Loading Segment: " << segmentUri << "... "; +{	  	Poco::Net::HTTPRequest segmentRequest(Poco::Net::HTTPRequest::HTTP_GET, segmentUri);  	AddHeader(segmentRequest);  	m_pClientSession->sendRequest(segmentRequest); @@ -132,10 +134,10 @@ bool cHlsSegmentLoader::LoadSegment(std::string segmentUri)  	if(segmentResponse.getStatus() != 200) {  		// error -		std::cout << "failed." << std::endl; +		esyslog("[plex]%s Loading Segment: %s failed.", __FUNCTION__, segmentUri.c_str());  		return false;  	} -	std::cout << "successfully." << std::endl; +	dsyslog("[plex]%s Loading Segment: %s successfully.", __FUNCTION__, segmentUri.c_str());  	// copy response @@ -145,7 +147,8 @@ bool cHlsSegmentLoader::LoadSegment(std::string segmentUri)  	while(n > 0) {  		m = m_pRingbuffer->Put(m_pBuffer, n);  		if(m < n) { -			// oops, this should not happen. Data doesn't fitted completly into ringbuffer +			//  +			esyslog("[plex]%s oops, this should not happen. Segment doesn't fitted completly into ringbuffer", __FUNCTION__);  			break;  		} else {  			segmentFile.read(reinterpret_cast<char*>(m_pBuffer), sizeof(m_pBuffer)); @@ -157,6 +160,7 @@ bool cHlsSegmentLoader::LoadSegment(std::string segmentUri)  int cHlsSegmentLoader::GetSegmentSize(int segmentIndex)  { +	dsyslog("[plex]%s Segment %d", __FUNCTION__, segmentIndex);  	if(m_indexParser.vPlaylistItems[segmentIndex].size > 0) {  		return m_indexParser.vPlaylistItems[segmentIndex].size;  	} @@ -185,6 +189,7 @@ void cHlsSegmentLoader::CloseConnection(void)  bool cHlsSegmentLoader::ConnectToServer(void)  { +	dsyslog("[plex]%s", __FUNCTION__);  	if(!m_pClientSession)  		m_pClientSession = new Poco::Net::HTTPClientSession(m_startUri.getHost(), m_startUri.getPort()); @@ -217,6 +222,7 @@ bool cHlsSegmentLoader::BufferFilled(void)  bool cHlsSegmentLoader::StopLoader(void)  { +	dsyslog("[plex]%s", __FUNCTION__);  	std::string stopUri = "/video/:/transcode/segmented/stop?session=" + m_sessionCookie;  	Poco::Net::HTTPRequest req(Poco::Net::HTTPRequest::HTTP_GET, stopUri);  	m_pClientSession->sendRequest(req); @@ -307,6 +313,7 @@ bool cHlsPlayer::GetIndex(int& Current, int& Total, bool SnapToIFrame)  bool cHlsPlayer::GetReplayMode(bool& Play, bool& Forward, int& Speed)  { +	dsyslog("[plex]%s", __FUNCTION__);  	Play = (playMode == pmPlay);  	Forward = true;  	Speed = -1; @@ -315,7 +322,7 @@ bool cHlsPlayer::GetReplayMode(bool& Play, bool& Forward, int& Speed)  void cHlsPlayer::Pause(void)  { -	// from vdr-1.7.34 +	dsyslog("[plex]%s", __FUNCTION__);  	if (playMode == pmPause) {  		Play();  	} else { @@ -328,7 +335,7 @@ void cHlsPlayer::Pause(void)  void cHlsPlayer::Play(void)  { -	// from vdr-1.7.34 +	dsyslog("[plex]%s", __FUNCTION__);  	if (playMode != pmPlay) {  		LOCK_THREAD; diff --git a/m3u8Parser.cpp b/m3u8Parser.cpp index 8d7382b..9c2657f 100644 --- a/m3u8Parser.cpp +++ b/m3u8Parser.cpp @@ -1,5 +1,6 @@  #include "m3u8Parser.h"  #include <pcrecpp.h> +#include <vdr/tools.h>  cM3u8Parser::cM3u8Parser()  { @@ -38,9 +39,15 @@ bool cM3u8Parser::Parse(std::istream& m3u8)  	while (std::getline(m3u8, line)) {  		if(lineNo == 0 && "#EXTM3U" == line ) { +			lineNo++; +			continue; +		} else if(lineNo == 0) {  			// Invalid File  			ok = false; -			continue; +			esyslog("[plex]%s m3u8 is invalid. dumping File:", __FUNCTION__); +			esyslog("[plex]%s", line.c_str()); +			eDump(m3u8); +			break;  		}  		if( re.FullMatch(line) ) { @@ -99,6 +106,14 @@ bool cM3u8Parser::Parse(std::istream& m3u8)  	return ok;  } +void cM3u8Parser::eDump(std::istream &m3u8) +{ +	std::string line; +	while (std::getline(m3u8, line)) { +		esyslog("[plex]%s", line.c_str()); +	} +} +  /*  #EXTM3U  #EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=4000000 diff --git a/m3u8Parser.h b/m3u8Parser.h index 0f52002..3bd0ae2 100644 --- a/m3u8Parser.h +++ b/m3u8Parser.h @@ -17,6 +17,7 @@ public:  	};  private:  	void Init(); +	void eDump(std::istream &m3u8);  public:  	std::vector<playListItem> vPlaylistItems; @@ -14,7 +14,7 @@ char ConfigDisableRemote;		///< disable remote during external play  */  static void PlayFile(std::string filename, plexclient::Video* pVid)  { -    dsyslog("[plex]: play file '%s'\n", filename.c_str()); +    isyslog("[plex]: play file '%s'\n", filename.c_str());      //cControl::Launch(new cMyControl(filename));  	cControl::Launch(new cHlsPlayerControl(new cHlsPlayer(filename), pVid->m_sTitle.c_str()));  } @@ -26,15 +26,6 @@ static void PlayFile(std::string filename, plexclient::Video* pVid)  static char ShowBrowser;		///< flag show browser  static plexclient::PlexServer* pPlexServer; -/* -static const char *BrowserStartDir;	///< browser start directory -static const NameFilter *BrowserFilters;	///< browser name filters -static int DirStackSize;		///< size of directory stack -static int DirStackUsed;		///< entries used of directory stack -static char **DirStack;			///< current path directory stack - -*/ -  cPlexBrowser::cPlexBrowser(const char *title, plexclient::PlexServer* pServ) :cOsdMenu(title) { @@ -127,7 +118,6 @@ eOSState cPlexBrowser::LevelUp() {  				uri += "/";  			}  		} -	std::cout << "m_sSection: " << uri << std::endl;  	pCont = pService->GetSection(uri); @@ -136,19 +126,12 @@ eOSState cPlexBrowser::LevelUp() {  }  eOSState cPlexBrowser::ProcessSelected() { -    std::string fullUri; -    //char *filename; -    //char *tmp; -      int current = Current();		// get current menu item index      cPlexOsdItem *item = static_cast<cPlexOsdItem*>(Get(current));  	if(item->IsVideo()) { -		plexclient::Video* pVid = item->GetAttachedVideo(); -		fullUri = pService->GetServer()->GetUri() + pVid->m_pMedia->m_sPartKey;	 -		std::cout << "TrancodeUri: " << pService->GetUniversalTranscodeUrl(pVid) << std::endl; -		 +		plexclient::Video* pVid = item->GetAttachedVideo();		  		PlayFile(pService->GetUniversalTranscodeUrl(pVid).c_str(), pVid);  		return osEnd;  	} @@ -303,12 +286,6 @@ bool cMyPlugin::ProcessArgs(int argc, char *argv[])  */  bool cMyPlugin::Initialize(void)  { -    //dsyslog("[plex]%s:\n", __FUNCTION__); - -    // FIXME: can delay until needed? -    //Status = new cMyStatus;		// start monitoring -    // FIXME: destructs memory -	  	// First Startup? Save UUID   	SetupStore("UUID", Config::GetInstance().GetUUID().c_str()); @@ -321,8 +298,7 @@ bool cMyPlugin::Initialize(void)  		plexclient::ControlServer::GetInstance().Start();  	} else { -		perror("No Plexserver found"); -		std::cout << "No Plexmediaserver found" << std::endl; +		esyslog("[plex]No Plexmediaserver found");  	}      return true; @@ -344,7 +320,7 @@ cOsdObject *cMyPlugin::MainMenuAction(void)      //dsyslog("[plex]%s:\n", __FUNCTION__);      if (ShowBrowser) { -		return new cPlexBrowser("Newest", pPlexServer); +		return new cPlexBrowser("Browse Plex", pPlexServer);      }      return new cPlayMenu("Plex");  } diff --git a/plexgdm.cpp b/plexgdm.cpp index 769e5dd..a2aeb6d 100644 --- a/plexgdm.cpp +++ b/plexgdm.cpp @@ -101,7 +101,6 @@ try {  }  	catch(Poco::Exception &exc){  		esyslog("[plex]Exception in %s s%", __func__, exc.displayText().c_str() ); -		std::cout << "[plex]Exception: in " << __func__ << " | " << exc.displayText() << std::endl;  	}  } @@ -130,12 +129,10 @@ void plexgdm::discover()  			if(buf.find("200 OK") != std::string::npos) {  				vBuffer[sender.host().toString()] = buf;  			} -			//std::cout << "Discover received from: " << sender.host().toString() << "\nData:\n" << buf << std::endl;  		}  	}  	catch(Poco::TimeoutException &exc){ -		//dsyslog("[plex]TimeoutException in %s s%", __func__, exc.displayText().c_str() ); -		std::cout << "[plex]TimeoutException: in " << __func__ << " | " << exc.displayText() << std::endl; +		dsyslog("[plex]TimeoutException in %s s%", __func__, exc.displayText().c_str() );  	}  	socket.close(); @@ -151,7 +148,6 @@ void plexgdm::discover()  void plexgdm::stopRegistration()  { -	std::cout << "stop Reg" << std::endl;  	if(m_registrationIsRunning) {  		m_registrationIsRunning = false;  		m_waitCondition.Broadcast(); | 
