55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"mxl-player/internal/playback"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
defaultInitialRetryDelay = 500 * time.Millisecond
|
|
defaultMaxRetryDelay = 10 * time.Second
|
|
)
|
|
|
|
func resolveDomain(shared, override string) string {
|
|
if override != "" {
|
|
return override
|
|
}
|
|
return shared
|
|
}
|
|
|
|
func resolveRetryPolicy(
|
|
cli playback.RetryPolicy,
|
|
cliMaxAttemptsSet bool,
|
|
playlist playback.Playlist,
|
|
) playback.RetryPolicy {
|
|
if playlist.Retry == nil {
|
|
return cli
|
|
}
|
|
resolved := *playlist.Retry
|
|
if cliMaxAttemptsSet {
|
|
resolved.MaxAttempts = cli.MaxAttempts
|
|
}
|
|
return resolved
|
|
}
|
|
|
|
func (a appArgs) playbackConfig() playback.SessionConfig {
|
|
return playback.SessionConfig{
|
|
Video: playback.FeedConfig{
|
|
Domain: resolveDomain(a.Domain, a.VideoDomain),
|
|
UUID: a.VideoFlowId,
|
|
Active: a.VideoFlowId != "",
|
|
},
|
|
Audio: playback.FeedConfig{
|
|
Domain: resolveDomain(a.Domain, a.AudioDomain),
|
|
UUID: a.AudioFlowId,
|
|
Active: a.AudioFlowId != "",
|
|
},
|
|
SyncRequested: a.SyncRequested,
|
|
Retry: playback.RetryPolicy{
|
|
MaxAttempts: a.MaxAttempts,
|
|
InitialDelay: defaultInitialRetryDelay,
|
|
MaxDelay: defaultMaxRetryDelay,
|
|
},
|
|
}
|
|
}
|