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 &TranscoderInstance{ options: options, } } type TranscoderInstance struct { options map[string]interface{} *lame.LameWriter } func (instance *TranscoderInstance) Init(out *internal.Stream) { 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() }