|roar_vs_position(3)||RoarAudio Programmer's Manual||roar_vs_position(3)|
roar_vs_position, roar_vs_latency, roar_vs_latency2 - Get stream position information
ssize_t roar_vs_position(roar_vs_t * vss, int backend, int * error);
roar_mus_t roar_vs_latency(roar_vs_t * vss, int backend, int * error);
roar_mus_t roar_vs_latency2(roar_vs_t * vss, int backend, int wait, int * error);
roar_vs_position() returns the current server site position of the stream plus the current offset for the selected backend.
roar_vs_latency() returns the latency between the client site stream position and the server site position plus the latency by the backend.
Use of roar_vs_latency() is not recommended as it requires the codec to use a true constant bit rate.
roar_vs_latency2() is perfectly equivalent to roar_vs_latency() expect that it takes the additional parameter wait. The wait parameter may have the values ROAR_VS_WAIT, ROAR_VS_NOWAIT and ROAR_VS_ASYNC. If it is ROAR_VS_WAIT the function does the same as roar_vs_latency(). If the parameter is ROAR_VS_NOWAIT roar_vs_latency2() will return interpolated data based on old data collected by calls to roar_vs_latency(), roar_vs_latency2() or roar_vs_position(). ROAR_VS_ASYNC is used to trigger asyncron updates to this internal state. Asyncron operations need to be enabled before they can be used. See roar_vs_ctl(3).
Calling these functions too often will result in bad performance and incorrect data (pool interval smaller than server response time). Polling up to 20 times per second shoudn't be a problem.
- The VS object to be used.
- The backend used for correction. This can be a stream ID of the stream to use as backend or one of the special values defined by the constants ROAR_VS_BACKEND_*. ROAR_VS_BACKEND_NONE is used to ask for no correction. ROAR_VS_BACKEND_DEFAULT is used to ask for the default correction. This should be used in all common cases. ROAR_VS_BACKEND_FIRST is used to ask for correction based on the first primary stream on the same mixer.
- Tells the API if the call should wait or not. Must be ROAR_VS_WAIT, ROAR_VS_NOWAIT or ROAR_VS_ASYNC.
- This is a pointer to a integer used to store the error value in case of error. This can be NULL if not used but it is very recommended to use this error value to report good error messages to the user.
roar_vs_position() returns the stream position on success and -1 on error. Stream position is the current position of the stream in units of samples (not frames!).
roar_vs_latency() returns the stream latency on success and zero on error. However zero is a valid value. In case of error error is set to the error. In case of no error but zero latency error is cleared (set to ROAR_ERROR_NONE). Latency is retruned in mu-seconds (1/10^-6s).