uplink/internal/transcoders/lame/transcoder_instance.go

39 lines
1.2 KiB
Go

package lametranscoder
import (
"github.com/viert/lame"
"git.icedream.tech/icedream/uplink/internal"
"git.icedream.tech/icedream/uplink/internal/transcoders"
"git.icedream.tech/icedream/uplink/internal/transcoders/options"
)
var transcoderOptions = map[string]options.TranscoderOptionType{
"bitrate": &options.Int64TranscoderOption{DefaultValue: 128, Min: 32, Max: 320},
"quality": &options.Int64TranscoderOption{DefaultValue: 1, Min: 0, Max: 9},
}
type Transcoder struct{}
func (transcoder *Transcoder) Options() map[string]options.TranscoderOptionType {
return transcoderOptions
}
func (transcoder *Transcoder) New(options map[string]interface{}) transcoders.TranscoderInstance {
return nil
}
type TranscoderInstance struct {
options map[string]interface{}
*lame.LameWriter
}
func (instance *TranscoderInstance) Init(out *internal.Stream, samplerate int, channels int) {
instance.LameWriter = lame.NewWriter(out)
instance.LameWriter.Encoder.SetBitrate(int(instance.options["bitrate"].(int64)))
instance.LameWriter.Encoder.SetQuality(int(instance.options["quality"].(int64)))
instance.LameWriter.Encoder.SetInSamplerate(samplerate)
instance.LameWriter.Encoder.SetNumChannels(channels)
instance.LameWriter.Encoder.InitParams()
}