/// <summary>
        /// Request an audio fill
        /// </summary>
        /// <param name="buffer"></param>
        protected void OnFillBuffer(double[] buffer)
        {
            EventHandler <FillBufferEventArgs> tmpCopy = this.FillBuffer;
            FillBufferEventArgs e = new FillBufferEventArgs(buffer);

            tmpCopy?.Invoke(this, e);
        }
Exemple #2
0
        /// <summary>
        /// Fills the provided buffer with audio data. Stereo 16-bits data is required.
        /// </summary>
        /// <param name="sender">Streamer object.</param>
        /// <param name="instr">FillBufferEventArgs.</param>
        private void OnFillBuffer(object sender, FillBufferEventArgs e)
        {
            if (this.playState == PlayStatus.Playing)
            {
                long remainingSamples = e.Buffer.LongLength;
                long samplesToCopy    = 0;
                long currPos          = 0;

                while (remainingSamples > 0)
                {
                    if ((lastTickBuf == null) || (lastTickBuf.Length - lastTickBufPosition == 0))
                    {
                        lastTickBuf         = getTick();
                        lastTickBufPosition = 0;
                    }
                    // Hay samples pendientes de copiar del ultimo tick!!
                    samplesToCopy = Math.Min(lastTickBuf.Length - lastTickBufPosition, remainingSamples);

                    Array.Copy(lastTickBuf, lastTickBufPosition, e.Buffer, currPos, samplesToCopy);
                    remainingSamples    -= samplesToCopy;
                    lastTickBufPosition += samplesToCopy;
                    currPos             += samplesToCopy;
                }
            }
            else
            {
                Array.Copy(new UInt16[e.Buffer.Length], e.Buffer, e.Buffer.Length);
            }
        }
Exemple #3
0
        /// <summary>
        /// Request an audio fill
        /// </summary>
        /// <param name="buffer"></param>
        protected void OnFillBuffer(double[] buffer)
        {
            EventHandler <FillBufferEventArgs> tmpCopy = this.FillBuffer;
            FillBufferEventArgs e = new FillBufferEventArgs(buffer);

            if (tmpCopy != null)
            {
                tmpCopy(this, e);
            }
        }
 /// <summary>
 /// Request an audio fill
 /// </summary>
 /// <param name="buffer"></param>
 protected void OnFillBuffer(double[] buffer)
 {
     EventHandler<FillBufferEventArgs> tmpCopy = this.FillBuffer;
     FillBufferEventArgs e = new FillBufferEventArgs(buffer);
     if (tmpCopy != null)
     {
         tmpCopy(this, e);
     }
 }