mirror of
https://github.com/zoriya/Kyoo.git
synced 2026-03-29 12:52:08 -04:00
Transcoder: Audio Quality Enum
This commit is contained in:
parent
992f18370d
commit
e8539a4ea1
60
transcoder/src/audioquality.go
Normal file
60
transcoder/src/audioquality.go
Normal 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
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user