From 992f18370da7bac0e265c5db5527d4864b3b557e Mon Sep 17 00:00:00 2001 From: Arthur Jamet Date: Wed, 11 Mar 2026 14:59:57 +0000 Subject: [PATCH] Transcoder: Quality -> VideoQuality --- transcoder/src/api/streams.go | 4 +- transcoder/src/filestream.go | 10 ++--- transcoder/src/transcoder.go | 2 +- .../src/{quality.go => videoquality.go} | 38 +++++++++---------- transcoder/src/videostream.go | 6 +-- 5 files changed, 30 insertions(+), 30 deletions(-) rename transcoder/src/{quality.go => videoquality.go} (69%) diff --git a/transcoder/src/api/streams.go b/transcoder/src/api/streams.go index 5f73e7ad..33ed46a9 100644 --- a/transcoder/src/api/streams.go +++ b/transcoder/src/api/streams.go @@ -88,7 +88,7 @@ func (h *shandler) GetVideoIndex(c echo.Context) error { if err != nil { return err } - quality, err := src.QualityFromString(c.Param("quality")) + quality, err := src.VideoQualityFromString(c.Param("quality")) if err != nil { return err } @@ -154,7 +154,7 @@ func (h *shandler) GetVideoSegment(c echo.Context) error { if err != nil { return err } - quality, err := src.QualityFromString(c.Param("quality")) + quality, err := src.VideoQualityFromString(c.Param("quality")) if err != nil { return err } diff --git a/transcoder/src/filestream.go b/transcoder/src/filestream.go index 94c566e2..45161b25 100644 --- a/transcoder/src/filestream.go +++ b/transcoder/src/filestream.go @@ -24,7 +24,7 @@ type FileStream struct { type VideoKey struct { idx uint32 - quality Quality + quality VideoQuality } func (t *Transcoder) newFileStream(path string, sha string) *FileStream { @@ -110,7 +110,7 @@ func (fs *FileStream) GetMaster(client string) string { } if def_video != nil { - qualities := utils.Filter(Qualities, func(quality Quality) bool { + qualities := utils.Filter(VideoQualities, func(quality VideoQuality) bool { return quality.Height() < def_video.Height }) transcode_count := len(qualities) @@ -179,7 +179,7 @@ func (fs *FileStream) GetMaster(client string) string { return master } -func (fs *FileStream) getVideoStream(idx uint32, quality Quality) (*VideoStream, error) { +func (fs *FileStream) getVideoStream(idx uint32, quality VideoQuality) (*VideoStream, error) { stream, _ := fs.videos.GetOrCreate(VideoKey{idx, quality}, func() *VideoStream { ret, _ := fs.transcoder.NewVideoStream(fs, idx, quality) return ret @@ -188,7 +188,7 @@ func (fs *FileStream) getVideoStream(idx uint32, quality Quality) (*VideoStream, return stream, nil } -func (fs *FileStream) GetVideoIndex(idx uint32, quality Quality, client string) (string, error) { +func (fs *FileStream) GetVideoIndex(idx uint32, quality VideoQuality, client string) (string, error) { stream, err := fs.getVideoStream(idx, quality) if err != nil { return "", err @@ -196,7 +196,7 @@ func (fs *FileStream) GetVideoIndex(idx uint32, quality Quality, client string) return stream.GetIndex(client) } -func (fs *FileStream) GetVideoSegment(idx uint32, quality Quality, segment int32) (string, error) { +func (fs *FileStream) GetVideoSegment(idx uint32, quality VideoQuality, segment int32) (string, error) { stream, err := fs.getVideoStream(idx, quality) if err != nil { return "", err diff --git a/transcoder/src/transcoder.go b/transcoder/src/transcoder.go index b1aa5e28..5dee0aec 100644 --- a/transcoder/src/transcoder.go +++ b/transcoder/src/transcoder.go @@ -70,7 +70,7 @@ func (t *Transcoder) GetVideoIndex( ctx context.Context, path string, video uint32, - quality Quality, + quality VideoQuality, client string, sha string, ) (string, error) { diff --git a/transcoder/src/quality.go b/transcoder/src/videoquality.go similarity index 69% rename from transcoder/src/quality.go rename to transcoder/src/videoquality.go index 3b0f98be..0eb06ca8 100644 --- a/transcoder/src/quality.go +++ b/transcoder/src/videoquality.go @@ -6,25 +6,25 @@ import ( "github.com/labstack/echo/v4" ) -type Quality string +type VideoQuality string const ( - P240 Quality = "240p" - P360 Quality = "360p" - P480 Quality = "480p" - P720 Quality = "720p" - P1080 Quality = "1080p" - P1440 Quality = "1440p" - P4k Quality = "4k" - P8k Quality = "8k" - NoResize Quality = "transcode" - Original Quality = "original" + P240 VideoQuality = "240p" + P360 VideoQuality = "360p" + P480 VideoQuality = "480p" + P720 VideoQuality = "720p" + P1080 VideoQuality = "1080p" + P1440 VideoQuality = "1440p" + P4k VideoQuality = "4k" + P8k VideoQuality = "8k" + NoResize VideoQuality = "transcode" + Original VideoQuality = "original" ) // Purposfully removing Original from this list (since it require special treatments anyways) -var Qualities = []Quality{P240, P360, P480, P720, P1080, P1440, P4k, P8k} +var VideoQualities = []VideoQuality{P240, P360, P480, P720, P1080, P1440, P4k, P8k} -func QualityFromString(str string) (Quality, error) { +func VideoQualityFromString(str string) (VideoQuality, error) { if str == string(Original) { return Original, nil } @@ -32,7 +32,7 @@ func QualityFromString(str string) (Quality, error) { return NoResize, nil } - for _, quality := range Qualities { + for _, quality := range VideoQualities { if string(quality) == str { return quality, nil } @@ -41,7 +41,7 @@ func QualityFromString(str string) (Quality, error) { } // I'm not entierly sure about the values for bitrates. Double checking would be nice. -func (v Quality) AverageBitrate() uint32 { +func (v VideoQuality) AverageBitrate() uint32 { switch v { case P240: return 400_000 @@ -65,7 +65,7 @@ func (v Quality) AverageBitrate() uint32 { panic("Invalid quality value") } -func (v Quality) MaxBitrate() uint32 { +func (v VideoQuality) MaxBitrate() uint32 { switch v { case P240: return 700_000 @@ -89,7 +89,7 @@ func (v Quality) MaxBitrate() uint32 { panic("Invalid quality value") } -func (q Quality) Height() uint32 { +func (q VideoQuality) Height() uint32 { switch q { case P240: return 240 @@ -113,8 +113,8 @@ func (q Quality) Height() uint32 { panic("Invalid quality value") } -func (video *Video) Quality() Quality { - for _, quality := range Qualities { +func (video *Video) Quality() VideoQuality { + for _, quality := range VideoQualities { if quality.Height() >= video.Height || quality.AverageBitrate() >= video.Bitrate { return quality } diff --git a/transcoder/src/videostream.go b/transcoder/src/videostream.go index 55c4d13f..8782da83 100644 --- a/transcoder/src/videostream.go +++ b/transcoder/src/videostream.go @@ -8,10 +8,10 @@ import ( type VideoStream struct { Stream video *Video - quality Quality + quality VideoQuality } -func (t *Transcoder) NewVideoStream(file *FileStream, idx uint32, quality Quality) (*VideoStream, error) { +func (t *Transcoder) NewVideoStream(file *FileStream, idx uint32, quality VideoQuality) (*VideoStream, error) { log.Printf( "Creating a new video stream for %s (n %d) in quality %s", file.Info.Path, @@ -84,7 +84,7 @@ func (vs *VideoStream) getTranscodeArgs(segments string) []string { args = append(args, "-vf", Settings.HwAccel.NoResizeFilter) // NoResize doesn't have bitrate info, fallback to a know quality higher or equal. - for _, q := range Qualities { + for _, q := range VideoQualities { if q.Height() >= vs.video.Height { quality = q break