Transcoder: Audio Quality Enum

This commit is contained in:
Arthur Jamet 2026-03-11 19:30:02 +00:00 committed by Zoe Roux
parent 992f18370d
commit e8539a4ea1

View File

@ -0,0 +1,60 @@
package src
import (
"net/http"
"github.com/labstack/echo/v4"
)
type AudioQuality string
const (
K128 AudioQuality = "128k"
K192 AudioQuality = "192k"
K256 AudioQuality = "256k"
K320 AudioQuality = "320k"
M1 AudioQuality = "1411k" // AKA CD Quality (1,411mbps)
AOriginal AudioQuality = "original"
)
var AudioQualities = []AudioQuality{K128, K192, K256, K320, M1}
func AudioQualityFromString(str string) (AudioQuality, error) {
if str == string(AOriginal) {
return AOriginal, nil
}
for _, quality := range AudioQualities {
if string(quality) == str {
return quality, nil
}
}
return AOriginal, echo.NewHTTPError(http.StatusBadRequest, "Invalid quality")
}
func (a AudioQuality) Bitrate() uint32 {
switch a {
case K128:
return 128_000
case K192:
return 192_000
case K256:
return 256_000
case K320:
return 320_000
case M1:
return 1_411_000
case AOriginal:
panic("Original quality must be handled specially")
}
panic("Invalid quality value")
}
func (audio *Audio) Quality() AudioQuality {
for _, quality := range AudioQualities {
if quality.Bitrate() >= audio.Bitrate {
return quality
}
}
return K128
}