From 34fe55b5a3e2682785d2e865be60e59926d67775 Mon Sep 17 00:00:00 2001 From: Gabe Kangas Date: Mon, 26 Oct 2020 09:12:44 -0700 Subject: [PATCH] Add getter for stream variant encoder preset w/ test --- config/config.go | 9 +++++++++ config/config_test.go | 19 +++++++++++++++++++ core/ffmpeg/transcoder.go | 6 +----- 3 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 config/config_test.go 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")