diff --git a/config/config.go b/config/config.go index ad8f43771..3c4676329 100644 --- a/config/config.go +++ b/config/config.go @@ -218,6 +218,15 @@ func (q *StreamQuality) GetFramerate() int { return _default.VideoSettings.StreamQualities[0].Framerate } +// GetEncoderPreset returns the preset or default +func (q *StreamQuality) GetEncoderPreset() string { + if q.EncoderPreset != "" { + return q.EncoderPreset + } + + return _default.VideoSettings.StreamQualities[0].EncoderPreset +} + //Load tries to load the configuration file func Load(filePath string, versionInfo string) error { Config = new(config) diff --git a/config/config_test.go b/config/config_test.go new file mode 100644 index 000000000..64e76c88a --- /dev/null +++ b/config/config_test.go @@ -0,0 +1,19 @@ +package config + +import "testing" + +func TestDefaults(t *testing.T) { + _default = getDefaults() + + encoderPreset := "veryfast" + framerate := 24 + + quality := StreamQuality{} + if quality.GetEncoderPreset() != encoderPreset { + t.Errorf("default encoder preset does not match expected. Got %s, want: %s", quality.GetEncoderPreset(), encoderPreset) + } + + if quality.GetFramerate() != framerate { + t.Errorf("default framerate does not match expected. Got %d, want: %d", quality.GetFramerate(), framerate) + } +} diff --git a/core/ffmpeg/transcoder.go b/core/ffmpeg/transcoder.go index aebc8f07c..a36bb92a2 100644 --- a/core/ffmpeg/transcoder.go +++ b/core/ffmpeg/transcoder.go @@ -187,11 +187,7 @@ func getVariantFromConfigQuality(quality config.StreamQuality, index int) HLSVar // Set a default, reasonable preset if one is not provided. // "superfast" and "ultrafast" are generally not recommended since they look bad. // https://trac.ffmpeg.org/wiki/Encode/H.264 - if quality.EncoderPreset != "" { - variant.encoderPreset = quality.EncoderPreset - } else { - variant.encoderPreset = "veryfast" - } + variant.encoderPreset = quality.GetEncoderPreset() variant.SetVideoBitrate(quality.VideoBitrate) variant.SetAudioBitrate(strconv.Itoa(quality.AudioBitrate) + "k")