From 93b827c977b745ec581afbb8d4b0c2dd3c7a367f Mon Sep 17 00:00:00 2001 From: phintuka Date: Fri, 15 Dec 2006 21:34:18 +0000 Subject: Fix max. queue fill level in Queue(). (Queue() must accept at least one frame if previous Poll() returned true). --- tools/udp_pes_scheduler.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tools/udp_pes_scheduler.c b/tools/udp_pes_scheduler.c index 93e9c32b..9f2d5381 100644 --- a/tools/udp_pes_scheduler.c +++ b/tools/udp_pes_scheduler.c @@ -4,7 +4,7 @@ * See the main source file 'xineliboutput.c' for copyright information and * how to reach the author. * - * $Id: udp_pes_scheduler.c,v 1.14 2006-12-14 18:54:41 phintuka Exp $ + * $Id: udp_pes_scheduler.c,v 1.15 2006-12-15 21:34:18 phintuka Exp $ * */ @@ -463,7 +463,7 @@ bool cUdpScheduler::Poll(int TimeoutMs, bool Master) return true; } - const int limit = m_Master ? MAX_QUEUE_SIZE : MAX_LIVE_QUEUE_SIZE; + int limit = m_Master ? MAX_QUEUE_SIZE : MAX_LIVE_QUEUE_SIZE; if(m_QueuePending >= limit) { uint64_t WaitEnd = cTimeMs::Now(); if(TimeoutMs >= 0) @@ -541,7 +541,8 @@ bool cUdpScheduler::Queue(uint64_t StreamPos, const uchar *Data, int Length) if(m_Handles[0] < 0) return true; - if(m_QueuePending >= MAX_QUEUE_SIZE) + int limit = m_Master ? MAX_QUEUE_SIZE : MAX_LIVE_QUEUE_SIZE; + if(m_QueuePending >= limit) return false; m_BackLog->MakeFrame(StreamPos, Data, Length); -- cgit v1.2.3