Callbacks actually are not the way to go as well. The GC is not threading safe. It does not make a difference if it is use for threads or by something outside that tries to get around that with callbacks. It will just crash if it takes too long so unless you can gaurantee that the user PC (CPU and Harddisk mainly) is fast enough, a callback is a potential crash bug that you can not resolve.
Angel: I know that this can be done. It has been done with Blitz3D like this for quite some time. But actually, Streaming media stuff is just something that works much smoother with true threads instead of faking the whole stuff through time slicing in software. I don't know the OGG format well enough to say if it is able to work like this but non the less: streaming from netstream isn't possible with slicing, as it needs a continous "get - decompress - play", slicing will lead to some very unpleasant results if the game is taking a little longer for something as the whole net part will be blocked thanks to not having threads. (net stuff does not need much of CPU but it needs to do its stuff continously behind the scene. Some "funny" people try to do that through timers but as they are only guaranteed to break at Nr 16, they are not that usefull if something must happen at a given time)
The slicing only works to stream from harddisk, not from a network stream and as in BM TStream is TStream, it will need to work for both.
Angel: I know that this can be done. It has been done with Blitz3D like this for quite some time. But actually, Streaming media stuff is just something that works much smoother with true threads instead of faking the whole stuff through time slicing in software. I don't know the OGG format well enough to say if it is able to work like this but non the less: streaming from netstream isn't possible with slicing, as it needs a continous "get - decompress - play", slicing will lead to some very unpleasant results if the game is taking a little longer for something as the whole net part will be blocked thanks to not having threads. (net stuff does not need much of CPU but it needs to do its stuff continously behind the scene. Some "funny" people try to do that through timers but as they are only guaranteed to break at Nr 16, they are not that usefull if something must happen at a given time)
The slicing only works to stream from harddisk, not from a network stream and as in BM TStream is TStream, it will need to work for both.