diff --git a/components/raop/rtp.c b/components/raop/rtp.c index 3ac9fae5..89d2ae9f 100644 --- a/components/raop/rtp.c +++ b/components/raop/rtp.c @@ -72,7 +72,7 @@ static log_level *loglevel = &raop_loglevel; //#define __RTP_STORE // default buffer size -#define BUFFER_FRAMES (44100 / 352 + 1) +#define BUFFER_FRAMES ( (120 * 44100) / (352 * 100) ) #define MAX_PACKET 1408 #define RTP_SYNC (0x01) @@ -499,6 +499,7 @@ static void buffer_push_packet(rtp_t *ctx) { //LOG_INFO("[%p]: discarded frame (W:%hu R:%hu)", ctx, ctx->ab_write, ctx->ab_read); } else if (curframe->ready) { ctx->callback((const u8_t*) curframe->data, curframe->len); + curframe->ready = 0; } else if (now >= playtime) { LOG_DEBUG("[%p]: created zero frame (W:%hu R:%hu)", ctx, ctx->ab_write, ctx->ab_read); ctx->callback(silence_frame, ctx->frame_size * 4); @@ -508,6 +509,7 @@ static void buffer_push_packet(rtp_t *ctx) { if (curframe->ready) { ctx->callback((const u8_t*) curframe->data, curframe->len); + curframe->ready = 0; } else if (now >= playtime) { LOG_DEBUG("[%p]: created zero frame (W:%hu R:%hu)", ctx, ctx->ab_write, ctx->ab_read); ctx->callback(silence_frame, ctx->frame_size * 4); diff --git a/components/squeezelite/decode_external.c b/components/squeezelite/decode_external.c index 7e720e7d..4a66607a 100644 --- a/components/squeezelite/decode_external.c +++ b/components/squeezelite/decode_external.c @@ -118,8 +118,8 @@ static void bt_sink_cmd_handler(bt_sink_cmd_t cmd, ...) LOG_INFO("BT sink stopped"); break; case BT_SINK_RATE: - output.current_sample_rate = va_arg(args, u32_t); - LOG_INFO("Setting BT sample rate %u", output.current_sample_rate); + output.next_sample_rate = va_arg(args, u32_t); + LOG_INFO("Setting BT sample rate %u", output.next_sample_rate); break; case BT_SINK_VOLUME: { u16_t volume = (u16_t) va_arg(args, u32_t); @@ -157,9 +157,9 @@ void raop_sink_cmd_handler(raop_event_t event, void *param) LOG_INFO("Stream", NULL); raop_state = event; output.external = true; - output.current_sample_rate = 44100; + output.next_sample_rate = 44100; output.state = OUTPUT_BUFFER; - output.threshold = 5; + output.threshold = 10; break; case RAOP_STOP: LOG_INFO("Stop", NULL);