pa_timing_info Struct Reference

A structure for all kinds of timing information of a stream. More...


Data Fields

struct timeval timestamp
 The time when this timing info structure was current.
int synchronized_clocks
 Non-zero if the local and the remote machine have synchronized clocks.
pa_usec_t sink_usec
 Time in usecs a sample takes to be played on the sink.
pa_usec_t source_usec
 Time in usecs a sample takes from being recorded to being delivered to the application.
pa_usec_t transport_usec
 Estimated time in usecs a sample takes to be transferred to/from the daemon.
int playing
 Non-zero when the stream is currently playing.
int write_index_corrupt
 Non-zero if write_index is not up-to-date because a local write command that corrupted it has been issued in the time since this latency info was current .
int64_t write_index
 Current write index into the playback buffer in bytes.
int read_index_corrupt
 Non-zero if read_index is not up-to-date because a local pause or flush request that corrupted it has been issued in the time since this latency info was current.
int64_t read_index
 Current read index into the playback buffer in bytes.


Detailed Description

A structure for all kinds of timing information of a stream.

See pa_stream_update_timing_info() and pa_stream_get_timing_info(). The total output latency a sample that is written with pa_stream_write() takes to be played may be estimated by sink_usec+buffer_usec+transport_usec. (where buffer_usec is defined as pa_bytes_to_usec(write_index-read_index)) The output buffer which buffer_usec relates to may be manipulated freely (with pa_stream_write()'s seek argument, pa_stream_flush() and friends), the buffers sink_usec and source_usec relate to are first-in first-out (FIFO) buffers which cannot be flushed or manipulated in any way. The total input latency a sample that is recorded takes to be delivered to the application is: source_usec+buffer_usec+transport_usec-sink_usec. (Take care of sign issues!) When connected to a monitor source sink_usec contains the latency of the owning sink. The two latency estimations described here are implemented in pa_stream_get_latency().


Field Documentation

struct timeval pa_timing_info::timestamp [read]

The time when this timing info structure was current.

int pa_timing_info::synchronized_clocks

Non-zero if the local and the remote machine have synchronized clocks.

If synchronized clocks are detected transport_usec becomes much more reliable. However, the code that detects synchronized clocks is very limited und unreliable itself.

Since:
0.5

pa_usec_t pa_timing_info::sink_usec

Time in usecs a sample takes to be played on the sink.

For playback streams and record streams connected to a monitor source.

pa_usec_t pa_timing_info::source_usec

Time in usecs a sample takes from being recorded to being delivered to the application.

Only for record streams.

Since:
0.5

pa_usec_t pa_timing_info::transport_usec

Estimated time in usecs a sample takes to be transferred to/from the daemon.

For both playback and record streams.

Since:
0.5

int pa_timing_info::playing

Non-zero when the stream is currently playing.

Only for playback streams.

int pa_timing_info::write_index_corrupt

Non-zero if write_index is not up-to-date because a local write command that corrupted it has been issued in the time since this latency info was current .

Only write commands with SEEK_RELATIVE_ON_READ and SEEK_RELATIVE_END can corrupt write_index.

Since:
0.8

int64_t pa_timing_info::write_index

Current write index into the playback buffer in bytes.

Think twice before using this for seeking purposes: it might be out of date a the time you want to use it. Consider using PA_SEEK_RELATIVE instead.

Since:
0.8

int pa_timing_info::read_index_corrupt

Non-zero if read_index is not up-to-date because a local pause or flush request that corrupted it has been issued in the time since this latency info was current.

Since:
0.8

int64_t pa_timing_info::read_index

Current read index into the playback buffer in bytes.

Think twice before using this for seeking purposes: it might be out of date a the time you want to use it. Consider using PA_SEEK_RELATIVE_ON_READ instead.

Since:
0.8


The documentation for this struct was generated from the following file:
Generated on Wed Jan 23 11:06:30 2008 for PulseAudio by  doxygen 1.5.4