Es wird eine Streamcopy erstellt.
dem
Handle wird der MixerStream übergeben.
Um die Daten jetzt in meinen Wrapper verarbeiten zu können hole ich mir den aktuell gültigen stream
Code:
return _streamcopy.Stream;
Bis dahin wurde er mit den jeweiligen Daten gefüttert die benötigt werden.
Nur leider sind die Daten nicht gültig um sie anschließend weiter verarbeiten zu können.
Erst nach einer umwandlung
Code:
MusicStream stream = GetCurrentStream();
if (stream != null)
{
BassMix.BASS_Mixer_StreamAddChannel(_streamcopy.ChannelHandle, _streamcopy.Stream, BASSFlag.BASS_DEFAULT);
_bufferStream = new DSP_BufferStream();
_bufferStream.ChannelHandle = _streamcopy.Stream;
_bufferStream.OutputHandle = _streamcopy.ChannelHandle;
_bufferStream.DSPPriority = -4000;
_bufferStream.Start();
float[] fft = new float[4096];
int tst = Bass.BASS_ChannelGetData(_bufferStream.BufferStream, fft, (int)BASSData.BASS_DATA_FFT8192);
return _bufferStream.BufferStream;
}
else
{
return 0;
}
Sind die Daten vorhanden die ich benötige um sie zu visualisieren.
Die frage wäre warum muss ich die Daten erst wieder befüllen wenn sie doch eigentlich im _mixer.Stream vorhanden sein müßten.
Das selbe hier.
Code:
public override void DSPCallback(int
handle, int channel, IntPtr buffer, int length, IntPtr user)
{
try
{
this._streamBuffer.Write(buffer, length);
}
catch (
Exception ex)
{
Log.Error("Caught
Exception in DSPCallBack. {0}", ex.Message);
}
}
Code:
private int WasApiCallback(IntPtr buffer, int length, IntPtr user)
{
if (_mixer == 0)
{
return 0;
}
try
{
return Bass.BASS_ChannelGetData(_mixer, buffer, length);
}
catch (
Exception)
{ }
return 0;
}
Der Buffer wird gefüllt aber die Daten sind widerrum ungültig
obwohl Streamcopy eingentlich eine copy des _mixer.stream ist.
gruss