Doesn't the watchVariable solution generally require you to setup some sort of scheduled periodic event scheduleDelayedTask so that the event loop is guarantied to wake up and check it every so often?

For consuming data from a separate thread I've always preferred skipping the watch variable and just scheduling a periodic task (every 10 msec or so) to check a queue (a thread safe queue) to check for data from the producer thread.

Matt S.

Ross Finlayson wrote:
The card does not have a sockets interface.

OK, in this case I suggest using the "watchVariable" parameter to "doEventLoop()". Have a separate thread that reads data from your interface, and then - when sufficient data is available for a frame - sets the "watchVariable" to some value non-zero. (This should be this second thread's *only* interaction with the "LIVE555 Streaming Media" library.)

In your code, call "doEventLoop()" in a loop - e.g.,

char watchVariable;
while(1) {
    watchVariable = 0;
    scheduler->doEventLoop(&watchVariable);
// If we get to this point, then we know that your separate thread has set "watchVariable" to a non-zero value // Call the appropriate function to handle the arrival of new data (e.g., "deliverFrame()")
};
_______________________________________________
live-devel mailing list
live-devel@lists.live555.com
http://lists.live555.com/mailman/listinfo/live-devel

Reply via email to