Prechádzať zdrojové kódy

re-align buffer in case of overflow

philippe44 2 rokov pred
rodič
commit
7dfdd7b9e5
1 zmenil súbory, kde vykonal 6 pridanie a 4 odobranie
  1. 6 4
      components/squeezelite/decode_external.c

+ 6 - 4
components/squeezelite/decode_external.c

@@ -68,7 +68,7 @@ extern log_level loglevel;
 static void sink_data_handler(const uint8_t *data, uint32_t len)
 {
     size_t bytes, space;
-	int wait = 5;
+	int wait = 10;
 		
 	// would be better to lock output, but really, it does not matter
 	if (!output.external) {
@@ -106,11 +106,13 @@ static void sink_data_handler(const uint8_t *data, uint32_t len)
 		}
 	}	
 
-	UNLOCK_O;
-	
 	if (!wait) {
-		LOG_WARN("Waited too long, dropping frames");
+        // re-align the buffer according to what we throw away
+        _buf_inc_writep(outputbuf, outputbuf->size - (BYTES_PER_FRAME - (len % BYTES_PER_FRAME)));
+		LOG_WARN("Waited too long, dropping frames %d", len);
 	}
+    
+    UNLOCK_O;
 }
 
 /****************************************************************************************