mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-04-10 21:03:01 +00:00
dynamic duration buffer adjustment
This commit is contained in:
|
Before Width: | Height: | Size: 6.6 KiB After Width: | Height: | Size: 6.6 KiB |
@@ -145,7 +145,7 @@
|
|||||||
"update_interval": 3600,
|
"update_interval": 3600,
|
||||||
"scroll_speed": 1,
|
"scroll_speed": 1,
|
||||||
"scroll_delay": 0.01,
|
"scroll_delay": 0.01,
|
||||||
"loop": true,
|
"loop": false,
|
||||||
"future_fetch_days": 50,
|
"future_fetch_days": 50,
|
||||||
"show_channel_logos": true,
|
"show_channel_logos": true,
|
||||||
"dynamic_duration": true,
|
"dynamic_duration": true,
|
||||||
@@ -188,10 +188,10 @@
|
|||||||
"display_duration": 60,
|
"display_duration": 60,
|
||||||
"loop": false,
|
"loop": false,
|
||||||
"request_timeout": 30,
|
"request_timeout": 30,
|
||||||
"dynamic_duration": false,
|
"dynamic_duration": true,
|
||||||
"min_duration": 45,
|
"min_duration": 45,
|
||||||
"max_duration": 600,
|
"max_duration": 600,
|
||||||
"duration_buffer": 0.3
|
"duration_buffer": 0.1
|
||||||
},
|
},
|
||||||
"calendar": {
|
"calendar": {
|
||||||
"enabled": false,
|
"enabled": false,
|
||||||
|
|||||||
@@ -1002,19 +1002,18 @@ class LeaderboardManager:
|
|||||||
# Add buffer time for smooth cycling (configurable %)
|
# Add buffer time for smooth cycling (configurable %)
|
||||||
buffer_time = total_time * self.duration_buffer
|
buffer_time = total_time * self.duration_buffer
|
||||||
|
|
||||||
# If looping is enabled, ensure we complete at least one full cycle
|
# Calculate duration for single complete pass
|
||||||
# and add extra time to ensure we don't cut off mid-scroll
|
|
||||||
if self.loop:
|
if self.loop:
|
||||||
# Add extra buffer for looping to ensure smooth transition
|
# For looping: add buffer to ensure smooth transition
|
||||||
# Use a more generous buffer to ensure complete content display
|
loop_buffer = total_time * 0.05 # 5% extra for looping
|
||||||
loop_buffer = total_time * 0.2 # 20% extra for looping (increased from 15%)
|
|
||||||
calculated_duration = int(total_time + buffer_time + loop_buffer)
|
calculated_duration = int(total_time + buffer_time + loop_buffer)
|
||||||
logger.debug(f"Looping enabled, added {loop_buffer:.2f}s loop buffer")
|
logger.debug(f"Looping enabled, added {loop_buffer:.2f}s loop buffer")
|
||||||
else:
|
else:
|
||||||
# Even without looping, add extra buffer to ensure complete display
|
# For single pass: precise calculation to show content exactly once
|
||||||
extra_buffer = total_time * 0.15 # 15% extra to ensure complete content display (increased from 10%)
|
# Add minimal buffer only to prevent cutting off the last content
|
||||||
calculated_duration = int(total_time + buffer_time + extra_buffer)
|
completion_buffer = total_time * 0.02 # 2% extra to ensure complete display
|
||||||
logger.debug(f"No looping, added {extra_buffer:.2f}s extra buffer for 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
|
# Apply configured min/max limits
|
||||||
if calculated_duration < self.min_duration:
|
if calculated_duration < self.min_duration:
|
||||||
|
|||||||
@@ -1377,19 +1377,18 @@ class OddsTickerManager:
|
|||||||
# Add buffer time for smooth cycling (configurable %)
|
# Add buffer time for smooth cycling (configurable %)
|
||||||
buffer_time = total_time * self.duration_buffer
|
buffer_time = total_time * self.duration_buffer
|
||||||
|
|
||||||
# If looping is enabled, ensure we complete at least one full cycle
|
# Calculate duration for single complete pass
|
||||||
# and add extra time to ensure we don't cut off mid-scroll
|
|
||||||
if self.loop:
|
if self.loop:
|
||||||
# Add minimal buffer for looping to ensure smooth transition
|
# For looping: add minimal buffer to ensure smooth transition
|
||||||
# Reduced buffer to prevent excessive duration while maintaining smoothness
|
loop_buffer = total_time * 0.05 # 5% extra for looping
|
||||||
loop_buffer = total_time * 0.05 # 5% extra for looping (reduced from 20%)
|
|
||||||
calculated_duration = int(total_time + buffer_time + loop_buffer)
|
calculated_duration = int(total_time + buffer_time + loop_buffer)
|
||||||
logger.debug(f"Looping enabled, added {loop_buffer:.2f}s loop buffer")
|
logger.debug(f"Looping enabled, added {loop_buffer:.2f}s loop buffer")
|
||||||
else:
|
else:
|
||||||
# Even without looping, add minimal buffer to ensure complete display
|
# For single pass: precise calculation to show content exactly once
|
||||||
extra_buffer = total_time * 0.05 # 5% extra to ensure complete content display (reduced from 15%)
|
# Add minimal buffer only to prevent cutting off the last content
|
||||||
calculated_duration = int(total_time + buffer_time + extra_buffer)
|
completion_buffer = total_time * 0.02 # 2% extra to ensure complete display
|
||||||
logger.debug(f"No looping, added {extra_buffer:.2f}s extra buffer for 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
|
# Apply configured min/max limits
|
||||||
if calculated_duration < self.min_duration:
|
if calculated_duration < self.min_duration:
|
||||||
|
|||||||
Reference in New Issue
Block a user