Several fixes:
- Fixed bug in stream health function causing loop if track not active - Fixed DTSC pulls ignoring data before the live point - Improved async buffers (deque mode) to spread the tracks more fairly - DTSC pull now implements "ping" and "error" commands - DTSC pulls report suspicious keyframe intervals to the origin and ask for confirmation - DTSC output now accepts these reports and disconnects if there is no match in keyframe intervals - Outputs in async mode now keep the seek point in all tracks when reselecting - Outputs in async mode now default to a starting position in each track that is at a keyframe roughly halfway in the buffer - Outputs in async mode now ignore playback rate (always fastest possible) - Removed code duplication in prepareNext function - Reordered the prepareNext function somewhat to be easier to follow for humans - DTSC output no longer overrides initialSeek function, now uses default implementation - Sanitycheck output now supports both sync and async modes, supports printing multiple timestamps for multiple tracks
This commit is contained in:
		
							parent
							
								
									b89875ea37
								
							
						
					
					
						commit
						f560b88bfe
					
				
					 9 changed files with 257 additions and 222 deletions
				
			
		
							
								
								
									
										13
									
								
								lib/dtsc.cpp
									
										
									
									
									
								
							
							
						
						
									
										13
									
								
								lib/dtsc.cpp
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -1384,8 +1384,13 @@ namespace DTSC{
 | 
			
		|||
      setType(newIdx, M.getType(*it));
 | 
			
		||||
      setCodec(newIdx, M.getCodec(*it));
 | 
			
		||||
      setLang(newIdx, M.getLang(*it));
 | 
			
		||||
      setFirstms(newIdx, M.getFirstms(*it));
 | 
			
		||||
      setLastms(newIdx, M.getLastms(*it));
 | 
			
		||||
      if (copyData){
 | 
			
		||||
        setFirstms(newIdx, M.getFirstms(*it));
 | 
			
		||||
        setLastms(newIdx, M.getLastms(*it));
 | 
			
		||||
      }else{
 | 
			
		||||
        setFirstms(newIdx, 0);
 | 
			
		||||
        setLastms(newIdx, 0);
 | 
			
		||||
      }
 | 
			
		||||
      setBps(newIdx, M.getBps(*it));
 | 
			
		||||
      setMaxBps(newIdx, M.getMaxBps(*it));
 | 
			
		||||
      setFpks(newIdx, M.getFpks(*it));
 | 
			
		||||
| 
						 | 
				
			
			@ -3241,8 +3246,8 @@ namespace DTSC{
 | 
			
		|||
      uint32_t longest_cnt = 0;
 | 
			
		||||
      DTSC::Keys Mkeys(keys(i));
 | 
			
		||||
      uint32_t firstKey = Mkeys.getFirstValid();
 | 
			
		||||
      uint32_t endKey = Mkeys.getEndValid() - 1;
 | 
			
		||||
      for (int k = firstKey; k < endKey; k++){
 | 
			
		||||
      uint32_t endKey = Mkeys.getEndValid();
 | 
			
		||||
      for (uint32_t k = firstKey; k+1 < endKey; k++){
 | 
			
		||||
        uint64_t kDur = Mkeys.getDuration(k);
 | 
			
		||||
        uint64_t kParts = Mkeys.getParts(k);
 | 
			
		||||
        if (!kDur){continue;}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue