node build fixed
This commit is contained in:
87
seanime-2.9.10/internal/mediastream/optimizer/optimizer.go
Normal file
87
seanime-2.9.10/internal/mediastream/optimizer/optimizer.go
Normal file
@@ -0,0 +1,87 @@
|
||||
package optimizer
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/samber/mo"
|
||||
"seanime/internal/events"
|
||||
"seanime/internal/mediastream/videofile"
|
||||
"seanime/internal/util"
|
||||
)
|
||||
|
||||
const (
|
||||
QualityLow Quality = "low"
|
||||
QualityMedium Quality = "medium"
|
||||
QualityHigh Quality = "high"
|
||||
QualityMax Quality = "max"
|
||||
)
|
||||
|
||||
type (
|
||||
Quality string
|
||||
|
||||
Optimizer struct {
|
||||
wsEventManager events.WSEventManagerInterface
|
||||
logger *zerolog.Logger
|
||||
libraryDir mo.Option[string]
|
||||
concurrentTasks int
|
||||
}
|
||||
|
||||
NewOptimizerOptions struct {
|
||||
Logger *zerolog.Logger
|
||||
WSEventManager events.WSEventManagerInterface
|
||||
}
|
||||
)
|
||||
|
||||
func NewOptimizer(opts *NewOptimizerOptions) *Optimizer {
|
||||
ret := &Optimizer{
|
||||
logger: opts.Logger,
|
||||
wsEventManager: opts.WSEventManager,
|
||||
libraryDir: mo.None[string](),
|
||||
concurrentTasks: 2,
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
func (o *Optimizer) SetLibraryDir(libraryDir string) {
|
||||
o.libraryDir = mo.Some[string](libraryDir)
|
||||
}
|
||||
|
||||
/////////////
|
||||
|
||||
type StartMediaOptimizationOptions struct {
|
||||
Filepath string
|
||||
Quality Quality
|
||||
AudioChannelIndex int
|
||||
MediaInfo *videofile.MediaInfo
|
||||
}
|
||||
|
||||
func (o *Optimizer) StartMediaOptimization(opts *StartMediaOptimizationOptions) (err error) {
|
||||
defer util.HandlePanicInModuleWithError("mediastream/optimizer/StartMediaOptimization", &err)
|
||||
|
||||
o.logger.Debug().Any("opts", opts).Msg("mediastream: Starting media optimization")
|
||||
|
||||
if !o.libraryDir.IsPresent() {
|
||||
return fmt.Errorf("library directory not set")
|
||||
}
|
||||
|
||||
if opts.Filepath == "" {
|
||||
return fmt.Errorf("no filepath")
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func qualityToPreset(quality Quality) string {
|
||||
switch quality {
|
||||
case QualityLow:
|
||||
return "ultrafast"
|
||||
case QualityMedium:
|
||||
return "veryfast"
|
||||
case QualityHigh:
|
||||
return "fast"
|
||||
case QualityMax:
|
||||
return "medium"
|
||||
default:
|
||||
return "veryfast"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user