public BassAsioStreamOutput(BassAsioStreamOutputBehaviour behaviour, BassOutputStream stream)
     : this()
 {
     this.Behaviour = behaviour;
     if (BassUtils.GetChannelDsdRaw(stream.ChannelHandle))
     {
         this.Rate   = BassUtils.GetChannelDsdRate(stream.ChannelHandle);
         this.Flags |= BassFlags.DSDRaw;
     }
     else
     {
         if (behaviour.Output.Rate == stream.Rate)
         {
             this.Rate = stream.Rate;
         }
         else if (!behaviour.Output.EnforceRate && BassAsioDevice.Info.SupportedRates.Contains(stream.Rate))
         {
             this.Rate = stream.Rate;
         }
         else
         {
             Logger.Write(this, LogLevel.Debug, "The requested output rate is either enforced or the device does not support the stream's rate: {0} => {1}", stream.Rate, behaviour.Output.Rate);
             this.Rate = behaviour.Output.Rate;
         }
         if (behaviour.Output.Float)
         {
             this.Flags |= BassFlags.Float;
         }
     }
     this.Channels = stream.Channels;
 }
 public BassAsioStreamOutput(BassAsioStreamOutputBehaviour behaviour, BassOutputStream stream)
     : this()
 {
     this.Behaviour = behaviour;
     this.Rate      = behaviour.Output.Rate;
     this.Channels  = BassAsioDevice.Info.Outputs;
     this.Flags     = BassFlags.Decode;
     if (this.Behaviour.Output.Float)
     {
         this.Flags |= BassFlags.Float;
     }
 }