Namespace: Un4seen.Bass.AddOn.Enc
Assembly: Bass.Net (in Bass.Net.dll) Version: 2.4.17.5
public delegate void ENCODEPROCEX( int handle, int channel, IntPtr buffer, int length, long offset, IntPtr user )
Parameters
- handle
- Type: SystemInt32
The encoder that the data is from. - channel
- Type: SystemInt32
The channel that the data is from. - buffer
- Type: SystemIntPtr
The pointer to the buffer containing the encoded data. - length
- Type: SystemInt32
The number of bytes in the buffer. - offset
- Type: SystemInt64
The file offset of the data in bytes. - user
- Type: SystemIntPtr
The user instance data given.
To have the encoded data received by this callback function, the encoder needs to be told to output to STDOUT (instead of a file).
It is clever to NOT alloc any buffer data (e.g. a byte[]) everytime within the callback method, since ALL callbacks should be really fast! And if you would do a 'byte[] data = new byte[]' every time here...the GarbageCollector would never really clean up that memory. Sideeffects might occure, due to the fact, that BASS will call this callback too fast and too often...
NOTE: When you pass an instance of a callback delegate to one of the BASS functions, this delegate object will not be reference counted. This means .NET would not know, that it might still being used by BASS. The Garbage Collector might (re)move the delegate instance, if the variable holding the delegate is not declared as global. So make sure to always keep your delegate instance in a variable which lives as long as BASS needs it, e.g. use a global variable or member.