Fixes for DTSC metadata handling
This commit is contained in:
		
							parent
							
								
									f862263354
								
							
						
					
					
						commit
						63acbb1ddb
					
				
					 12 changed files with 235 additions and 71 deletions
				
			
		|  | @ -276,7 +276,7 @@ namespace Mist{ | |||
|     // If a protocol does not support any codecs, we assume you know what you're doing
 | ||||
|     if (!capa.isMember("codecs")){return true;} | ||||
|     if (!isInitialized){initialize();} | ||||
|     meta.refresh(); | ||||
|     meta.reloadReplacedPagesIfNeeded(); | ||||
|     if (getSupportedTracks().size()){ | ||||
|       if (!userSelect.size()){selectDefaultTracks();} | ||||
|       size_t mainTrack = getMainSelectedTrack(); | ||||
|  | @ -374,7 +374,6 @@ namespace Mist{ | |||
|       meta.reInit(streamName, false); | ||||
|     } | ||||
|     if (!meta){return;} | ||||
|     meta.refresh(); | ||||
|     isInitialized = true; | ||||
|     statComm.reload(); | ||||
|     stats(true); | ||||
|  | @ -387,7 +386,7 @@ namespace Mist{ | |||
|           break; | ||||
|         } | ||||
|         Util::wait(500); | ||||
|         meta.refresh(); | ||||
|         meta.reloadReplacedPagesIfNeeded(); | ||||
|         stats(); | ||||
|       } | ||||
|     } | ||||
|  | @ -406,7 +405,7 @@ namespace Mist{ | |||
|       if (!isInitialized){return false;} | ||||
|     } | ||||
| 
 | ||||
|     meta.refresh(); | ||||
|     meta.reloadReplacedPagesIfNeeded(); | ||||
| 
 | ||||
|     bool autoSeek = buffer.size(); | ||||
|     uint64_t seekTarget = currentTime(); | ||||
|  | @ -533,7 +532,7 @@ namespace Mist{ | |||
|       WARN_MSG("Load for track %zu key %zu aborted - track does not exist", trackId, keyNum); | ||||
|       return; | ||||
|     } | ||||
|     if (!M.trackLoaded(trackId)){meta.refresh();} | ||||
|     if (!M.trackLoaded(trackId)){meta.reloadReplacedPagesIfNeeded();} | ||||
|     DTSC::Keys keys(M.keys(trackId)); | ||||
|     if (!keys.getValidCount()){ | ||||
|       WARN_MSG("Load for track %zu key %zu aborted - track is empty", trackId, keyNum); | ||||
|  | @ -710,7 +709,7 @@ namespace Mist{ | |||
|       userSelect.erase(tid); | ||||
|       return false; | ||||
|     } | ||||
|     if (!M.trackLoaded(tid)){meta.refresh();} | ||||
|     if (!M.trackLoaded(tid)){meta.reloadReplacedPagesIfNeeded();} | ||||
|     if (!userSelect.count(tid) || !userSelect[tid]){ | ||||
|       WARN_MSG("Aborting seek to %" PRIu64 "ms in track %zu: user select failure (%s)", pos, tid, userSelect.count(tid)?"not connected":"not selected"); | ||||
|       userSelect.erase(tid); | ||||
|  | @ -1496,6 +1495,7 @@ namespace Mist{ | |||
| 
 | ||||
|     sortedPageInfo nxt = *(buffer.begin()); | ||||
| 
 | ||||
|     if (meta.reloadReplacedPagesIfNeeded()){return false;} | ||||
|     if (!M.getValidTracks().count(nxt.tid)){ | ||||
|       dropTrack(nxt.tid, "disappeared from metadata"); | ||||
|       return false; | ||||
|  |  | |||
|  | @ -242,7 +242,7 @@ namespace Mist{ | |||
|         std::string dataPacket = myConn.Received().remove(8 + rSize); | ||||
|         DTSC::Packet metaPack(dataPacket.data(), dataPacket.size()); | ||||
|         DTSC::Scan metaScan = metaPack.getScan(); | ||||
|         meta.refresh(); | ||||
|         meta.reloadReplacedPagesIfNeeded(); | ||||
|         size_t prevTracks = meta.getValidTracks().size(); | ||||
| 
 | ||||
|         size_t tNum = metaScan.getMember("tracks").getSize(); | ||||
|  | @ -256,7 +256,7 @@ namespace Mist{ | |||
|             HIGH_MSG("Already had track: %s", trk.asJSON().toString().c_str()); | ||||
|           } | ||||
|         } | ||||
|         meta.refresh(); | ||||
|         meta.reloadReplacedPagesIfNeeded(); | ||||
|         std::stringstream rep; | ||||
|         rep << "DTSC_HEAD parsed, we went from " << prevTracks << " to " << meta.getValidTracks().size() << " tracks. Bring on those data packets!"; | ||||
|         sendOk(rep.str()); | ||||
|  |  | |||
|  | @ -7,7 +7,7 @@ | |||
| namespace Mist{ | ||||
|   bool OutHLS::isReadyForPlay(){ | ||||
|     if (!isInitialized){initialize();} | ||||
|     meta.refresh(); | ||||
|     meta.reloadReplacedPagesIfNeeded(); | ||||
|     if (!M.getValidTracks().size()){return false;} | ||||
|     uint32_t mainTrack = M.mainTrack(); | ||||
|     if (mainTrack == INVALID_TRACK_ID){return false;} | ||||
|  |  | |||
|  | @ -1073,7 +1073,7 @@ namespace Mist{ | |||
|         newState = streamStatus.mapped[0]; | ||||
|       } | ||||
| 
 | ||||
|       if (meta){meta.refresh();} | ||||
|       if (meta){meta.reloadReplacedPagesIfNeeded();} | ||||
|       if (newState != prevState || (newState == STRMSTAT_READY && M.getValidTracks() != prevTracks)){ | ||||
|         if (newState == STRMSTAT_READY){ | ||||
|           reconnect(); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Thulinma
						Thulinma