From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> The calculation shall attempt to round to number of packets to the closest integer otherwise it can result in 0 packets to be sent at each latency. --- client/player.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/player.c b/client/player.c index 1f56bfd270f6..65f771039258 100644 --- a/client/player.c +++ b/client/player.c @@ -63,6 +63,7 @@ #define NSEC_USEC(_t) (_t / 1000L) #define SEC_USEC(_t) (_t * 1000000L) #define TS_USEC(_ts) (SEC_USEC((_ts)->tv_sec) + NSEC_USEC((_ts)->tv_nsec)) +#define ROUND_CLOSEST(_x, _y) (((_x) + (_y / 2)) / (_y)) #define EP_SRC_LOCATIONS 0x00000003 #define EP_SNK_LOCATIONS 0x00000003 @@ -5031,8 +5032,9 @@ static bool transport_timer_read(struct io *io, void *user_data) return false; } - /* num of packets = latency (ms) / interval (us) */ - num = (qos.ucast.out.latency * 1000 / qos.ucast.out.interval); + /* num of packets = ROUND_CLOSEST(latency (ms) / interval (us)) */ + num = ROUND_CLOSEST(qos.ucast.out.latency * 1000, + qos.ucast.out.interval); ret = transport_send_seq(transport, transport->fd, num); if (ret < 0) { -- 2.44.0