Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

verständnis problem beim Clonen eine Streams

  Alt 11. Jul 2013, 10:00
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

Geändert von EWeiss (11. Jul 2013 um 10:05 Uhr)
  Mit Zitat antworten Zitat