dynamic duration buffer adjustment

This commit is contained in:
Chuck
2025-09-12 17:57:06 -04:00
parent 12b99024a4
commit 4aa307c8dd
4 changed files with 19 additions and 21 deletions

View File

@@ -1002,19 +1002,18 @@ class LeaderboardManager:
# Add buffer time for smooth cycling (configurable %)
buffer_time = total_time * self.duration_buffer
# If looping is enabled, ensure we complete at least one full cycle
# and add extra time to ensure we don't cut off mid-scroll
# Calculate duration for single complete pass
if self.loop:
# Add extra buffer for looping to ensure smooth transition
# Use a more generous buffer to ensure complete content display
loop_buffer = total_time * 0.2 # 20% extra for looping (increased from 15%)
# For looping: add buffer to ensure smooth transition
loop_buffer = total_time * 0.05 # 5% extra for looping
calculated_duration = int(total_time + buffer_time + loop_buffer)
logger.debug(f"Looping enabled, added {loop_buffer:.2f}s loop buffer")
else:
# Even without looping, add extra buffer to ensure complete display
extra_buffer = total_time * 0.15 # 15% extra to ensure complete content display (increased from 10%)
calculated_duration = int(total_time + buffer_time + extra_buffer)
logger.debug(f"No looping, added {extra_buffer:.2f}s extra buffer for complete display")
# For single pass: precise calculation to show content exactly once
# Add minimal buffer only to prevent cutting off the last content
completion_buffer = total_time * 0.02 # 2% extra to ensure complete display
calculated_duration = int(total_time + buffer_time + completion_buffer)
logger.debug(f"Single pass mode, added {completion_buffer:.2f}s completion buffer for precise timing")
# Apply configured min/max limits
if calculated_duration < self.min_duration:

View File

@@ -1377,19 +1377,18 @@ class OddsTickerManager:
# Add buffer time for smooth cycling (configurable %)
buffer_time = total_time * self.duration_buffer
# If looping is enabled, ensure we complete at least one full cycle
# and add extra time to ensure we don't cut off mid-scroll
# Calculate duration for single complete pass
if self.loop:
# Add minimal buffer for looping to ensure smooth transition
# Reduced buffer to prevent excessive duration while maintaining smoothness
loop_buffer = total_time * 0.05 # 5% extra for looping (reduced from 20%)
# For looping: add minimal buffer to ensure smooth transition
loop_buffer = total_time * 0.05 # 5% extra for looping
calculated_duration = int(total_time + buffer_time + loop_buffer)
logger.debug(f"Looping enabled, added {loop_buffer:.2f}s loop buffer")
else:
# Even without looping, add minimal buffer to ensure complete display
extra_buffer = total_time * 0.05 # 5% extra to ensure complete content display (reduced from 15%)
calculated_duration = int(total_time + buffer_time + extra_buffer)
logger.debug(f"No looping, added {extra_buffer:.2f}s extra buffer for complete display")
# For single pass: precise calculation to show content exactly once
# Add minimal buffer only to prevent cutting off the last content
completion_buffer = total_time * 0.02 # 2% extra to ensure complete display
calculated_duration = int(total_time + buffer_time + completion_buffer)
logger.debug(f"Single pass mode, added {completion_buffer:.2f}s completion buffer for precise timing")
# Apply configured min/max limits
if calculated_duration < self.min_duration: