Documentation
¶
Index ¶
- type Config
- func (c Config) AdminSurfaceExposedNonLoopback() (bool, error)
- func (c Config) DiscoveryAdvertisedTunerCount() int
- func (c Config) DiscoveryTunerCountCapped() bool
- func (c Config) FFmpegReconnectRecoveryBudget(safetyMargin time.Duration) (budget time.Duration, bounded bool)
- func (c Config) Redacted() RedactedConfig
- type PlaylistSourceConfig
- type RedactedConfig
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
PlaylistURL string
PlaylistMaxResponseBytes int64
DBPath string
LogDir string
HTTPAddr string
LegacyHTTPAddr string
UPnPEnabled bool
UPnPAddr string
UPnPNotifyInterval time.Duration
UPnPMaxAge time.Duration
UPnPContentDirectoryUpdateIDCacheTTL time.Duration
PrimaryTunerCount int
TunerCount int
PlaylistSources []PlaylistSourceConfig
PlaylistSourcesStartupAuthoritative bool
TraditionalGuideStart int
FriendlyName string
DeviceID string
DeviceAuth string
RefreshSchedule string
PlaylistSyncSourceConcurrency int
InitialPlaylistSyncAttemptTimeout time.Duration
InitialPlaylistSyncRetryBudget time.Duration
ReconcileDynamicRulePaged bool
FFmpegPath string
FFprobePath string
StreamMode string
StartupTimeout time.Duration
StartupRandomAccessRecoveryOnly bool
MinProbeBytes int
MaxFailovers int
FailoverTotalTimeout time.Duration
UpstreamOverlimitCooldown time.Duration
FFmpegReconnectEnabled bool
FFmpegReconnectDelayMax time.Duration
FFmpegReconnectMaxRetries int
FFmpegReconnectHTTPErrors string
FFmpegRWTimeout time.Duration
FFmpegStartupProbeSize int
FFmpegStartupAnalyzeDuration time.Duration
FFmpegInputBufferSize int
FFmpegDiscardCorrupt bool
FFmpegCopyRegenerateTimestamps bool
FFmpegSourceLogLevel string
FFmpegSourceStderrPassthroughEnabled bool
FFmpegSourceStderrLogLevel string
FFmpegSourceStderrMaxLineBytes int
ProducerReadRate float64
ProducerReadRateCatchup float64
ProducerInitialBurst int
BufferChunkBytes int
BufferFlushInterval time.Duration
BufferTSAlign188 bool
StallDetect time.Duration
StallFailoverGrace time.Duration
StallHardDeadline time.Duration
StallTimingStrict bool
StallPolicy string
StallMaxFailovers int
CycleFailureMinHealth time.Duration
SourceProfileFreshness time.Duration
QualityFloorMinBitrateBPS int64
QualityFloorMinResolution int
QualityFloorMinFPS float64
RecoveryFillerEnabled bool
RecoveryFillerMode string
RecoveryFillerGraceMode string
RecoveryFillerInterval time.Duration
RecoveryFillerText string
RecoveryFillerEnableAudio bool
SubscriberJoinLag int
SubscriberSlowPolicy string
SubscriberMaxBlocked time.Duration
SessionIdleTimeout time.Duration
SessionDrainTimeout time.Duration
SessionMaxSubscribers int
SessionHistoryLimit int
SessionSourceHistoryLimit int
SessionSubscriberHistoryLimit int
SourceHealthDrainTimeout time.Duration
PreemptSettleDelay time.Duration
AutoPrioritizeProbeTuneDelay time.Duration
AutoPrioritizeWorkers string
ProbeInterval time.Duration
ProbeTimeout time.Duration
AdminBasicAuth string
AllowOpenAdmin bool
AdminJSONBodyLimitBytes int64
DVRLineupReloadTimeout time.Duration
RequestTimeout time.Duration
RateLimitRPS float64
RateLimitBurst int
RateLimitMaxClients int
RateLimitTrustedProxies []string
TuneBackoffMaxTunes int
TuneBackoffInterval time.Duration
TuneBackoffCooldown time.Duration
EnableMetrics bool
HTTPRequestLogEnabled bool
LogLevel string
CatalogSearchMaxTerms int
CatalogSearchMaxDisjuncts int
CatalogSearchMaxTermRunes int
// contains filtered or unexported fields
}
Config carries runtime settings from CLI flags and environment variables.
func (Config) AdminSurfaceExposedNonLoopback ¶ added in v1.1.1
AdminSurfaceExposedNonLoopback reports whether any HTTP listener exposes the admin/API surface beyond loopback-only scope.
func (Config) DiscoveryAdvertisedTunerCount ¶ added in v1.1.0
DiscoveryAdvertisedTunerCount returns tuner count exposed on discovery endpoints.
func (Config) DiscoveryTunerCountCapped ¶ added in v1.1.0
DiscoveryTunerCountCapped reports whether discovery is capped below internal capacity.
func (Config) FFmpegReconnectRecoveryBudget ¶ added in v1.1.1
func (c Config) FFmpegReconnectRecoveryBudget(safetyMargin time.Duration) (budget time.Duration, bounded bool)
FFmpegReconnectRecoveryBudget reports the bounded time that the shared session should leave the current FFmpeg producer alive after its last live publish. The calculation mirrors the generated input arguments: one rw_timeout window plus at most reconnect_max_retries delays, with the delay rounded up to the whole-second value passed to FFmpeg. A false bounded result means reconnect retries are configured as unlimited.
func (Config) Redacted ¶
func (c Config) Redacted() RedactedConfig
type PlaylistSourceConfig ¶ added in v1.1.0
PlaylistSourceConfig describes one resolved playlist source from startup config.
type RedactedConfig ¶
type RedactedConfig struct {
PlaylistURLConfigured bool `json:"playlist_url_configured"`
PlaylistMaxResponseBytes int64 `json:"playlist_max_response_bytes"`
DBPath string `json:"db_path"`
LogDir string `json:"log_dir"`
HTTPAddr string `json:"http_addr"`
LegacyHTTPAddr string `json:"legacy_http_addr,omitempty"`
UPnPEnabled bool `json:"upnp_enabled"`
UPnPAddr string `json:"upnp_addr"`
UPnPNotifyInterval string `json:"upnp_notify_interval"`
UPnPMaxAge string `json:"upnp_max_age"`
UPnPContentDirectoryUpdateIDCacheTTL string `json:"upnp_content_directory_update_id_cache_ttl"`
PrimaryTunerCount int `json:"primary_tuner_count"`
TunerCount int `json:"tuner_count"`
PlaylistSourceCount int `json:"playlist_source_count"`
PlaylistSourcesStartupAuthoritative bool `json:"playlist_sources_startup_authoritative"`
DiscoveryTunerCount int `json:"discovery_tuner_count"`
DiscoveryTunerCountCapped bool `json:"discovery_tuner_count_capped"`
TraditionalGuideStart int `json:"traditional_guide_start"`
FriendlyName string `json:"friendly_name"`
DeviceID string `json:"device_id"`
DeviceAuthConfigured bool `json:"device_auth_configured"`
RefreshSchedule string `json:"refresh_schedule,omitempty"`
PlaylistSyncSourceConcurrency int `json:"playlist_sync_source_concurrency"`
InitialPlaylistSyncAttemptTimeout string `json:"initial_playlist_sync_attempt_timeout"`
InitialPlaylistSyncRetryBudget string `json:"initial_playlist_sync_retry_budget"`
ReconcileDynamicRulePaged bool `json:"reconcile_dynamic_rule_paged"`
FFmpegPath string `json:"ffmpeg_path"`
FFprobePath string `json:"ffprobe_path"`
StreamMode string `json:"stream_mode"`
StartupTimeout string `json:"startup_timeout"`
StartupRandomAccessRecoveryOnly bool `json:"startup_random_access_recovery_only"`
MinProbeBytes int `json:"min_probe_bytes"`
MaxFailovers int `json:"max_failovers"`
FailoverTotalTimeout string `json:"failover_total_timeout"`
UpstreamOverlimitCooldown string `json:"upstream_overlimit_cooldown"`
FFmpegReconnectEnabled bool `json:"ffmpeg_reconnect_enabled"`
FFmpegReconnectDelayMax string `json:"ffmpeg_reconnect_delay_max"`
FFmpegReconnectMaxRetries int `json:"ffmpeg_reconnect_max_retries"`
FFmpegReconnectHTTPErrors string `json:"ffmpeg_reconnect_http_errors"`
FFmpegRWTimeout string `json:"ffmpeg_rw_timeout"`
FFmpegStartupProbeSize int `json:"ffmpeg_startup_probesize"`
FFmpegStartupAnalyzeDuration string `json:"ffmpeg_startup_analyzeduration"`
FFmpegInputBufferSize int `json:"ffmpeg_input_buffer_size"`
FFmpegDiscardCorrupt bool `json:"ffmpeg_discard_corrupt"`
FFmpegCopyRegenerateTimestamps bool `json:"ffmpeg_copy_regenerate_timestamps"`
FFmpegSourceLogLevel string `json:"ffmpeg_source_log_level"`
FFmpegSourceStderrPassthroughEnabled bool `json:"ffmpeg_source_stderr_passthrough_enabled"`
FFmpegSourceStderrLogLevel string `json:"ffmpeg_source_stderr_log_level"`
FFmpegSourceStderrMaxLineBytes int `json:"ffmpeg_source_stderr_max_line_bytes"`
ProducerReadRate string `json:"producer_readrate"`
ProducerReadRateCatchup string `json:"producer_readrate_catchup"`
ProducerInitialBurst int `json:"producer_initial_burst"`
BufferChunkBytes int `json:"buffer_chunk_bytes"`
BufferFlushInterval string `json:"buffer_flush_interval"`
BufferTSAlign188 bool `json:"buffer_ts_align_188"`
StallDetect string `json:"stall_detect"`
StallFailoverGrace string `json:"stall_failover_grace"`
StallHardDeadline string `json:"stall_hard_deadline"`
StallTimingStrict bool `json:"stall_timing_strict"`
StallPolicy string `json:"stall_policy"`
StallMaxFailovers int `json:"stall_max_failovers"`
CycleFailureMinHealth string `json:"cycle_failure_min_health"`
SourceProfileFreshness string `json:"source_profile_freshness"`
QualityFloorMinBitrateBPS int64 `json:"quality_floor_min_bitrate_bps"`
QualityFloorMinResolution int `json:"quality_floor_min_resolution"`
QualityFloorMinFPS float64 `json:"quality_floor_min_fps"`
RecoveryFillerEnabled bool `json:"recovery_filler_enabled"`
RecoveryFillerMode string `json:"recovery_filler_mode"`
RecoveryFillerGraceMode string `json:"recovery_filler_grace_mode"`
RecoveryFillerInterval string `json:"recovery_filler_interval"`
RecoveryFillerText string `json:"recovery_filler_text"`
RecoveryFillerEnableAudio bool `json:"recovery_filler_enable_audio"`
SubscriberJoinLag int `json:"subscriber_join_lag"`
SubscriberSlowPolicy string `json:"subscriber_slow_policy"`
SubscriberMaxBlocked string `json:"subscriber_max_blocked"`
SessionIdleTimeout string `json:"session_idle_timeout"`
SessionDrainTimeout string `json:"session_drain_timeout"`
SessionMaxSubscribers int `json:"session_max_subscribers"`
SessionHistoryLimit int `json:"session_history_limit"`
SessionSourceHistoryLimit int `json:"session_source_history_limit"`
SessionSubscriberHistoryLimit int `json:"session_subscriber_history_limit"`
SourceHealthDrainTimeout string `json:"source_health_drain_timeout"`
PreemptSettleDelay string `json:"preempt_settle_delay"`
AutoPrioritizeProbeTuneDelay string `json:"auto_prioritize_probe_tune_delay"`
AutoPrioritizeWorkers string `json:"auto_prioritize_workers"`
ProbeInterval string `json:"probe_interval"`
ProbeTimeout string `json:"probe_timeout"`
AdminAuthConfigured bool `json:"admin_auth_configured"`
AllowOpenAdmin bool `json:"allow_open_admin"`
AdminJSONBodyLimitBytes int64 `json:"admin_json_body_limit_bytes"`
DVRLineupReloadTimeout string `json:"dvr_lineup_reload_timeout"`
RequestTimeout string `json:"request_timeout"`
RateLimitRPS string `json:"rate_limit_rps"`
RateLimitBurst int `json:"rate_limit_burst"`
RateLimitMaxClients int `json:"rate_limit_max_clients"`
RateLimitTrustedProxies []string `json:"rate_limit_trusted_proxies,omitempty"`
TuneBackoffMaxTunes int `json:"tune_backoff_max_tunes"`
TuneBackoffInterval string `json:"tune_backoff_interval"`
TuneBackoffCooldown string `json:"tune_backoff_cooldown"`
EnableMetrics bool `json:"enable_metrics"`
HTTPRequestLogEnabled bool `json:"http_request_log_enabled"`
LogLevel string `json:"log_level"`
CatalogSearchMaxTerms int `json:"catalog_search_max_terms"`
CatalogSearchMaxDisjuncts int `json:"catalog_search_max_disjuncts"`
CatalogSearchMaxTermRunes int `json:"catalog_search_max_term_runes"`
}
RedactedConfig is safe for logs and startup output.