JSON blocking fix + output reselect fix for early stream times
This commit is contained in:
		
							parent
							
								
									33488da329
								
							
						
					
					
						commit
						4f7b902453
					
				
					 3 changed files with 16 additions and 8 deletions
				
			
		|  | @ -279,7 +279,7 @@ namespace Mist{ | |||
|         continue; | ||||
|       } | ||||
|       //autoSeeking and target not in bounds? Drop it too.
 | ||||
|       if (autoSeek && myMeta.tracks[*it].lastms < seekTarget - 6000){ | ||||
|       if (autoSeek && myMeta.tracks[*it].lastms < std::max(seekTarget, 6000lu) - 6000){ | ||||
|         toRemove.insert(*it); | ||||
|       } | ||||
|     } | ||||
|  | @ -360,7 +360,7 @@ namespace Mist{ | |||
|               if (myMeta.live){ | ||||
|                 for (std::map<unsigned int, DTSC::Track>::reverse_iterator trit = myMeta.tracks.rbegin(); trit != myMeta.tracks.rend(); trit++){ | ||||
|                   if ((!byType && trit->second.codec == strRef.substr(shift)) || (byType && trit->second.type == strRef.substr(shift)) || strRef.substr(shift) == "*"){ | ||||
|                     if (autoSeek && trit->second.lastms < seekTarget - 6000){continue;} | ||||
|                     if (autoSeek && trit->second.lastms < std::max(seekTarget, 6000lu) - 6000){continue;} | ||||
|                     selectedTracks.insert(trit->first); | ||||
|                     found = true; | ||||
|                     if (!multiSel){break;} | ||||
|  | @ -369,7 +369,7 @@ namespace Mist{ | |||
|               }else{ | ||||
|                 for (std::map<unsigned int, DTSC::Track>::iterator trit = myMeta.tracks.begin(); trit != myMeta.tracks.end(); trit++){ | ||||
|                   if ((!byType && trit->second.codec == strRef.substr(shift)) || (byType && trit->second.type == strRef.substr(shift)) || strRef.substr(shift) == "*"){ | ||||
|                     if (autoSeek && trit->second.lastms < seekTarget - 6000){continue;} | ||||
|                     if (autoSeek && trit->second.lastms < std::max(seekTarget, 6000lu) - 6000){continue;} | ||||
|                     selectedTracks.insert(trit->first); | ||||
|                     found = true; | ||||
|                     if (!multiSel){break;} | ||||
|  | @ -411,6 +411,7 @@ namespace Mist{ | |||
|   void Output::stop(){ | ||||
|     buffer.clear(); | ||||
|     parseData = false; | ||||
|     sought = false; | ||||
|   } | ||||
|    | ||||
|   unsigned int Output::getKeyForTime(long unsigned int trackId, long long timeStamp){ | ||||
|  |  | |||
|  | @ -260,6 +260,7 @@ namespace Mist { | |||
|       //Handle upgrade to websocket if the output supports it
 | ||||
|       if (doesWebsockets() && H.GetHeader("Upgrade") == "websocket"){ | ||||
|         INFO_MSG("Switching to Websocket mode"); | ||||
|         setBlocking(false); | ||||
|         preWebsocketConnect(); | ||||
|         webSock = new HTTP::Websocket(myConn, H); | ||||
|         if (!(*webSock)){ | ||||
|  |  | |||
|  | @ -94,24 +94,30 @@ namespace Mist { | |||
|     static bool recursive = false; | ||||
|     if (recursive){return true;} | ||||
|     recursive = true; | ||||
|     if (keepReselecting && !isPushing()){ | ||||
|     if (keepReselecting && !isPushing() && !myMeta.vod){ | ||||
|       uint64_t maxTimer = 7200; | ||||
|       while (--maxTimer && nProxy.userClient.isAlive() && keepGoing()){ | ||||
|       while (--maxTimer && keepGoing()){ | ||||
|         if (!isBlocking){myConn.spool();} | ||||
|         Util::wait(500); | ||||
|         stats(); | ||||
|         if (Util::getStreamStatus(streamName) != STRMSTAT_READY){ | ||||
|           disconnect(); | ||||
|           if (isInitialized){ | ||||
|             INFO_MSG("Disconnecting from offline stream"); | ||||
|             disconnect(); | ||||
|             stop(); | ||||
|           } | ||||
|         }else{ | ||||
|           updateMeta(); | ||||
|           if (isReadyForPlay()){ | ||||
|             INFO_MSG("Resuming playback!"); | ||||
|             recursive = false; | ||||
|             parseData = true; | ||||
|             return true; | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|       recursive = false; | ||||
|     } | ||||
|     if (!jsonp.size() && !first){ | ||||
|     if (!webSock && !jsonp.size() && !first){ | ||||
|       myConn.SendNow("]\n", 2); | ||||
|     } | ||||
|     myConn.close(); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Thulinma
						Thulinma