PulseAudio  5.99.2
stream.h
Go to the documentation of this file.
1 #ifndef foostreamhfoo
2 #define foostreamhfoo
3 
4 /***
5  This file is part of PulseAudio.
6 
7  Copyright 2004-2006 Lennart Poettering
8  Copyright 2006 Pierre Ossman <ossman@cendio.se> for Cendio AB
9 
10  PulseAudio is free software; you can redistribute it and/or modify
11  it under the terms of the GNU Lesser General Public License as published
12  by the Free Software Foundation; either version 2.1 of the License,
13  or (at your option) any later version.
14 
15  PulseAudio is distributed in the hope that it will be useful, but
16  WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
18  General Public License for more details.
19 
20  You should have received a copy of the GNU Lesser General Public License
21  along with PulseAudio; if not, write to the Free Software
22  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
23  USA.
24 ***/
25 
26 #include <sys/types.h>
27 
28 #include <pulse/sample.h>
29 #include <pulse/format.h>
30 #include <pulse/channelmap.h>
31 #include <pulse/volume.h>
32 #include <pulse/def.h>
33 #include <pulse/cdecl.h>
34 #include <pulse/operation.h>
35 #include <pulse/context.h>
36 #include <pulse/proplist.h>
37 
334 PA_C_DECL_BEGIN
335 
337 typedef struct pa_stream pa_stream;
338 
340 typedef void (*pa_stream_success_cb_t) (pa_stream*s, int success, void *userdata);
341 
343 typedef void (*pa_stream_request_cb_t)(pa_stream *p, size_t nbytes, void *userdata);
344 
346 typedef void (*pa_stream_notify_cb_t)(pa_stream *p, void *userdata);
347 
354 typedef void (*pa_stream_event_cb_t)(pa_stream *p, const char *name, pa_proplist *pl, void *userdata);
355 
360  pa_context *c ,
361  const char *name ,
362  const pa_sample_spec *ss ,
363  const pa_channel_map *map );
364 
369  pa_context *c ,
370  const char *name ,
371  const pa_sample_spec *ss ,
372  const pa_channel_map *map ,
373  pa_proplist *p );
374 
380  pa_context *c ,
381  const char *name ,
382  pa_format_info * const * formats ,
383  unsigned int n_formats ,
384  pa_proplist *p );
385 
387 void pa_stream_unref(pa_stream *s);
388 
391 
394 
397 
402 uint32_t pa_stream_get_index(pa_stream *s);
403 
414 
424 const char *pa_stream_get_device_name(pa_stream *s);
425 
431 
435 
461  pa_stream *s ,
462  const char *dev ,
463  const pa_buffer_attr *attr ,
464  pa_stream_flags_t flags ,
465  const pa_cvolume *volume ,
466  pa_stream *sync_stream );
467 
470  pa_stream *s ,
471  const char *dev ,
472  const pa_buffer_attr *attr ,
473  pa_stream_flags_t flags );
474 
477 
511  pa_stream *p,
512  void **data,
513  size_t *nbytes);
514 
525  pa_stream *p);
526 
549 int pa_stream_write(
550  pa_stream *p ,
551  const void *data ,
552  size_t nbytes ,
553  pa_free_cb_t free_cb ,
554  int64_t offset,
555  pa_seek_mode_t seek );
556 
560  pa_stream *p ,
561  const void *data ,
562  size_t nbytes ,
563  pa_free_cb_t free_cb ,
564  void *free_cb_data ,
565  int64_t offset ,
566  pa_seek_mode_t seek );
567 
584 int pa_stream_peek(
585  pa_stream *p ,
586  const void **data ,
587  size_t *nbytes );
588 
591 int pa_stream_drop(pa_stream *p);
592 
595 
598 
604 
610 
613 
617 
620 
623 
629 
632 
639 
644 
651 
661 
664 void pa_stream_set_event_callback(pa_stream *p, pa_stream_event_cb_t cb, void *userdata);
665 
672 
683 pa_operation* pa_stream_cork(pa_stream *s, int b, pa_stream_success_cb_t cb, void *userdata);
684 
689 
693 
698 
700 pa_operation* pa_stream_set_name(pa_stream *s, const char *name, pa_stream_success_cb_t cb, void *userdata);
701 
733 int pa_stream_get_time(pa_stream *s, pa_usec_t *r_usec);
734 
747 int pa_stream_get_latency(pa_stream *s, pa_usec_t *r_usec, int *negative);
748 
764 
767 
770 
773 
783 
793 
799 pa_operation *pa_stream_update_sample_rate(pa_stream *s, uint32_t rate, pa_stream_success_cb_t cb, void *userdata);
800 
808 
811 pa_operation *pa_stream_proplist_remove(pa_stream *s, const char *const keys[], pa_stream_success_cb_t cb, void *userdata);
812 
817 int pa_stream_set_monitor_stream(pa_stream *s, uint32_t sink_input_idx);
818 
823 
824 PA_C_DECL_END
825 
826 #endif
struct pa_context pa_context
An opaque connection context to a daemon.
Definition: context.h:156
int pa_stream_write_ext_free(pa_stream *p, const void *data, size_t nbytes, pa_free_cb_t free_cb, void *free_cb_data, int64_t offset, pa_seek_mode_t seek)
Function does exactly the same as pa_stream_write() with the difference that free_cb_data is passed t...
int pa_stream_is_corked(pa_stream *s)
Return 1 if the this stream has been corked.
void(* pa_stream_request_cb_t)(pa_stream *p, size_t nbytes, void *userdata)
A generic request callback.
Definition: stream.h:343
A sample format and attribute specification.
Definition: sample.h:250
const char * pa_stream_get_device_name(pa_stream *s)
Return the name of the sink or source this stream is connected to in the server.
Connection contexts for asynchronous communication with a server.
enum pa_stream_state pa_stream_state_t
The state of a stream.
void(* pa_free_cb_t)(void *p)
A generic free() like callback prototype.
Definition: def.h:1016
void pa_stream_set_overflow_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata)
Set the callback function that is called when a buffer overflow happens.
pa_stream * pa_stream_ref(pa_stream *s)
Increase the reference counter by one.
Global definitions.
Constants and routines for volume handling.
void pa_stream_set_underflow_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata)
Set the callback function that is called when a buffer underflow happens.
int pa_stream_write(pa_stream *p, const void *data, size_t nbytes, pa_free_cb_t free_cb, int64_t offset, pa_seek_mode_t seek)
Write some data to the server (for playback streams).
int pa_stream_get_latency(pa_stream *s, pa_usec_t *r_usec, int *negative)
Determine the total stream latency.
pa_stream_state_t pa_stream_get_state(pa_stream *p)
Return the current state of the stream.
int pa_stream_set_monitor_stream(pa_stream *s, uint32_t sink_input_idx)
For record streams connected to a monitor source: monitor only a very specific sink input of the sink...
const pa_sample_spec * pa_stream_get_sample_spec(pa_stream *s)
Return a pointer to the stream's sample specification.
pa_operation * pa_stream_set_buffer_attr(pa_stream *s, const pa_buffer_attr *attr, pa_stream_success_cb_t cb, void *userdata)
Change the buffer metrics of the stream during playback.
A structure encapsulating a per-channel volume.
Definition: volume.h:150
pa_operation * pa_stream_update_sample_rate(pa_stream *s, uint32_t rate, pa_stream_success_cb_t cb, void *userdata)
Change the stream sampling rate during playback.
int pa_stream_peek(pa_stream *p, const void **data, size_t *nbytes)
Read the next fragment from the buffer (for recording streams).
void pa_stream_set_suspended_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata)
Set the callback function that is called whenever the sink/source this stream is connected to is susp...
int64_t pa_stream_get_underflow_index(pa_stream *p)
Return at what position the latest underflow occurred, or -1 if this information is not known (e...
pa_context * pa_stream_get_context(pa_stream *p)
Return the context this stream is attached to.
struct pa_operation pa_operation
An asynchronous operation object.
Definition: operation.h:35
uint32_t pa_stream_get_device_index(pa_stream *s)
Return the index of the sink or source this stream is connected to in the server. ...
int pa_stream_is_suspended(pa_stream *s)
Return 1 if the sink or source this stream is connected to has been suspended.
uint64_t pa_usec_t
Type for usec specifications (unsigned).
Definition: sample.h:262
int pa_stream_get_time(pa_stream *s, pa_usec_t *r_usec)
Return the current playback/recording time.
const pa_format_info * pa_stream_get_format_info(pa_stream *s)
Return a pointer to the stream's format.
void pa_stream_set_read_callback(pa_stream *p, pa_stream_request_cb_t cb, void *userdata)
Set the callback function that is called when new data is available from the stream.
Utility functions for handling a stream or sink format.
A structure for all kinds of timing information of a stream.
Definition: def.h:660
const pa_timing_info * pa_stream_get_timing_info(pa_stream *s)
Return the latest raw timing data structure.
pa_operation * pa_stream_update_timing_info(pa_stream *p, pa_stream_success_cb_t cb, void *userdata)
Request a timing info structure update for a stream.
Constants and routines for channel mapping handling.
uint32_t pa_stream_get_index(pa_stream *s)
Return the sink input resp. source output index this stream is identified in the server with...
int pa_stream_cancel_write(pa_stream *p)
Reverses the effect of pa_stream_begin_write() dropping all data that has already been placed in the ...
void pa_stream_set_buffer_attr_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata)
Set the callback function that is called whenever the buffer attributes on the server side change...
const pa_channel_map * pa_stream_get_channel_map(pa_stream *s)
Return a pointer to the stream's channel map.
pa_stream * pa_stream_new_with_proplist(pa_context *c, const char *name, const pa_sample_spec *ss, const pa_channel_map *map, pa_proplist *p)
Create a new, unconnected stream with the specified name and sample type, and specify the initial str...
Playback and record buffer metrics.
Definition: def.h:389
enum pa_seek_mode pa_seek_mode_t
Seek type for pa_stream_write().
size_t pa_stream_writable_size(pa_stream *p)
Return the number of bytes that may be written using pa_stream_write().
void pa_stream_set_event_callback(pa_stream *p, pa_stream_event_cb_t cb, void *userdata)
Set the callback function that is called whenever a meta/policy control event is received.
void pa_stream_set_started_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata)
Set the callback function that is called when a the server starts playback after an underrun or on in...
void pa_stream_set_state_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata)
Set the callback function that is called whenever the state of the stream changes.
enum pa_update_mode pa_update_mode_t
Update mode enum for pa_proplist_update().
void pa_stream_set_write_callback(pa_stream *p, pa_stream_request_cb_t cb, void *userdata)
Set the callback function that is called when new data may be written to the stream.
int pa_stream_connect_playback(pa_stream *s, const char *dev, const pa_buffer_attr *attr, pa_stream_flags_t flags, const pa_cvolume *volume, pa_stream *sync_stream)
Connect the stream to a sink.
pa_operation * pa_stream_flush(pa_stream *s, pa_stream_success_cb_t cb, void *userdata)
Flush the playback or record buffer of this stream.
void pa_stream_unref(pa_stream *s)
Decrease the reference counter by one.
void(* pa_stream_event_cb_t)(pa_stream *p, const char *name, pa_proplist *pl, void *userdata)
A callback for asynchronous meta/policy event messages.
Definition: stream.h:354
pa_operation * pa_stream_drain(pa_stream *s, pa_stream_success_cb_t cb, void *userdata)
Drain a playback stream.
void pa_stream_set_moved_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata)
Set the callback function that is called whenever the stream is moved to a different sink/source...
struct pa_stream pa_stream
An opaque stream for playback or recording.
Definition: stream.h:337
pa_stream * pa_stream_new_extended(pa_context *c, const char *name, pa_format_info *const *formats, unsigned int n_formats, pa_proplist *p)
Create a new, unconnected stream with the specified name, the set of formats this client can provide...
pa_operation * pa_stream_trigger(pa_stream *s, pa_stream_success_cb_t cb, void *userdata)
Request immediate start of playback on this stream.
Constants and routines for sample type handling.
Asynchronous operations.
pa_operation * pa_stream_proplist_remove(pa_stream *s, const char *const keys[], pa_stream_success_cb_t cb, void *userdata)
Update the property list of the sink input/source output of this stream, remove entries.
int pa_stream_begin_write(pa_stream *p, void **data, size_t *nbytes)
Prepare writing data to the server (for playback streams).
void pa_stream_set_latency_update_callback(pa_stream *p, pa_stream_notify_cb_t cb, void *userdata)
Set the callback function that is called whenever a latency information update happens.
pa_operation * pa_stream_proplist_update(pa_stream *s, pa_update_mode_t mode, pa_proplist *p, pa_stream_success_cb_t cb, void *userdata)
Update the property list of the sink input/source output of this stream, adding new entries...
void(* pa_stream_success_cb_t)(pa_stream *s, int success, void *userdata)
A generic callback for operation completion.
Definition: stream.h:340
pa_stream * pa_stream_new(pa_context *c, const char *name, const pa_sample_spec *ss, const pa_channel_map *map)
Create a new, unconnected stream with the specified name and sample type.
int pa_stream_drop(pa_stream *p)
Remove the current fragment on record streams.
void(* pa_stream_notify_cb_t)(pa_stream *p, void *userdata)
A generic notification callback.
Definition: stream.h:346
enum pa_stream_flags pa_stream_flags_t
Some special flags for stream connections.
Represents the format of data provided in a stream or processed by a sink.
Definition: format.h:87
A channel map which can be used to attach labels to specific channels of a stream.
Definition: channelmap.h:264
pa_operation * pa_stream_cork(pa_stream *s, int b, pa_stream_success_cb_t cb, void *userdata)
Pause (or resume) playback of this stream temporarily.
struct pa_proplist pa_proplist
A property list object.
Definition: proplist.h:274
uint32_t pa_stream_get_monitor_stream(pa_stream *s)
Return the sink input index previously set with pa_stream_set_monitor_stream().
int pa_stream_disconnect(pa_stream *s)
Disconnect a stream from a source/sink.
const pa_buffer_attr * pa_stream_get_buffer_attr(pa_stream *s)
Return the per-stream server-side buffer metrics of the stream.
pa_operation * pa_stream_set_name(pa_stream *s, const char *name, pa_stream_success_cb_t cb, void *userdata)
Rename the stream.
Property list constants and functions.
int pa_stream_connect_record(pa_stream *s, const char *dev, const pa_buffer_attr *attr, pa_stream_flags_t flags)
Connect the stream to a source.
size_t pa_stream_readable_size(pa_stream *p)
Return the number of bytes that may be read using pa_stream_peek().
pa_operation * pa_stream_prebuf(pa_stream *s, pa_stream_success_cb_t cb, void *userdata)
Reenable prebuffering if specified in the pa_buffer_attr structure.