uplink/internal/transcoders/lame/transcoder_instance.go

39 lines
1.2 KiB
Go
Raw Normal View History

2018-04-10 11:48:51 +00:00
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 {
2018-04-10 13:56:42 +00:00
return nil
2018-04-10 11:48:51 +00:00
}
type TranscoderInstance struct {
options map[string]interface{}
*lame.LameWriter
}
2018-04-10 13:56:42 +00:00
func (instance *TranscoderInstance) Init(out *internal.Stream, samplerate int, channels int) {
2018-04-10 11:48:51 +00:00
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()
}