瀏覽代碼

fixed coexistence

philippe44 5 年之前
父節點
當前提交
53361c63cd
共有 3 個文件被更改,包括 6 次插入10 次删除
  1. 1 1
      components/squeezelite/decode.c
  2. 2 1
      components/squeezelite/decode_external.c
  3. 3 8
      components/squeezelite/slimproto.c

+ 1 - 1
components/squeezelite/decode.c

@@ -65,7 +65,7 @@ static void *decode_thread() {
 		toend = (stream.state <= DISCONNECT);
 		UNLOCK_S;
 		LOCK_O;
-		space = !output.external ? _buf_space(outputbuf) : 0;
+		space = _buf_space(outputbuf);
 		UNLOCK_O;
 
 		LOCK_D;

+ 2 - 1
components/squeezelite/decode_external.c

@@ -121,6 +121,7 @@ static bool bt_sink_cmd_handler(bt_sink_cmd_t cmd, ...)
 		output.state = OUTPUT_STOPPED;
 		output.frames_played = 0;
 		_buf_flush(outputbuf);
+		if (decode.state != DECODE_STOPPED) decode.state = DECODE_ERROR;
 		bt_master(true);
 		LOG_INFO("BT sink started");
 		break;
@@ -239,6 +240,7 @@ static bool raop_sink_cmd_handler(raop_event_t event, void *param)
 			output.frames_played = 0;
 			output.external = DECODE_RAOP;
 			output.state = OUTPUT_STOPPED;
+			if (decode.state != DECODE_STOPPED) decode.state = DECODE_ERROR;
 			raop_master(true);
 			LOG_INFO("resizing buffer %u", outputbuf->size);
 			break;
@@ -333,5 +335,4 @@ void decode_resume(int external) {
 		raop_state = RAOP_STOP;
 		break;
 	}
-	_buf_resize(outputbuf, output.init_size);
 }

+ 3 - 8
components/squeezelite/slimproto.c

@@ -283,7 +283,7 @@ static void process_strm(u8_t *pkt, int len) {
 		break;
 	case 'q':
 		decode_flush();
-		output_flush();
+		if (!output.external) output_flush();
 		status.frames_played = 0;
 		stream_disconnect();
 		sendSTAT("STMf", 0);
@@ -291,7 +291,7 @@ static void process_strm(u8_t *pkt, int len) {
 		break;
 	case 'f':
 		decode_flush();
-		output_flush();
+		if (!output.external) output_flush();
 		status.frames_played = 0;
 		if (stream_disconnect()) {
 			sendSTAT("STMf", 0);
@@ -330,12 +330,6 @@ static void process_strm(u8_t *pkt, int len) {
 			LOCK_O;
 			output.state = jiffies ? OUTPUT_START_AT : OUTPUT_RUNNING;
 			output.start_at = jiffies;
-#if EMBEDDED
-			if (output.external) {
-				decode_resume(output.external);
-				output.external = 0;
-			}
-#endif
 			UNLOCK_O;
 
 			LOG_DEBUG("unpause at: %u now: %u", jiffies, gettime_ms());
@@ -382,6 +376,7 @@ static void process_strm(u8_t *pkt, int len) {
 #if EMBEDDED
 			if (output.external) decode_resume(output.external);
 			output.external = 0;
+			_buf_resize(outputbuf, output.init_size);
 #endif
 			output.threshold = strm->output_threshold;
 			output.next_replay_gain = unpackN(&strm->replay_gain);