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()
|
|
|
|
}
|