diff --git a/internal/channels/channel.go b/internal/channels/channel.go index 9f9279d..3e8eecb 100644 --- a/internal/channels/channel.go +++ b/internal/channels/channel.go @@ -35,17 +35,23 @@ func (channel *Channel) Metadata(ctx context.Context) <-chan map[string]string { go func() { for { select { - case data := <-channel.metadataChannel: + case data, ok := <-channel.metadataChannel: + if !ok { + return + } + metadataChan <- data case <-ctx.Done(): + return } } }() + return metadataChan } func NewChannel() *Channel { return &Channel{ metadataChannel: make(chan map[string]string), - OutputStreams: map[string]ChannelOutputStream + OutputStreams: map[string]ChannelOutputStream{}, } } diff --git a/internal/channels/channel_manager.go b/internal/channels/channel_manager.go index ce2f2af..9d1e809 100644 --- a/internal/channels/channel_manager.go +++ b/internal/channels/channel_manager.go @@ -8,9 +8,6 @@ import ( type ChannelManager struct { channels map[string]*Channel channelsLock sync.RWMutex - - channelStreams map[string]*ChannelStreams - channelStreamsLock sync.RWMutex } func (manager *ChannelManager) Channel(uuid string) *Channel { @@ -25,25 +22,10 @@ func (manager *ChannelManager) Channel(uuid string) *Channel { return channel } -func (manager *ChannelManager) Streams(uuid string) *ChannelStreams { - manager.channelStreamsLock.RLock() - defer manager.channelStreamsLock.RUnlock() - - streams, ok := manager.channelStreams[uuid] - if !ok { - return nil - } - - return streams -} - func (manager *ChannelManager) Close(uuid string) (err error) { manager.channelsLock.Lock() defer manager.channelsLock.Unlock() - manager.channelStreamsLock.Lock() - defer manager.channelStreamsLock.Unlock() - _, ok := manager.channels[uuid] if !ok { err = errors.New("channel uuid is not known") @@ -51,7 +33,6 @@ func (manager *ChannelManager) Close(uuid string) (err error) { } delete(manager.channels, uuid) - delete(manager.channelStreams, uuid) return } @@ -65,13 +46,8 @@ func (manager *ChannelManager) Open(uuid string) (channel *Channel, err error) { return } - manager.channelStreamsLock.Lock() - defer manager.channelStreamsLock.Unlock() - channel = new(Channel) manager.channels[uuid] = channel - manager.channelStreams[uuid] = new(ChannelStreams) - return } diff --git a/internal/transcoders/instance.go b/internal/transcoders/instance.go index aad6ba1..f67ef57 100644 --- a/internal/transcoders/instance.go +++ b/internal/transcoders/instance.go @@ -4,14 +4,8 @@ import ( "io" "git.icedream.tech/icedream/uplink/internal" - "git.icedream.tech/icedream/uplink/internal/transcoders/options" ) -type Transcoder interface { - Options() map[string]options.TranscoderOptionType - New(options map[string]interface{}) *TranscoderInstance -} - type TranscoderInstance interface { io.WriteCloser Init(out *internal.Stream) diff --git a/internal/transcoders/lame/transcoder_instance.go b/internal/transcoders/lame/transcoder_instance.go index 856ff4a..f017afd 100644 --- a/internal/transcoders/lame/transcoder_instance.go +++ b/internal/transcoders/lame/transcoder_instance.go @@ -20,9 +20,7 @@ func (transcoder *Transcoder) Options() map[string]options.TranscoderOptionType } func (transcoder *Transcoder) New(options map[string]interface{}) transcoders.TranscoderInstance { - return &TranscoderInstance{ - options: options, - } + return nil } type TranscoderInstance struct { @@ -30,7 +28,7 @@ type TranscoderInstance struct { *lame.LameWriter } -func (instance *TranscoderInstance) Init(out *internal.Stream) { +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))) diff --git a/internal/transcoders/packetizer.go b/internal/transcoders/packetizer.go deleted file mode 100644 index 4d19943..0000000 --- a/internal/transcoders/packetizer.go +++ /dev/null @@ -1 +0,0 @@ -package transcoders diff --git a/internal/transcoders/transcoder.go b/internal/transcoders/transcoder.go new file mode 100644 index 0000000..64b0ed1 --- /dev/null +++ b/internal/transcoders/transcoder.go @@ -0,0 +1,10 @@ +package transcoders + +import ( + "git.icedream.tech/icedream/uplink/internal/transcoders/options" +) + +type Transcoder interface { + Options() map[string]options.TranscoderOptionType + New(options map[string]interface{}) *TranscoderInstance +}