mirror of
				https://gitlab.freedesktop.org/pipewire/pipewire.git
				synced 2025-11-03 09:01:54 -05:00 
			
		
		
		
	pulse: add SPA_EXPORT
This commit is contained in:
		
							parent
							
								
									6cd1104d0c
								
							
						
					
					
						commit
						5f9200d9ee
					
				
					 28 changed files with 397 additions and 1 deletions
				
			
		| 
						 | 
					@ -159,6 +159,7 @@ const char *const pretty_table[PA_CHANNEL_POSITION_MAX] = {
 | 
				
			||||||
    [PA_CHANNEL_POSITION_TOP_REAR_RIGHT] = N_("Top Rear Right")
 | 
					    [PA_CHANNEL_POSITION_TOP_REAR_RIGHT] = N_("Top Rear Right")
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_channel_map* pa_channel_map_init(pa_channel_map *m) {
 | 
					pa_channel_map* pa_channel_map_init(pa_channel_map *m) {
 | 
				
			||||||
    unsigned c;
 | 
					    unsigned c;
 | 
				
			||||||
    pa_assert(m);
 | 
					    pa_assert(m);
 | 
				
			||||||
| 
						 | 
					@ -171,6 +172,7 @@ pa_channel_map* pa_channel_map_init(pa_channel_map *m) {
 | 
				
			||||||
    return m;
 | 
					    return m;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_channel_map* pa_channel_map_init_mono(pa_channel_map *m) {
 | 
					pa_channel_map* pa_channel_map_init_mono(pa_channel_map *m) {
 | 
				
			||||||
    pa_assert(m);
 | 
					    pa_assert(m);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -181,6 +183,7 @@ pa_channel_map* pa_channel_map_init_mono(pa_channel_map *m) {
 | 
				
			||||||
    return m;
 | 
					    return m;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_channel_map* pa_channel_map_init_stereo(pa_channel_map *m) {
 | 
					pa_channel_map* pa_channel_map_init_stereo(pa_channel_map *m) {
 | 
				
			||||||
    pa_assert(m);
 | 
					    pa_assert(m);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -192,6 +195,7 @@ pa_channel_map* pa_channel_map_init_stereo(pa_channel_map *m) {
 | 
				
			||||||
    return m;
 | 
					    return m;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_channel_map* pa_channel_map_init_auto(pa_channel_map *m, unsigned channels, pa_channel_map_def_t def) {
 | 
					pa_channel_map* pa_channel_map_init_auto(pa_channel_map *m, unsigned channels, pa_channel_map_def_t def) {
 | 
				
			||||||
    pa_assert(m);
 | 
					    pa_assert(m);
 | 
				
			||||||
    pa_assert(pa_channels_valid(channels));
 | 
					    pa_assert(pa_channels_valid(channels));
 | 
				
			||||||
| 
						 | 
					@ -391,6 +395,7 @@ pa_channel_map* pa_channel_map_init_auto(pa_channel_map *m, unsigned channels, p
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_channel_map* pa_channel_map_init_extend(pa_channel_map *m, unsigned channels, pa_channel_map_def_t def) {
 | 
					pa_channel_map* pa_channel_map_init_extend(pa_channel_map *m, unsigned channels, pa_channel_map_def_t def) {
 | 
				
			||||||
    unsigned c;
 | 
					    unsigned c;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -420,6 +425,7 @@ pa_channel_map* pa_channel_map_init_extend(pa_channel_map *m, unsigned channels,
 | 
				
			||||||
    return NULL;
 | 
					    return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const char* pa_channel_position_to_string(pa_channel_position_t pos) {
 | 
					const char* pa_channel_position_to_string(pa_channel_position_t pos) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (pos < 0 || pos >= PA_CHANNEL_POSITION_MAX)
 | 
					    if (pos < 0 || pos >= PA_CHANNEL_POSITION_MAX)
 | 
				
			||||||
| 
						 | 
					@ -428,6 +434,7 @@ const char* pa_channel_position_to_string(pa_channel_position_t pos) {
 | 
				
			||||||
    return table[pos];
 | 
					    return table[pos];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const char* pa_channel_position_to_pretty_string(pa_channel_position_t pos) {
 | 
					const char* pa_channel_position_to_pretty_string(pa_channel_position_t pos) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (pos < 0 || pos >= PA_CHANNEL_POSITION_MAX)
 | 
					    if (pos < 0 || pos >= PA_CHANNEL_POSITION_MAX)
 | 
				
			||||||
| 
						 | 
					@ -438,6 +445,7 @@ const char* pa_channel_position_to_pretty_string(pa_channel_position_t pos) {
 | 
				
			||||||
    return _(pretty_table[pos]);
 | 
					    return _(pretty_table[pos]);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_channel_map_equal(const pa_channel_map *a, const pa_channel_map *b) {
 | 
					int pa_channel_map_equal(const pa_channel_map *a, const pa_channel_map *b) {
 | 
				
			||||||
    unsigned c;
 | 
					    unsigned c;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -461,6 +469,7 @@ int pa_channel_map_equal(const pa_channel_map *a, const pa_channel_map *b) {
 | 
				
			||||||
    return 1;
 | 
					    return 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char* pa_channel_map_snprint(char *s, size_t l, const pa_channel_map *map) {
 | 
					char* pa_channel_map_snprint(char *s, size_t l, const pa_channel_map *map) {
 | 
				
			||||||
    unsigned channel;
 | 
					    unsigned channel;
 | 
				
			||||||
    bool first = true;
 | 
					    bool first = true;
 | 
				
			||||||
| 
						 | 
					@ -491,6 +500,7 @@ char* pa_channel_map_snprint(char *s, size_t l, const pa_channel_map *map) {
 | 
				
			||||||
    return s;
 | 
					    return s;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_channel_position_t pa_channel_position_from_string(const char *p) {
 | 
					pa_channel_position_t pa_channel_position_from_string(const char *p) {
 | 
				
			||||||
    pa_channel_position_t i;
 | 
					    pa_channel_position_t i;
 | 
				
			||||||
    pa_assert(p);
 | 
					    pa_assert(p);
 | 
				
			||||||
| 
						 | 
					@ -512,6 +522,7 @@ pa_channel_position_t pa_channel_position_from_string(const char *p) {
 | 
				
			||||||
    return PA_CHANNEL_POSITION_INVALID;
 | 
					    return PA_CHANNEL_POSITION_INVALID;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_channel_map *pa_channel_map_parse(pa_channel_map *rmap, const char *s) {
 | 
					pa_channel_map *pa_channel_map_parse(pa_channel_map *rmap, const char *s) {
 | 
				
			||||||
    pa_channel_map map;
 | 
					    pa_channel_map map;
 | 
				
			||||||
    char **tokens;
 | 
					    char **tokens;
 | 
				
			||||||
| 
						 | 
					@ -611,6 +622,7 @@ finish:
 | 
				
			||||||
    return rmap;
 | 
					    return rmap;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_channel_map_valid(const pa_channel_map *map) {
 | 
					int pa_channel_map_valid(const pa_channel_map *map) {
 | 
				
			||||||
    unsigned c;
 | 
					    unsigned c;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -626,6 +638,7 @@ int pa_channel_map_valid(const pa_channel_map *map) {
 | 
				
			||||||
    return 1;
 | 
					    return 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_channel_map_compatible(const pa_channel_map *map, const pa_sample_spec *ss) {
 | 
					int pa_channel_map_compatible(const pa_channel_map *map, const pa_sample_spec *ss) {
 | 
				
			||||||
    pa_assert(map);
 | 
					    pa_assert(map);
 | 
				
			||||||
    pa_assert(ss);
 | 
					    pa_assert(ss);
 | 
				
			||||||
| 
						 | 
					@ -636,6 +649,7 @@ int pa_channel_map_compatible(const pa_channel_map *map, const pa_sample_spec *s
 | 
				
			||||||
    return map->channels == ss->channels;
 | 
					    return map->channels == ss->channels;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_channel_map_superset(const pa_channel_map *a, const pa_channel_map *b) {
 | 
					int pa_channel_map_superset(const pa_channel_map *a, const pa_channel_map *b) {
 | 
				
			||||||
    pa_channel_position_mask_t am, bm;
 | 
					    pa_channel_position_mask_t am, bm;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -655,6 +669,7 @@ int pa_channel_map_superset(const pa_channel_map *a, const pa_channel_map *b) {
 | 
				
			||||||
    return (bm & am) == bm;
 | 
					    return (bm & am) == bm;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_channel_map_can_balance(const pa_channel_map *map) {
 | 
					int pa_channel_map_can_balance(const pa_channel_map *map) {
 | 
				
			||||||
    pa_channel_position_mask_t m;
 | 
					    pa_channel_position_mask_t m;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -668,6 +683,7 @@ int pa_channel_map_can_balance(const pa_channel_map *map) {
 | 
				
			||||||
        (PA_CHANNEL_POSITION_MASK_RIGHT & m);
 | 
					        (PA_CHANNEL_POSITION_MASK_RIGHT & m);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_channel_map_can_fade(const pa_channel_map *map) {
 | 
					int pa_channel_map_can_fade(const pa_channel_map *map) {
 | 
				
			||||||
    pa_channel_position_mask_t m;
 | 
					    pa_channel_position_mask_t m;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -681,6 +697,7 @@ int pa_channel_map_can_fade(const pa_channel_map *map) {
 | 
				
			||||||
        (PA_CHANNEL_POSITION_MASK_REAR & m);
 | 
					        (PA_CHANNEL_POSITION_MASK_REAR & m);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_channel_map_can_lfe_balance(const pa_channel_map *map) {
 | 
					int pa_channel_map_can_lfe_balance(const pa_channel_map *map) {
 | 
				
			||||||
    pa_channel_position_mask_t m;
 | 
					    pa_channel_position_mask_t m;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -694,6 +711,7 @@ int pa_channel_map_can_lfe_balance(const pa_channel_map *map) {
 | 
				
			||||||
        (PA_CHANNEL_POSITION_MASK_HFE & m);
 | 
					        (PA_CHANNEL_POSITION_MASK_HFE & m);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const char* pa_channel_map_to_name(const pa_channel_map *map) {
 | 
					const char* pa_channel_map_to_name(const pa_channel_map *map) {
 | 
				
			||||||
    pa_bitset_t in_map[PA_BITSET_ELEMENTS(PA_CHANNEL_POSITION_MAX)];
 | 
					    pa_bitset_t in_map[PA_BITSET_ELEMENTS(PA_CHANNEL_POSITION_MAX)];
 | 
				
			||||||
    unsigned c;
 | 
					    unsigned c;
 | 
				
			||||||
| 
						 | 
					@ -748,6 +766,7 @@ const char* pa_channel_map_to_name(const pa_channel_map *map) {
 | 
				
			||||||
    return NULL;
 | 
					    return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const char* pa_channel_map_to_pretty_name(const pa_channel_map *map) {
 | 
					const char* pa_channel_map_to_pretty_name(const pa_channel_map *map) {
 | 
				
			||||||
    pa_bitset_t in_map[PA_BITSET_ELEMENTS(PA_CHANNEL_POSITION_MAX)];
 | 
					    pa_bitset_t in_map[PA_BITSET_ELEMENTS(PA_CHANNEL_POSITION_MAX)];
 | 
				
			||||||
    unsigned c;
 | 
					    unsigned c;
 | 
				
			||||||
| 
						 | 
					@ -804,6 +823,7 @@ const char* pa_channel_map_to_pretty_name(const pa_channel_map *map) {
 | 
				
			||||||
    return NULL;
 | 
					    return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_channel_map_has_position(const pa_channel_map *map, pa_channel_position_t p) {
 | 
					int pa_channel_map_has_position(const pa_channel_map *map, pa_channel_position_t p) {
 | 
				
			||||||
    unsigned c;
 | 
					    unsigned c;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -817,6 +837,7 @@ int pa_channel_map_has_position(const pa_channel_map *map, pa_channel_position_t
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_channel_position_mask_t pa_channel_map_mask(const pa_channel_map *map) {
 | 
					pa_channel_position_mask_t pa_channel_map_mask(const pa_channel_map *map) {
 | 
				
			||||||
    unsigned c;
 | 
					    unsigned c;
 | 
				
			||||||
    pa_channel_position_mask_t r = 0;
 | 
					    pa_channel_position_mask_t r = 0;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -98,6 +98,7 @@ static void context_fail(pa_context *c, int error) {
 | 
				
			||||||
	pa_context_set_state(c, PA_CONTEXT_FAILED);
 | 
						pa_context_set_state(c, PA_CONTEXT_FAILED);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_context *pa_context_new(pa_mainloop_api *mainloop, const char *name)
 | 
					pa_context *pa_context_new(pa_mainloop_api *mainloop, const char *name)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return pa_context_new_with_proplist(mainloop, name, NULL);
 | 
						return pa_context_new_with_proplist(mainloop, name, NULL);
 | 
				
			||||||
| 
						 | 
					@ -419,6 +420,7 @@ static const struct pw_remote_events remote_events = {
 | 
				
			||||||
	.state_changed = remote_state_changed,
 | 
						.state_changed = remote_state_changed,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_context *pa_context_new_with_proplist(pa_mainloop_api *mainloop, const char *name, pa_proplist *p)
 | 
					pa_context *pa_context_new_with_proplist(pa_mainloop_api *mainloop, const char *name, pa_proplist *p)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct pw_core *core;
 | 
						struct pw_core *core;
 | 
				
			||||||
| 
						 | 
					@ -483,6 +485,7 @@ static void context_free(pa_context *c)
 | 
				
			||||||
	pw_core_destroy(c->core);
 | 
						pw_core_destroy(c->core);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_context_unref(pa_context *c)
 | 
					void pa_context_unref(pa_context *c)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(c);
 | 
						pa_assert(c);
 | 
				
			||||||
| 
						 | 
					@ -492,6 +495,7 @@ void pa_context_unref(pa_context *c)
 | 
				
			||||||
		context_free(c);
 | 
							context_free(c);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_context* pa_context_ref(pa_context *c)
 | 
					pa_context* pa_context_ref(pa_context *c)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(c);
 | 
						pa_assert(c);
 | 
				
			||||||
| 
						 | 
					@ -500,6 +504,7 @@ pa_context* pa_context_ref(pa_context *c)
 | 
				
			||||||
	return c;
 | 
						return c;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_context_set_state_callback(pa_context *c, pa_context_notify_cb_t cb, void *userdata)
 | 
					void pa_context_set_state_callback(pa_context *c, pa_context_notify_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(c);
 | 
						pa_assert(c);
 | 
				
			||||||
| 
						 | 
					@ -512,6 +517,7 @@ void pa_context_set_state_callback(pa_context *c, pa_context_notify_cb_t cb, voi
 | 
				
			||||||
	c->state_userdata = userdata;
 | 
						c->state_userdata = userdata;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_context_set_event_callback(pa_context *c, pa_context_event_cb_t cb, void *userdata)
 | 
					void pa_context_set_event_callback(pa_context *c, pa_context_event_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(c);
 | 
						pa_assert(c);
 | 
				
			||||||
| 
						 | 
					@ -524,6 +530,7 @@ void pa_context_set_event_callback(pa_context *c, pa_context_event_cb_t cb, void
 | 
				
			||||||
	c->event_userdata = userdata;
 | 
						c->event_userdata = userdata;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_context_errno(pa_context *c)
 | 
					int pa_context_errno(pa_context *c)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (!c)
 | 
						if (!c)
 | 
				
			||||||
| 
						 | 
					@ -534,6 +541,7 @@ int pa_context_errno(pa_context *c)
 | 
				
			||||||
	return c->error;
 | 
						return c->error;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_context_is_pending(pa_context *c)
 | 
					int pa_context_is_pending(pa_context *c)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(c);
 | 
						pa_assert(c);
 | 
				
			||||||
| 
						 | 
					@ -544,6 +552,7 @@ int pa_context_is_pending(pa_context *c)
 | 
				
			||||||
	return !spa_list_is_empty(&c->operations);
 | 
						return !spa_list_is_empty(&c->operations);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_context_state_t pa_context_get_state(pa_context *c)
 | 
					pa_context_state_t pa_context_get_state(pa_context *c)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(c);
 | 
						pa_assert(c);
 | 
				
			||||||
| 
						 | 
					@ -551,6 +560,7 @@ pa_context_state_t pa_context_get_state(pa_context *c)
 | 
				
			||||||
	return c->state;
 | 
						return c->state;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_context_connect(pa_context *c, const char *server, pa_context_flags_t flags, const pa_spawn_api *api)
 | 
					int pa_context_connect(pa_context *c, const char *server, pa_context_flags_t flags, const pa_spawn_api *api)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int res;
 | 
						int res;
 | 
				
			||||||
| 
						 | 
					@ -573,6 +583,7 @@ int pa_context_connect(pa_context *c, const char *server, pa_context_flags_t fla
 | 
				
			||||||
	return res;
 | 
						return res;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_context_disconnect(pa_context *c)
 | 
					void pa_context_disconnect(pa_context *c)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(c);
 | 
						pa_assert(c);
 | 
				
			||||||
| 
						 | 
					@ -598,6 +609,7 @@ static void on_notify(pa_operation *o, void *userdata)
 | 
				
			||||||
		d->cb(c, d->userdata);
 | 
							d->cb(c, d->userdata);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_drain(pa_context *c, pa_context_notify_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_drain(pa_context *c, pa_context_notify_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -627,6 +639,7 @@ static void on_success(pa_operation *o, void *userdata)
 | 
				
			||||||
		d->cb(c, d->ret, d->userdata);
 | 
							d->cb(c, d->ret, d->userdata);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_exit_daemon(pa_context *c, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_exit_daemon(pa_context *c, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -641,18 +654,21 @@ pa_operation* pa_context_exit_daemon(pa_context *c, pa_context_success_cb_t cb,
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_default_sink(pa_context *c, const char *name, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_default_sink(pa_context *c, const char *name, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_default_source(pa_context *c, const char *name, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_default_source(pa_context *c, const char *name, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_context_is_local(pa_context *c)
 | 
					int pa_context_is_local(pa_context *c)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(c);
 | 
						pa_assert(c);
 | 
				
			||||||
| 
						 | 
					@ -663,6 +679,7 @@ int pa_context_is_local(pa_context *c)
 | 
				
			||||||
	return 1;
 | 
						return 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_name(pa_context *c, const char *name, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_name(pa_context *c, const char *name, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct spa_dict dict;
 | 
						struct spa_dict dict;
 | 
				
			||||||
| 
						 | 
					@ -689,6 +706,7 @@ pa_operation* pa_context_set_name(pa_context *c, const char *name, pa_context_su
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const char* pa_context_get_server(pa_context *c)
 | 
					const char* pa_context_get_server(pa_context *c)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	const struct pw_core_info *info;
 | 
						const struct pw_core_info *info;
 | 
				
			||||||
| 
						 | 
					@ -702,11 +720,13 @@ const char* pa_context_get_server(pa_context *c)
 | 
				
			||||||
	return info->name;
 | 
						return info->name;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
uint32_t pa_context_get_protocol_version(pa_context *c)
 | 
					uint32_t pa_context_get_protocol_version(pa_context *c)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return PA_PROTOCOL_VERSION;
 | 
						return PA_PROTOCOL_VERSION;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
uint32_t pa_context_get_server_protocol_version(pa_context *c)
 | 
					uint32_t pa_context_get_server_protocol_version(pa_context *c)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(c);
 | 
						pa_assert(c);
 | 
				
			||||||
| 
						 | 
					@ -717,6 +737,7 @@ uint32_t pa_context_get_server_protocol_version(pa_context *c)
 | 
				
			||||||
	return PA_PROTOCOL_VERSION;
 | 
						return PA_PROTOCOL_VERSION;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_context_proplist_update(pa_context *c, pa_update_mode_t mode, pa_proplist *p, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation *pa_context_proplist_update(pa_context *c, pa_update_mode_t mode, pa_proplist *p, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -739,6 +760,7 @@ pa_operation *pa_context_proplist_update(pa_context *c, pa_update_mode_t mode, p
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_context_proplist_remove(pa_context *c, const char *const keys[], pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation *pa_context_proplist_remove(pa_context *c, const char *const keys[], pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -760,11 +782,13 @@ pa_operation *pa_context_proplist_remove(pa_context *c, const char *const keys[]
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
uint32_t pa_context_get_index(pa_context *c)
 | 
					uint32_t pa_context_get_index(pa_context *c)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return c->client_index;
 | 
						return c->client_index;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_time_event* pa_context_rttime_new(pa_context *c, pa_usec_t usec, pa_time_event_cb_t cb, void *userdata)
 | 
					pa_time_event* pa_context_rttime_new(pa_context *c, pa_usec_t usec, pa_time_event_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct timeval tv;
 | 
						struct timeval tv;
 | 
				
			||||||
| 
						 | 
					@ -781,6 +805,7 @@ pa_time_event* pa_context_rttime_new(pa_context *c, pa_usec_t usec, pa_time_even
 | 
				
			||||||
	return c->mainloop->time_new(c->mainloop, &tv, cb, userdata);
 | 
						return c->mainloop->time_new(c->mainloop, &tv, cb, userdata);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_context_rttime_restart(pa_context *c, pa_time_event *e, pa_usec_t usec)
 | 
					void pa_context_rttime_restart(pa_context *c, pa_time_event *e, pa_usec_t usec)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct timeval tv;
 | 
						struct timeval tv;
 | 
				
			||||||
| 
						 | 
					@ -797,6 +822,7 @@ void pa_context_rttime_restart(pa_context *c, pa_time_event *e, pa_usec_t usec)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
size_t pa_context_get_tile_size(pa_context *c, const pa_sample_spec *ss)
 | 
					size_t pa_context_get_tile_size(pa_context *c, const pa_sample_spec *ss)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	size_t fs, mbs;
 | 
						size_t fs, mbs;
 | 
				
			||||||
| 
						 | 
					@ -811,6 +837,7 @@ size_t pa_context_get_tile_size(pa_context *c, const pa_sample_spec *ss)
 | 
				
			||||||
	return PA_MAX(mbs, fs);
 | 
						return PA_MAX(mbs, fs);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_context_load_cookie_from_file(pa_context *c, const char *cookie_file_path)
 | 
					int pa_context_load_cookie_from_file(pa_context *c, const char *cookie_file_path)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,6 +26,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "internal.h"
 | 
					#include "internal.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_format_info_get_sample_format(const pa_format_info *f, pa_sample_format_t *sf) {
 | 
					int pa_format_info_get_sample_format(const pa_format_info *f, pa_sample_format_t *sf) {
 | 
				
			||||||
    int r;
 | 
					    int r;
 | 
				
			||||||
    char *sf_str;
 | 
					    char *sf_str;
 | 
				
			||||||
| 
						 | 
					@ -51,6 +52,7 @@ int pa_format_info_get_sample_format(const pa_format_info *f, pa_sample_format_t
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_format_info_get_rate(const pa_format_info *f, uint32_t *rate) {
 | 
					int pa_format_info_get_rate(const pa_format_info *f, uint32_t *rate) {
 | 
				
			||||||
    int r;
 | 
					    int r;
 | 
				
			||||||
    int rate_local;
 | 
					    int rate_local;
 | 
				
			||||||
| 
						 | 
					@ -72,6 +74,7 @@ int pa_format_info_get_rate(const pa_format_info *f, uint32_t *rate) {
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_format_info_get_channels(const pa_format_info *f, uint8_t *channels) {
 | 
					int pa_format_info_get_channels(const pa_format_info *f, uint8_t *channels) {
 | 
				
			||||||
    int r;
 | 
					    int r;
 | 
				
			||||||
    int channels_local;
 | 
					    int channels_local;
 | 
				
			||||||
| 
						 | 
					@ -93,6 +96,7 @@ int pa_format_info_get_channels(const pa_format_info *f, uint8_t *channels) {
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_format_info_get_channel_map(const pa_format_info *f, pa_channel_map *map) {
 | 
					int pa_format_info_get_channel_map(const pa_format_info *f, pa_channel_map *map) {
 | 
				
			||||||
    int r;
 | 
					    int r;
 | 
				
			||||||
    char *map_str;
 | 
					    char *map_str;
 | 
				
			||||||
| 
						 | 
					@ -115,6 +119,7 @@ int pa_format_info_get_channel_map(const pa_format_info *f, pa_channel_map *map)
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_format_info *pa_format_info_from_sample_spec2(const pa_sample_spec *ss, const pa_channel_map *map, bool set_format,
 | 
					pa_format_info *pa_format_info_from_sample_spec2(const pa_sample_spec *ss, const pa_channel_map *map, bool set_format,
 | 
				
			||||||
                                                 bool set_rate, bool set_channels) {
 | 
					                                                 bool set_rate, bool set_channels) {
 | 
				
			||||||
    pa_format_info *format = NULL;
 | 
					    pa_format_info *format = NULL;
 | 
				
			||||||
| 
						 | 
					@ -152,6 +157,7 @@ fail:
 | 
				
			||||||
    return NULL;
 | 
					    return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_format_info_to_sample_spec2(const pa_format_info *f, pa_sample_spec *ss, pa_channel_map *map,
 | 
					int pa_format_info_to_sample_spec2(const pa_format_info *f, pa_sample_spec *ss, pa_channel_map *map,
 | 
				
			||||||
                                   const pa_sample_spec *fallback_ss, const pa_channel_map *fallback_map) {
 | 
					                                   const pa_sample_spec *fallback_ss, const pa_channel_map *fallback_map) {
 | 
				
			||||||
    int r, r2;
 | 
					    int r, r2;
 | 
				
			||||||
| 
						 | 
					@ -216,6 +222,7 @@ int pa_format_info_to_sample_spec2(const pa_format_info *f, pa_sample_spec *ss,
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_format_info_to_sample_spec_fake(const pa_format_info *f, pa_sample_spec *ss, pa_channel_map *map) {
 | 
					int pa_format_info_to_sample_spec_fake(const pa_format_info *f, pa_sample_spec *ss, pa_channel_map *map) {
 | 
				
			||||||
    int rate;
 | 
					    int rate;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -19,11 +19,13 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <errno.h>
 | 
					#include <errno.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/utils/defs.h>
 | 
				
			||||||
#include <pulse/direction.h>
 | 
					#include <pulse/direction.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define pa_init_i18n()
 | 
					#define pa_init_i18n()
 | 
				
			||||||
#define _(String)	(String)
 | 
					#define _(String)	(String)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_direction_valid(pa_direction_t direction)
 | 
					int pa_direction_valid(pa_direction_t direction)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (direction != PA_DIRECTION_INPUT
 | 
						if (direction != PA_DIRECTION_INPUT
 | 
				
			||||||
| 
						 | 
					@ -33,6 +35,7 @@ int pa_direction_valid(pa_direction_t direction)
 | 
				
			||||||
    return 1;
 | 
					    return 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const char *pa_direction_to_string(pa_direction_t direction) {
 | 
					const char *pa_direction_to_string(pa_direction_t direction) {
 | 
				
			||||||
	pa_init_i18n();
 | 
						pa_init_i18n();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -29,6 +29,7 @@
 | 
				
			||||||
#define _(String)	(String)
 | 
					#define _(String)	(String)
 | 
				
			||||||
#define pa_init_i18n()
 | 
					#define pa_init_i18n()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const char*pa_strerror(int error)
 | 
					const char*pa_strerror(int error)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	static const char* const errortab[PA_ERR_MAX] = {
 | 
						static const char* const errortab[PA_ERR_MAX] = {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,6 +26,7 @@
 | 
				
			||||||
#include "internal.h"
 | 
					#include "internal.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_ext_device_manager_test(
 | 
					pa_operation *pa_ext_device_manager_test(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        pa_ext_device_manager_test_cb_t cb,
 | 
					        pa_ext_device_manager_test_cb_t cb,
 | 
				
			||||||
| 
						 | 
					@ -35,6 +36,7 @@ pa_operation *pa_ext_device_manager_test(
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_ext_device_manager_read(
 | 
					pa_operation *pa_ext_device_manager_read(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        pa_ext_device_manager_read_cb_t cb,
 | 
					        pa_ext_device_manager_read_cb_t cb,
 | 
				
			||||||
| 
						 | 
					@ -44,6 +46,7 @@ pa_operation *pa_ext_device_manager_read(
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_ext_device_manager_set_device_description(
 | 
					pa_operation *pa_ext_device_manager_set_device_description(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        const char* device,
 | 
					        const char* device,
 | 
				
			||||||
| 
						 | 
					@ -55,6 +58,7 @@ pa_operation *pa_ext_device_manager_set_device_description(
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_ext_device_manager_delete(
 | 
					pa_operation *pa_ext_device_manager_delete(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        const char *const s[],
 | 
					        const char *const s[],
 | 
				
			||||||
| 
						 | 
					@ -65,6 +69,7 @@ pa_operation *pa_ext_device_manager_delete(
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_ext_device_manager_enable_role_device_priority_routing(
 | 
					pa_operation *pa_ext_device_manager_enable_role_device_priority_routing(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        int enable,
 | 
					        int enable,
 | 
				
			||||||
| 
						 | 
					@ -75,6 +80,7 @@ pa_operation *pa_ext_device_manager_enable_role_device_priority_routing(
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_ext_device_manager_reorder_devices_for_role(
 | 
					pa_operation *pa_ext_device_manager_reorder_devices_for_role(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        const char* role,
 | 
					        const char* role,
 | 
				
			||||||
| 
						 | 
					@ -86,6 +92,7 @@ pa_operation *pa_ext_device_manager_reorder_devices_for_role(
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_ext_device_manager_subscribe(
 | 
					pa_operation *pa_ext_device_manager_subscribe(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        int enable,
 | 
					        int enable,
 | 
				
			||||||
| 
						 | 
					@ -96,6 +103,7 @@ pa_operation *pa_ext_device_manager_subscribe(
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_ext_device_manager_set_subscribe_cb(
 | 
					void pa_ext_device_manager_set_subscribe_cb(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        pa_ext_device_manager_subscribe_cb_t cb,
 | 
					        pa_ext_device_manager_subscribe_cb_t cb,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -41,6 +41,7 @@ static void restore_test(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_ext_device_restore_test(
 | 
					pa_operation *pa_ext_device_restore_test(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        pa_ext_device_restore_test_cb_t cb,
 | 
					        pa_ext_device_restore_test_cb_t cb,
 | 
				
			||||||
| 
						 | 
					@ -72,6 +73,7 @@ static void on_success(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_ext_device_restore_subscribe(
 | 
					pa_operation *pa_ext_device_restore_subscribe(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        int enable,
 | 
					        int enable,
 | 
				
			||||||
| 
						 | 
					@ -96,6 +98,7 @@ pa_operation *pa_ext_device_restore_subscribe(
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_ext_device_restore_set_subscribe_cb(
 | 
					void pa_ext_device_restore_set_subscribe_cb(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        pa_ext_device_restore_subscribe_cb_t cb,
 | 
					        pa_ext_device_restore_subscribe_cb_t cb,
 | 
				
			||||||
| 
						 | 
					@ -112,6 +115,7 @@ static void read_formats(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_ext_device_restore_read_formats_all(
 | 
					pa_operation *pa_ext_device_restore_read_formats_all(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        pa_ext_device_restore_read_device_formats_cb_t cb,
 | 
					        pa_ext_device_restore_read_device_formats_cb_t cb,
 | 
				
			||||||
| 
						 | 
					@ -135,6 +139,7 @@ pa_operation *pa_ext_device_restore_read_formats_all(
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_ext_device_restore_read_formats(
 | 
					pa_operation *pa_ext_device_restore_read_formats(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        pa_device_type_t type,
 | 
					        pa_device_type_t type,
 | 
				
			||||||
| 
						 | 
					@ -160,6 +165,7 @@ pa_operation *pa_ext_device_restore_read_formats(
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_ext_device_restore_save_formats(
 | 
					pa_operation *pa_ext_device_restore_save_formats(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        pa_device_type_t type,
 | 
					        pa_device_type_t type,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,6 +43,7 @@ static void restore_test(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_ext_stream_restore_test(
 | 
					pa_operation *pa_ext_stream_restore_test(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        pa_ext_stream_restore_test_cb_t cb,
 | 
					        pa_ext_stream_restore_test_cb_t cb,
 | 
				
			||||||
| 
						 | 
					@ -76,6 +77,7 @@ static void restore_read(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_ext_stream_restore_read(
 | 
					pa_operation *pa_ext_stream_restore_read(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        pa_ext_stream_restore_read_cb_t cb,
 | 
					        pa_ext_stream_restore_read_cb_t cb,
 | 
				
			||||||
| 
						 | 
					@ -107,6 +109,7 @@ static void on_success(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_ext_stream_restore_write(
 | 
					pa_operation *pa_ext_stream_restore_write(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        pa_update_mode_t mode,
 | 
					        pa_update_mode_t mode,
 | 
				
			||||||
| 
						 | 
					@ -135,6 +138,7 @@ pa_operation *pa_ext_stream_restore_write(
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Delete entries from the stream database. \since 0.9.12 */
 | 
					/** Delete entries from the stream database. \since 0.9.12 */
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_ext_stream_restore_delete(
 | 
					pa_operation *pa_ext_stream_restore_delete(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        const char *const s[],
 | 
					        const char *const s[],
 | 
				
			||||||
| 
						 | 
					@ -160,6 +164,7 @@ pa_operation *pa_ext_stream_restore_delete(
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Subscribe to changes in the stream database. \since 0.9.12 */
 | 
					/** Subscribe to changes in the stream database. \since 0.9.12 */
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_ext_stream_restore_subscribe(
 | 
					pa_operation *pa_ext_stream_restore_subscribe(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        int enable,
 | 
					        int enable,
 | 
				
			||||||
| 
						 | 
					@ -186,6 +191,7 @@ pa_operation *pa_ext_stream_restore_subscribe(
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Set the subscription callback that is called when
 | 
					/** Set the subscription callback that is called when
 | 
				
			||||||
 * pa_ext_stream_restore_subscribe() was called. \since 0.9.12 */
 | 
					 * pa_ext_stream_restore_subscribe() was called. \since 0.9.12 */
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_ext_stream_restore_set_subscribe_cb(
 | 
					void pa_ext_stream_restore_set_subscribe_cb(
 | 
				
			||||||
        pa_context *c,
 | 
					        pa_context *c,
 | 
				
			||||||
        pa_ext_stream_restore_subscribe_cb_t cb,
 | 
					        pa_ext_stream_restore_subscribe_cb_t cb,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										28
									
								
								src/format.c
									
										
									
									
									
								
							
							
						
						
									
										28
									
								
								src/format.c
									
										
									
									
									
								
							| 
						 | 
					@ -46,6 +46,7 @@ static const char* const _encoding_str_table[]= {
 | 
				
			||||||
    [PA_ENCODING_ANY] = "any",
 | 
					    [PA_ENCODING_ANY] = "any",
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const char *pa_encoding_to_string(pa_encoding_t e) {
 | 
					const char *pa_encoding_to_string(pa_encoding_t e) {
 | 
				
			||||||
    if (e < 0 || e >= PA_ENCODING_MAX)
 | 
					    if (e < 0 || e >= PA_ENCODING_MAX)
 | 
				
			||||||
        return NULL;
 | 
					        return NULL;
 | 
				
			||||||
| 
						 | 
					@ -53,6 +54,7 @@ const char *pa_encoding_to_string(pa_encoding_t e) {
 | 
				
			||||||
    return _encoding_str_table[e];
 | 
					    return _encoding_str_table[e];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_encoding_t pa_encoding_from_string(const char *encoding) {
 | 
					pa_encoding_t pa_encoding_from_string(const char *encoding) {
 | 
				
			||||||
    pa_encoding_t e;
 | 
					    pa_encoding_t e;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -63,6 +65,7 @@ pa_encoding_t pa_encoding_from_string(const char *encoding) {
 | 
				
			||||||
    return PA_ENCODING_INVALID;
 | 
					    return PA_ENCODING_INVALID;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_format_info* pa_format_info_new(void) {
 | 
					pa_format_info* pa_format_info_new(void) {
 | 
				
			||||||
    pa_format_info *f = pa_xnew(pa_format_info, 1);
 | 
					    pa_format_info *f = pa_xnew(pa_format_info, 1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -72,6 +75,7 @@ pa_format_info* pa_format_info_new(void) {
 | 
				
			||||||
    return f;
 | 
					    return f;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_format_info* pa_format_info_copy(const pa_format_info *src) {
 | 
					pa_format_info* pa_format_info_copy(const pa_format_info *src) {
 | 
				
			||||||
    pa_format_info *dest;
 | 
					    pa_format_info *dest;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -89,6 +93,7 @@ pa_format_info* pa_format_info_copy(const pa_format_info *src) {
 | 
				
			||||||
    return dest;
 | 
					    return dest;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_format_info_free(pa_format_info *f) {
 | 
					void pa_format_info_free(pa_format_info *f) {
 | 
				
			||||||
    pa_assert(f);
 | 
					    pa_assert(f);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -96,14 +101,17 @@ void pa_format_info_free(pa_format_info *f) {
 | 
				
			||||||
    pa_xfree(f);
 | 
					    pa_xfree(f);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_format_info_valid(const pa_format_info *f) {
 | 
					int pa_format_info_valid(const pa_format_info *f) {
 | 
				
			||||||
    return (f->encoding >= 0 && f->encoding < PA_ENCODING_MAX && f->plist != NULL);
 | 
					    return (f->encoding >= 0 && f->encoding < PA_ENCODING_MAX && f->plist != NULL);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_format_info_is_pcm(const pa_format_info *f) {
 | 
					int pa_format_info_is_pcm(const pa_format_info *f) {
 | 
				
			||||||
    return f->encoding == PA_ENCODING_PCM;
 | 
					    return f->encoding == PA_ENCODING_PCM;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_format_info_snprint(char *s, size_t l, const pa_format_info *f) {
 | 
					char *pa_format_info_snprint(char *s, size_t l, const pa_format_info *f) {
 | 
				
			||||||
    char *tmp;
 | 
					    char *tmp;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -127,6 +135,7 @@ char *pa_format_info_snprint(char *s, size_t l, const pa_format_info *f) {
 | 
				
			||||||
    return s;
 | 
					    return s;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_format_info* pa_format_info_from_string(const char *str) {
 | 
					pa_format_info* pa_format_info_from_string(const char *str) {
 | 
				
			||||||
    pa_format_info *f = pa_format_info_new();
 | 
					    pa_format_info *f = pa_format_info_new();
 | 
				
			||||||
    char *encoding = NULL, *properties = NULL;
 | 
					    char *encoding = NULL, *properties = NULL;
 | 
				
			||||||
| 
						 | 
					@ -165,6 +174,7 @@ error:
 | 
				
			||||||
    goto out;
 | 
					    goto out;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_format_info_is_compatible(const pa_format_info *first, const pa_format_info *second) {
 | 
					int pa_format_info_is_compatible(const pa_format_info *first, const pa_format_info *second) {
 | 
				
			||||||
    const char *key;
 | 
					    const char *key;
 | 
				
			||||||
    void *state = NULL;
 | 
					    void *state = NULL;
 | 
				
			||||||
| 
						 | 
					@ -188,6 +198,7 @@ int pa_format_info_is_compatible(const pa_format_info *first, const pa_format_in
 | 
				
			||||||
    return true;
 | 
					    return true;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_format_info* pa_format_info_from_sample_spec(const pa_sample_spec *ss, const pa_channel_map *map) {
 | 
					pa_format_info* pa_format_info_from_sample_spec(const pa_sample_spec *ss, const pa_channel_map *map) {
 | 
				
			||||||
    char cm[PA_CHANNEL_MAP_SNPRINT_MAX];
 | 
					    char cm[PA_CHANNEL_MAP_SNPRINT_MAX];
 | 
				
			||||||
    pa_format_info *f;
 | 
					    pa_format_info *f;
 | 
				
			||||||
| 
						 | 
					@ -211,6 +222,7 @@ pa_format_info* pa_format_info_from_sample_spec(const pa_sample_spec *ss, const
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* For PCM streams */
 | 
					/* For PCM streams */
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_format_info_to_sample_spec(const pa_format_info *f, pa_sample_spec *ss, pa_channel_map *map) {
 | 
					int pa_format_info_to_sample_spec(const pa_format_info *f, pa_sample_spec *ss, pa_channel_map *map) {
 | 
				
			||||||
    pa_assert(f);
 | 
					    pa_assert(f);
 | 
				
			||||||
    pa_assert(ss);
 | 
					    pa_assert(ss);
 | 
				
			||||||
| 
						 | 
					@ -230,6 +242,7 @@ int pa_format_info_to_sample_spec(const pa_format_info *f, pa_sample_spec *ss, p
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_prop_type_t pa_format_info_get_prop_type(const pa_format_info *f, const char *key) {
 | 
					pa_prop_type_t pa_format_info_get_prop_type(const pa_format_info *f, const char *key) {
 | 
				
			||||||
    const char *str;
 | 
					    const char *str;
 | 
				
			||||||
    pa_json_object *o;
 | 
					    pa_json_object *o;
 | 
				
			||||||
| 
						 | 
					@ -300,6 +313,7 @@ pa_prop_type_t pa_format_info_get_prop_type(const pa_format_info *f, const char
 | 
				
			||||||
    return type;
 | 
					    return type;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_format_info_get_prop_int(const pa_format_info *f, const char *key, int *v) {
 | 
					int pa_format_info_get_prop_int(const pa_format_info *f, const char *key, int *v) {
 | 
				
			||||||
    const char *str;
 | 
					    const char *str;
 | 
				
			||||||
    pa_json_object *o;
 | 
					    pa_json_object *o;
 | 
				
			||||||
| 
						 | 
					@ -330,6 +344,7 @@ int pa_format_info_get_prop_int(const pa_format_info *f, const char *key, int *v
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_format_info_get_prop_int_range(const pa_format_info *f, const char *key, int *min, int *max) {
 | 
					int pa_format_info_get_prop_int_range(const pa_format_info *f, const char *key, int *min, int *max) {
 | 
				
			||||||
    const char *str;
 | 
					    const char *str;
 | 
				
			||||||
    pa_json_object *o;
 | 
					    pa_json_object *o;
 | 
				
			||||||
| 
						 | 
					@ -376,6 +391,7 @@ out:
 | 
				
			||||||
    return ret;
 | 
					    return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_format_info_get_prop_int_array(const pa_format_info *f, const char *key, int **values, int *n_values) {
 | 
					int pa_format_info_get_prop_int_array(const pa_format_info *f, const char *key, int **values, int *n_values) {
 | 
				
			||||||
    const char *str;
 | 
					    const char *str;
 | 
				
			||||||
    pa_json_object *o;
 | 
					    pa_json_object *o;
 | 
				
			||||||
| 
						 | 
					@ -423,6 +439,7 @@ out:
 | 
				
			||||||
    return ret;
 | 
					    return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_format_info_get_prop_string(const pa_format_info *f, const char *key, char **v) {
 | 
					int pa_format_info_get_prop_string(const pa_format_info *f, const char *key, char **v) {
 | 
				
			||||||
    const char *str = NULL;
 | 
					    const char *str = NULL;
 | 
				
			||||||
    pa_json_object *o;
 | 
					    pa_json_object *o;
 | 
				
			||||||
| 
						 | 
					@ -453,6 +470,7 @@ int pa_format_info_get_prop_string(const pa_format_info *f, const char *key, cha
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_format_info_get_prop_string_array(const pa_format_info *f, const char *key, char ***values, int *n_values) {
 | 
					int pa_format_info_get_prop_string_array(const pa_format_info *f, const char *key, char ***values, int *n_values) {
 | 
				
			||||||
    const char *str;
 | 
					    const char *str;
 | 
				
			||||||
    pa_json_object *o;
 | 
					    pa_json_object *o;
 | 
				
			||||||
| 
						 | 
					@ -500,6 +518,7 @@ out:
 | 
				
			||||||
    return ret;
 | 
					    return ret;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_format_info_free_string_array(char **values, int n_values) {
 | 
					void pa_format_info_free_string_array(char **values, int n_values) {
 | 
				
			||||||
    int i;
 | 
					    int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -509,18 +528,22 @@ void pa_format_info_free_string_array(char **values, int n_values) {
 | 
				
			||||||
    pa_xfree(values);
 | 
					    pa_xfree(values);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_format_info_set_sample_format(pa_format_info *f, pa_sample_format_t sf) {
 | 
					void pa_format_info_set_sample_format(pa_format_info *f, pa_sample_format_t sf) {
 | 
				
			||||||
    pa_format_info_set_prop_string(f, PA_PROP_FORMAT_SAMPLE_FORMAT, pa_sample_format_to_string(sf));
 | 
					    pa_format_info_set_prop_string(f, PA_PROP_FORMAT_SAMPLE_FORMAT, pa_sample_format_to_string(sf));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_format_info_set_rate(pa_format_info *f, int rate) {
 | 
					void pa_format_info_set_rate(pa_format_info *f, int rate) {
 | 
				
			||||||
    pa_format_info_set_prop_int(f, PA_PROP_FORMAT_RATE, rate);
 | 
					    pa_format_info_set_prop_int(f, PA_PROP_FORMAT_RATE, rate);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_format_info_set_channels(pa_format_info *f, int channels) {
 | 
					void pa_format_info_set_channels(pa_format_info *f, int channels) {
 | 
				
			||||||
    pa_format_info_set_prop_int(f, PA_PROP_FORMAT_CHANNELS, channels);
 | 
					    pa_format_info_set_prop_int(f, PA_PROP_FORMAT_CHANNELS, channels);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_format_info_set_channel_map(pa_format_info *f, const pa_channel_map *map) {
 | 
					void pa_format_info_set_channel_map(pa_format_info *f, const pa_channel_map *map) {
 | 
				
			||||||
    char map_str[PA_CHANNEL_MAP_SNPRINT_MAX];
 | 
					    char map_str[PA_CHANNEL_MAP_SNPRINT_MAX];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -529,6 +552,7 @@ void pa_format_info_set_channel_map(pa_format_info *f, const pa_channel_map *map
 | 
				
			||||||
    pa_format_info_set_prop_string(f, PA_PROP_FORMAT_CHANNEL_MAP, map_str);
 | 
					    pa_format_info_set_prop_string(f, PA_PROP_FORMAT_CHANNEL_MAP, map_str);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_format_info_set_prop_int(pa_format_info *f, const char *key, int value) {
 | 
					void pa_format_info_set_prop_int(pa_format_info *f, const char *key, int value) {
 | 
				
			||||||
    pa_assert(f);
 | 
					    pa_assert(f);
 | 
				
			||||||
    pa_assert(key);
 | 
					    pa_assert(key);
 | 
				
			||||||
| 
						 | 
					@ -536,6 +560,7 @@ void pa_format_info_set_prop_int(pa_format_info *f, const char *key, int value)
 | 
				
			||||||
    pa_proplist_setf(f->plist, key, "%d", value);
 | 
					    pa_proplist_setf(f->plist, key, "%d", value);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_format_info_set_prop_int_array(pa_format_info *f, const char *key, const int *values, int n_values) {
 | 
					void pa_format_info_set_prop_int_array(pa_format_info *f, const char *key, const int *values, int n_values) {
 | 
				
			||||||
    pa_strbuf *buf;
 | 
					    pa_strbuf *buf;
 | 
				
			||||||
    char *str;
 | 
					    char *str;
 | 
				
			||||||
| 
						 | 
					@ -559,6 +584,7 @@ void pa_format_info_set_prop_int_array(pa_format_info *f, const char *key, const
 | 
				
			||||||
    pa_xfree (str);
 | 
					    pa_xfree (str);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_format_info_set_prop_int_range(pa_format_info *f, const char *key, int min, int max) {
 | 
					void pa_format_info_set_prop_int_range(pa_format_info *f, const char *key, int min, int max) {
 | 
				
			||||||
    pa_assert(f);
 | 
					    pa_assert(f);
 | 
				
			||||||
    pa_assert(key);
 | 
					    pa_assert(key);
 | 
				
			||||||
| 
						 | 
					@ -567,6 +593,7 @@ void pa_format_info_set_prop_int_range(pa_format_info *f, const char *key, int m
 | 
				
			||||||
            min, max);
 | 
					            min, max);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_format_info_set_prop_string(pa_format_info *f, const char *key, const char *value) {
 | 
					void pa_format_info_set_prop_string(pa_format_info *f, const char *key, const char *value) {
 | 
				
			||||||
    pa_assert(f);
 | 
					    pa_assert(f);
 | 
				
			||||||
    pa_assert(key);
 | 
					    pa_assert(key);
 | 
				
			||||||
| 
						 | 
					@ -574,6 +601,7 @@ void pa_format_info_set_prop_string(pa_format_info *f, const char *key, const ch
 | 
				
			||||||
    pa_proplist_setf(f->plist, key, "\"%s\"", value);
 | 
					    pa_proplist_setf(f->plist, key, "\"%s\"", value);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_format_info_set_prop_string_array(pa_format_info *f, const char *key, const char **values, int n_values) {
 | 
					void pa_format_info_set_prop_string_array(pa_format_info *f, const char *key, const char **values, int n_values) {
 | 
				
			||||||
    pa_strbuf *buf;
 | 
					    pa_strbuf *buf;
 | 
				
			||||||
    char *str;
 | 
					    char *str;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -379,6 +379,7 @@ static void sink_info(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_sink_info_by_name(pa_context *c, const char *name, pa_sink_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_sink_info_by_name(pa_context *c, const char *name, pa_sink_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -407,6 +408,7 @@ pa_operation* pa_context_get_sink_info_by_name(pa_context *c, const char *name,
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_sink_info_by_index(pa_context *c, uint32_t idx, pa_sink_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_sink_info_by_index(pa_context *c, uint32_t idx, pa_sink_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -453,6 +455,7 @@ static void sink_info_list(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_sink_info_list(pa_context *c, pa_sink_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_sink_info_list(pa_context *c, pa_sink_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -507,6 +510,7 @@ static void set_node_mute(pa_context *c, struct global *g, bool mute)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_sink_volume_by_index(pa_context *c, uint32_t idx, const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_sink_volume_by_index(pa_context *c, uint32_t idx, const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -537,6 +541,7 @@ pa_operation* pa_context_set_sink_volume_by_index(pa_context *c, uint32_t idx, c
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_sink_volume_by_name(pa_context *c, const char *name, const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_sink_volume_by_name(pa_context *c, const char *name, const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -565,6 +570,7 @@ pa_operation* pa_context_set_sink_volume_by_name(pa_context *c, const char *name
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_sink_mute_by_index(pa_context *c, uint32_t idx, int mute, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_sink_mute_by_index(pa_context *c, uint32_t idx, int mute, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -594,6 +600,7 @@ pa_operation* pa_context_set_sink_mute_by_index(pa_context *c, uint32_t idx, int
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_sink_mute_by_name(pa_context *c, const char *name, int mute, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_sink_mute_by_name(pa_context *c, const char *name, int mute, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -621,24 +628,28 @@ pa_operation* pa_context_set_sink_mute_by_name(pa_context *c, const char *name,
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_suspend_sink_by_name(pa_context *c, const char *sink_name, int suspend, pa_context_success_cb_t cb, void* userdata)
 | 
					pa_operation* pa_context_suspend_sink_by_name(pa_context *c, const char *sink_name, int suspend, pa_context_success_cb_t cb, void* userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_suspend_sink_by_index(pa_context *c, uint32_t idx, int suspend,  pa_context_success_cb_t cb, void* userdata)
 | 
					pa_operation* pa_context_suspend_sink_by_index(pa_context *c, uint32_t idx, int suspend,  pa_context_success_cb_t cb, void* userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_sink_port_by_index(pa_context *c, uint32_t idx, const char*port, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_sink_port_by_index(pa_context *c, uint32_t idx, const char*port, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_sink_port_by_name(pa_context *c, const char*name, const char*port, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_sink_port_by_name(pa_context *c, const char*name, const char*port, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
| 
						 | 
					@ -731,6 +742,7 @@ static void source_info(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_source_info_by_name(pa_context *c, const char *name, pa_source_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_source_info_by_name(pa_context *c, const char *name, pa_source_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -759,6 +771,7 @@ pa_operation* pa_context_get_source_info_by_name(pa_context *c, const char *name
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_source_info_by_index(pa_context *c, uint32_t idx, pa_source_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_source_info_by_index(pa_context *c, uint32_t idx, pa_source_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -804,6 +817,7 @@ static void source_info_list(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_source_info_list(pa_context *c, pa_source_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_source_info_list(pa_context *c, pa_source_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -826,6 +840,7 @@ pa_operation* pa_context_get_source_info_list(pa_context *c, pa_source_info_cb_t
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_source_volume_by_index(pa_context *c, uint32_t idx, const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_source_volume_by_index(pa_context *c, uint32_t idx, const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -856,6 +871,7 @@ pa_operation* pa_context_set_source_volume_by_index(pa_context *c, uint32_t idx,
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_source_volume_by_name(pa_context *c, const char *name, const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_source_volume_by_name(pa_context *c, const char *name, const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -884,6 +900,7 @@ pa_operation* pa_context_set_source_volume_by_name(pa_context *c, const char *na
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_source_mute_by_index(pa_context *c, uint32_t idx, int mute, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_source_mute_by_index(pa_context *c, uint32_t idx, int mute, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -913,6 +930,7 @@ pa_operation* pa_context_set_source_mute_by_index(pa_context *c, uint32_t idx, i
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_source_mute_by_name(pa_context *c, const char *name, int mute, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_source_mute_by_name(pa_context *c, const char *name, int mute, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -940,24 +958,28 @@ pa_operation* pa_context_set_source_mute_by_name(pa_context *c, const char *name
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_suspend_source_by_name(pa_context *c, const char *source_name, int suspend, pa_context_success_cb_t cb, void* userdata)
 | 
					pa_operation* pa_context_suspend_source_by_name(pa_context *c, const char *source_name, int suspend, pa_context_success_cb_t cb, void* userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_suspend_source_by_index(pa_context *c, uint32_t idx, int suspend, pa_context_success_cb_t cb, void* userdata)
 | 
					pa_operation* pa_context_suspend_source_by_index(pa_context *c, uint32_t idx, int suspend, pa_context_success_cb_t cb, void* userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_source_port_by_index(pa_context *c, uint32_t idx, const char*port, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_source_port_by_index(pa_context *c, uint32_t idx, const char*port, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_source_port_by_name(pa_context *c, const char*name, const char*port, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_source_port_by_name(pa_context *c, const char*name, const char*port, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
| 
						 | 
					@ -999,6 +1021,7 @@ static void server_info(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_server_info(pa_context *c, pa_server_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_server_info(pa_context *c, pa_server_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1039,6 +1062,7 @@ static void module_info(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_module_info(pa_context *c, uint32_t idx, pa_module_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_module_info(pa_context *c, uint32_t idx, pa_module_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1085,6 +1109,7 @@ static void module_info_list(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_module_info_list(pa_context *c, pa_module_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_module_info_list(pa_context *c, pa_module_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1107,12 +1132,14 @@ pa_operation* pa_context_get_module_info_list(pa_context *c, pa_module_info_cb_t
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_load_module(pa_context *c, const char*name, const char *argument, pa_context_index_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_load_module(pa_context *c, const char*name, const char *argument, pa_context_index_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_unload_module(pa_context *c, uint32_t idx, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_unload_module(pa_context *c, uint32_t idx, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
| 
						 | 
					@ -1140,6 +1167,7 @@ static void client_info(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_client_info(pa_context *c, uint32_t idx, pa_client_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_client_info(pa_context *c, uint32_t idx, pa_client_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1186,6 +1214,7 @@ static void client_info_list(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_client_info_list(pa_context *c, pa_client_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_client_info_list(pa_context *c, pa_client_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1208,6 +1237,7 @@ pa_operation* pa_context_get_client_info_list(pa_context *c, pa_client_info_cb_t
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_kill_client(pa_context *c, uint32_t idx, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_kill_client(pa_context *c, uint32_t idx, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct global *g;
 | 
						struct global *g;
 | 
				
			||||||
| 
						 | 
					@ -1298,6 +1328,7 @@ static void card_info(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_card_info_by_index(pa_context *c, uint32_t idx, pa_card_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_card_info_by_index(pa_context *c, uint32_t idx, pa_card_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1328,6 +1359,7 @@ pa_operation* pa_context_get_card_info_by_index(pa_context *c, uint32_t idx, pa_
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_card_info_by_name(pa_context *c, const char *name, pa_card_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_card_info_by_name(pa_context *c, const char *name, pa_card_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1372,6 +1404,7 @@ static void card_info_list(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_card_info_list(pa_context *c, pa_card_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_card_info_list(pa_context *c, pa_card_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1441,6 +1474,7 @@ done:
 | 
				
			||||||
	free(d->profile);
 | 
						free(d->profile);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_card_profile_by_index(pa_context *c, uint32_t idx, const char*profile, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_card_profile_by_index(pa_context *c, uint32_t idx, const char*profile, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1474,6 +1508,7 @@ pa_operation* pa_context_set_card_profile_by_index(pa_context *c, uint32_t idx,
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_card_profile_by_name(pa_context *c, const char*name, const char*profile, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_card_profile_by_name(pa_context *c, const char*name, const char*profile, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1505,6 +1540,7 @@ pa_operation* pa_context_set_card_profile_by_name(pa_context *c, const char*name
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_port_latency_offset(pa_context *c, const char *card_name, const char *port_name, int64_t offset, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_port_latency_offset(pa_context *c, const char *card_name, const char *port_name, int64_t offset, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
| 
						 | 
					@ -1610,6 +1646,7 @@ static void sink_input_info(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_sink_input_info(pa_context *c, uint32_t idx, pa_sink_input_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_sink_input_info(pa_context *c, uint32_t idx, pa_sink_input_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1657,6 +1694,7 @@ static void sink_input_info_list(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_sink_input_info_list(pa_context *c, pa_sink_input_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_sink_input_info_list(pa_context *c, pa_sink_input_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1680,18 +1718,21 @@ pa_operation* pa_context_get_sink_input_info_list(pa_context *c, pa_sink_input_i
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_move_sink_input_by_name(pa_context *c, uint32_t idx, const char *sink_name, pa_context_success_cb_t cb, void* userdata)
 | 
					pa_operation* pa_context_move_sink_input_by_name(pa_context *c, uint32_t idx, const char *sink_name, pa_context_success_cb_t cb, void* userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_move_sink_input_by_index(pa_context *c, uint32_t idx, uint32_t sink_idx, pa_context_success_cb_t cb, void* userdata)
 | 
					pa_operation* pa_context_move_sink_input_by_index(pa_context *c, uint32_t idx, uint32_t sink_idx, pa_context_success_cb_t cb, void* userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_sink_input_volume(pa_context *c, uint32_t idx, const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_sink_input_volume(pa_context *c, uint32_t idx, const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_stream *s;
 | 
						pa_stream *s;
 | 
				
			||||||
| 
						 | 
					@ -1724,6 +1765,7 @@ pa_operation* pa_context_set_sink_input_volume(pa_context *c, uint32_t idx, cons
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_sink_input_mute(pa_context *c, uint32_t idx, int mute, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_sink_input_mute(pa_context *c, uint32_t idx, int mute, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_stream *s;
 | 
						pa_stream *s;
 | 
				
			||||||
| 
						 | 
					@ -1754,6 +1796,7 @@ pa_operation* pa_context_set_sink_input_mute(pa_context *c, uint32_t idx, int mu
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_kill_sink_input(pa_context *c, uint32_t idx, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_kill_sink_input(pa_context *c, uint32_t idx, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_stream *s;
 | 
						pa_stream *s;
 | 
				
			||||||
| 
						 | 
					@ -1873,6 +1916,7 @@ static void source_output_info(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_source_output_info(pa_context *c, uint32_t idx, pa_source_output_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_source_output_info(pa_context *c, uint32_t idx, pa_source_output_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1919,6 +1963,7 @@ static void source_output_info_list(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_operation_done(o);
 | 
						pa_operation_done(o);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_source_output_info_list(pa_context *c, pa_source_output_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_source_output_info_list(pa_context *c, pa_source_output_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1941,18 +1986,21 @@ pa_operation* pa_context_get_source_output_info_list(pa_context *c, pa_source_ou
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_move_source_output_by_name(pa_context *c, uint32_t idx, const char *source_name, pa_context_success_cb_t cb, void* userdata)
 | 
					pa_operation* pa_context_move_source_output_by_name(pa_context *c, uint32_t idx, const char *source_name, pa_context_success_cb_t cb, void* userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_move_source_output_by_index(pa_context *c, uint32_t idx, uint32_t source_idx, pa_context_success_cb_t cb, void* userdata)
 | 
					pa_operation* pa_context_move_source_output_by_index(pa_context *c, uint32_t idx, uint32_t source_idx, pa_context_success_cb_t cb, void* userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_source_output_volume(pa_context *c, uint32_t idx, const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_source_output_volume(pa_context *c, uint32_t idx, const pa_cvolume *volume, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_stream *s;
 | 
						pa_stream *s;
 | 
				
			||||||
| 
						 | 
					@ -1985,6 +2033,7 @@ pa_operation* pa_context_set_source_output_volume(pa_context *c, uint32_t idx, c
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_set_source_output_mute(pa_context *c, uint32_t idx, int mute, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_set_source_output_mute(pa_context *c, uint32_t idx, int mute, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_stream *s;
 | 
						pa_stream *s;
 | 
				
			||||||
| 
						 | 
					@ -2015,6 +2064,7 @@ pa_operation* pa_context_set_source_output_mute(pa_context *c, uint32_t idx, int
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_kill_source_output(pa_context *c, uint32_t idx, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_kill_source_output(pa_context *c, uint32_t idx, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_stream *s;
 | 
						pa_stream *s;
 | 
				
			||||||
| 
						 | 
					@ -2044,60 +2094,70 @@ pa_operation* pa_context_kill_source_output(pa_context *c, uint32_t idx, pa_cont
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_stat(pa_context *c, pa_stat_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_stat(pa_context *c, pa_stat_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_sample_info_by_name(pa_context *c, const char *name, pa_sample_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_sample_info_by_name(pa_context *c, const char *name, pa_sample_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_sample_info_by_index(pa_context *c, uint32_t idx, pa_sample_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_sample_info_by_index(pa_context *c, uint32_t idx, pa_sample_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_sample_info_list(pa_context *c, pa_sample_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_sample_info_list(pa_context *c, pa_sample_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_autoload_info_by_name(pa_context *c, const char *name, pa_autoload_type_t type, pa_autoload_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_autoload_info_by_name(pa_context *c, const char *name, pa_autoload_type_t type, pa_autoload_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Deprecated: Not Implemented");
 | 
						pw_log_warn("Deprecated: Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_autoload_info_by_index(pa_context *c, uint32_t idx, pa_autoload_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_autoload_info_by_index(pa_context *c, uint32_t idx, pa_autoload_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Deprecated: Not Implemented");
 | 
						pw_log_warn("Deprecated: Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_get_autoload_info_list(pa_context *c, pa_autoload_info_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_get_autoload_info_list(pa_context *c, pa_autoload_info_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Deprecated: Not Implemented");
 | 
						pw_log_warn("Deprecated: Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_add_autoload(pa_context *c, const char *name, pa_autoload_type_t type, const char *module, const char*argument, pa_context_index_cb_t cb, void* userdata)
 | 
					pa_operation* pa_context_add_autoload(pa_context *c, const char *name, pa_autoload_type_t type, const char *module, const char*argument, pa_context_index_cb_t cb, void* userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Deprecated: Not Implemented");
 | 
						pw_log_warn("Deprecated: Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_remove_autoload_by_name(pa_context *c, const char *name, pa_autoload_type_t type, pa_context_success_cb_t cb, void* userdata)
 | 
					pa_operation* pa_context_remove_autoload_by_name(pa_context *c, const char *name, pa_autoload_type_t type, pa_context_success_cb_t cb, void* userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Deprecated: Not Implemented");
 | 
						pw_log_warn("Deprecated: Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_remove_autoload_by_index(pa_context *c, uint32_t idx, pa_context_success_cb_t cb, void* userdata)
 | 
					pa_operation* pa_context_remove_autoload_by_index(pa_context *c, uint32_t idx, pa_context_success_cb_t cb, void* userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Deprecated: Not Implemented");
 | 
						pw_log_warn("Deprecated: Not Implemented");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										11
									
								
								src/json.c
									
										
									
									
									
								
							
							
						
						
									
										11
									
								
								src/json.c
									
										
									
									
									
								
							| 
						 | 
					@ -499,6 +499,7 @@ error:
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_json_object* pa_json_parse(const char *str) {
 | 
					pa_json_object* pa_json_parse(const char *str) {
 | 
				
			||||||
    pa_json_object *obj;
 | 
					    pa_json_object *obj;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -518,10 +519,12 @@ pa_json_object* pa_json_parse(const char *str) {
 | 
				
			||||||
    return obj;
 | 
					    return obj;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_json_type pa_json_object_get_type(const pa_json_object *obj) {
 | 
					pa_json_type pa_json_object_get_type(const pa_json_object *obj) {
 | 
				
			||||||
    return obj->type;
 | 
					    return obj->type;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_json_object_free(pa_json_object *obj) {
 | 
					void pa_json_object_free(pa_json_object *obj) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    switch (pa_json_object_get_type(obj)) {
 | 
					    switch (pa_json_object_get_type(obj)) {
 | 
				
			||||||
| 
						 | 
					@ -551,26 +554,31 @@ void pa_json_object_free(pa_json_object *obj) {
 | 
				
			||||||
    pa_xfree(obj);
 | 
					    pa_xfree(obj);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_json_object_get_int(const pa_json_object *o) {
 | 
					int pa_json_object_get_int(const pa_json_object *o) {
 | 
				
			||||||
    pa_assert(pa_json_object_get_type(o) == PA_JSON_TYPE_INT);
 | 
					    pa_assert(pa_json_object_get_type(o) == PA_JSON_TYPE_INT);
 | 
				
			||||||
    return o->int_value;
 | 
					    return o->int_value;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
double pa_json_object_get_double(const pa_json_object *o) {
 | 
					double pa_json_object_get_double(const pa_json_object *o) {
 | 
				
			||||||
    pa_assert(pa_json_object_get_type(o) == PA_JSON_TYPE_DOUBLE);
 | 
					    pa_assert(pa_json_object_get_type(o) == PA_JSON_TYPE_DOUBLE);
 | 
				
			||||||
    return o->double_value;
 | 
					    return o->double_value;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
bool pa_json_object_get_bool(const pa_json_object *o) {
 | 
					bool pa_json_object_get_bool(const pa_json_object *o) {
 | 
				
			||||||
    pa_assert(pa_json_object_get_type(o) == PA_JSON_TYPE_BOOL);
 | 
					    pa_assert(pa_json_object_get_type(o) == PA_JSON_TYPE_BOOL);
 | 
				
			||||||
    return o->bool_value;
 | 
					    return o->bool_value;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const char* pa_json_object_get_string(const pa_json_object *o) {
 | 
					const char* pa_json_object_get_string(const pa_json_object *o) {
 | 
				
			||||||
    pa_assert(pa_json_object_get_type(o) == PA_JSON_TYPE_STRING);
 | 
					    pa_assert(pa_json_object_get_type(o) == PA_JSON_TYPE_STRING);
 | 
				
			||||||
    return o->string_value;
 | 
					    return o->string_value;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const pa_json_object* pa_json_object_get_object_member(const pa_json_object *o, const char *name) {
 | 
					const pa_json_object* pa_json_object_get_object_member(const pa_json_object *o, const char *name) {
 | 
				
			||||||
    pa_json_item *item;
 | 
					    pa_json_item *item;
 | 
				
			||||||
    pa_assert(pa_json_object_get_type(o) == PA_JSON_TYPE_OBJECT);
 | 
					    pa_assert(pa_json_object_get_type(o) == PA_JSON_TYPE_OBJECT);
 | 
				
			||||||
| 
						 | 
					@ -581,17 +589,20 @@ const pa_json_object* pa_json_object_get_object_member(const pa_json_object *o,
 | 
				
			||||||
    return NULL;
 | 
					    return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_json_object_get_array_length(const pa_json_object *o) {
 | 
					int pa_json_object_get_array_length(const pa_json_object *o) {
 | 
				
			||||||
    pa_assert(pa_json_object_get_type(o) == PA_JSON_TYPE_ARRAY);
 | 
					    pa_assert(pa_json_object_get_type(o) == PA_JSON_TYPE_ARRAY);
 | 
				
			||||||
    return pw_array_get_len(&o->values, const pa_json_object*);
 | 
					    return pw_array_get_len(&o->values, const pa_json_object*);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const pa_json_object* pa_json_object_get_array_member(const pa_json_object *o, int index) {
 | 
					const pa_json_object* pa_json_object_get_array_member(const pa_json_object *o, int index) {
 | 
				
			||||||
    pa_assert(pa_json_object_get_type(o) == PA_JSON_TYPE_ARRAY);
 | 
					    pa_assert(pa_json_object_get_type(o) == PA_JSON_TYPE_ARRAY);
 | 
				
			||||||
    return pw_array_get_unchecked_s(&o->values, index, sizeof(pa_json_object*),
 | 
					    return pw_array_get_unchecked_s(&o->values, index, sizeof(pa_json_object*),
 | 
				
			||||||
		    const pa_json_object);
 | 
							    const pa_json_object);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
bool pa_json_object_equal(const pa_json_object *o1, const pa_json_object *o2) {
 | 
					bool pa_json_object_equal(const pa_json_object *o1, const pa_json_object *o2) {
 | 
				
			||||||
    int i;
 | 
					    int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -70,6 +70,7 @@ static GSourceFuncs source_funcs =
 | 
				
			||||||
	NULL,
 | 
						NULL,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_glib_mainloop *pa_glib_mainloop_new(GMainContext *c)
 | 
					pa_glib_mainloop *pa_glib_mainloop_new(GMainContext *c)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -102,6 +103,7 @@ pa_glib_mainloop *pa_glib_mainloop_new(GMainContext *c)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_glib_mainloop_free(pa_glib_mainloop* g)
 | 
					void pa_glib_mainloop_free(pa_glib_mainloop* g)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	g_source_destroy(&g->source->base);
 | 
						g_source_destroy(&g->source->base);
 | 
				
			||||||
| 
						 | 
					@ -109,6 +111,7 @@ void pa_glib_mainloop_free(pa_glib_mainloop* g)
 | 
				
			||||||
	free(g);
 | 
						free(g);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_mainloop_api* pa_glib_mainloop_get_api(pa_glib_mainloop *g)
 | 
					pa_mainloop_api* pa_glib_mainloop_get_api(pa_glib_mainloop *g)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return pa_mainloop_get_api(g->loop);
 | 
						return pa_mainloop_get_api(g->loop);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -42,6 +42,7 @@ struct pa_signal_event {
 | 
				
			||||||
	void *userdata;
 | 
						void *userdata;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_signal_init(pa_mainloop_api *a)
 | 
					int pa_signal_init(pa_mainloop_api *a)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(a);
 | 
						pa_assert(a);
 | 
				
			||||||
| 
						 | 
					@ -54,6 +55,7 @@ int pa_signal_init(pa_mainloop_api *a)
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_signal_done(void)
 | 
					void pa_signal_done(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_signal_event *ev, *t;
 | 
						pa_signal_event *ev, *t;
 | 
				
			||||||
| 
						 | 
					@ -74,6 +76,7 @@ static void source_signal_func (void *data, int signal_number)
 | 
				
			||||||
		ev->callback(api, ev, signal_number, ev->userdata);
 | 
							ev->callback(api, ev, signal_number, ev->userdata);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_signal_event* pa_signal_new(int sig, pa_signal_cb_t callback, void *userdata)
 | 
					pa_signal_event* pa_signal_new(int sig, pa_signal_cb_t callback, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_signal_event *ev;
 | 
						pa_signal_event *ev;
 | 
				
			||||||
| 
						 | 
					@ -91,6 +94,7 @@ pa_signal_event* pa_signal_new(int sig, pa_signal_cb_t callback, void *userdata)
 | 
				
			||||||
	return ev;
 | 
						return ev;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_signal_free(pa_signal_event *e)
 | 
					void pa_signal_free(pa_signal_event *e)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(e);
 | 
						pa_assert(e);
 | 
				
			||||||
| 
						 | 
					@ -102,6 +106,7 @@ void pa_signal_free(pa_signal_event *e)
 | 
				
			||||||
	free(e);
 | 
						free(e);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_signal_set_destroy(pa_signal_event *e, pa_signal_destroy_cb_t callback)
 | 
					void pa_signal_set_destroy(pa_signal_event *e, pa_signal_destroy_cb_t callback)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(e);
 | 
						pa_assert(e);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -240,6 +240,7 @@ static const pa_mainloop_api api =
 | 
				
			||||||
	.quit = api_quit,
 | 
						.quit = api_quit,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_mainloop *pa_mainloop_new(void)
 | 
					pa_mainloop *pa_mainloop_new(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_mainloop *loop;
 | 
						pa_mainloop *loop;
 | 
				
			||||||
| 
						 | 
					@ -263,12 +264,14 @@ pa_mainloop *pa_mainloop_new(void)
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_mainloop_free(pa_mainloop* m)
 | 
					void pa_mainloop_free(pa_mainloop* m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_loop_destroy(m->loop);
 | 
						pw_loop_destroy(m->loop);
 | 
				
			||||||
	free(m);
 | 
						free(m);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_mainloop_prepare(pa_mainloop *m, int timeout)
 | 
					int pa_mainloop_prepare(pa_mainloop *m, int timeout)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (m->quit)
 | 
						if (m->quit)
 | 
				
			||||||
| 
						 | 
					@ -279,6 +282,7 @@ int pa_mainloop_prepare(pa_mainloop *m, int timeout)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/** Execute the previously prepared poll. Returns a negative value on error.*/
 | 
					/** Execute the previously prepared poll. Returns a negative value on error.*/
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_mainloop_poll(pa_mainloop *m)
 | 
					int pa_mainloop_poll(pa_mainloop *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (m->quit)
 | 
						if (m->quit)
 | 
				
			||||||
| 
						 | 
					@ -287,6 +291,7 @@ int pa_mainloop_poll(pa_mainloop *m)
 | 
				
			||||||
	return m->n_events = pw_loop_iterate(m->loop, m->timeout);
 | 
						return m->n_events = pw_loop_iterate(m->loop, m->timeout);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_mainloop_dispatch(pa_mainloop *m)
 | 
					int pa_mainloop_dispatch(pa_mainloop *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (m->quit)
 | 
						if (m->quit)
 | 
				
			||||||
| 
						 | 
					@ -295,6 +300,7 @@ int pa_mainloop_dispatch(pa_mainloop *m)
 | 
				
			||||||
	return m->n_events;
 | 
						return m->n_events;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_mainloop_get_retval(pa_mainloop *m)
 | 
					int pa_mainloop_get_retval(pa_mainloop *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return m->retval;
 | 
						return m->retval;
 | 
				
			||||||
| 
						 | 
					@ -306,6 +312,7 @@ Returns a negative value on error or exit request. If block is nonzero,
 | 
				
			||||||
block for events if none are queued. Optionally return the return value as
 | 
					block for events if none are queued. Optionally return the return value as
 | 
				
			||||||
specified with the main loop's quit() routine in the integer variable retval points
 | 
					specified with the main loop's quit() routine in the integer variable retval points
 | 
				
			||||||
to. On success returns the number of sources dispatched in this iteration. */
 | 
					to. On success returns the number of sources dispatched in this iteration. */
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_mainloop_iterate(pa_mainloop *m, int block, int *retval)
 | 
					int pa_mainloop_iterate(pa_mainloop *m, int block, int *retval)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int r;
 | 
						int r;
 | 
				
			||||||
| 
						 | 
					@ -328,6 +335,7 @@ int pa_mainloop_iterate(pa_mainloop *m, int block, int *retval)
 | 
				
			||||||
	return r;
 | 
						return r;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_mainloop_run(pa_mainloop *m, int *retval)
 | 
					int pa_mainloop_run(pa_mainloop *m, int *retval)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int r;
 | 
						int r;
 | 
				
			||||||
| 
						 | 
					@ -342,24 +350,28 @@ int pa_mainloop_run(pa_mainloop *m, int *retval)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_mainloop_api* pa_mainloop_get_api(pa_mainloop *m)
 | 
					pa_mainloop_api* pa_mainloop_get_api(pa_mainloop *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(m);
 | 
						pa_assert(m);
 | 
				
			||||||
	return &m->api;
 | 
						return &m->api;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_mainloop_quit(pa_mainloop *m, int retval)
 | 
					void pa_mainloop_quit(pa_mainloop *m, int retval)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(m);
 | 
						pa_assert(m);
 | 
				
			||||||
	m->api.quit(&m->api, retval);
 | 
						m->api.quit(&m->api, retval);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_mainloop_wakeup(pa_mainloop *m)
 | 
					void pa_mainloop_wakeup(pa_mainloop *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(m);
 | 
						pa_assert(m);
 | 
				
			||||||
	pw_loop_signal_event(m->loop, m->event);
 | 
						pw_loop_signal_event(m->loop, m->event);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_mainloop_set_poll_func(pa_mainloop *m, pa_poll_func poll_func, void *userdata)
 | 
					void pa_mainloop_set_poll_func(pa_mainloop *m, pa_poll_func poll_func, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -58,6 +58,7 @@ int pa_operation_sync(pa_operation *o)
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_operation_ref(pa_operation *o)
 | 
					pa_operation *pa_operation_ref(pa_operation *o)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(o);
 | 
						pa_assert(o);
 | 
				
			||||||
| 
						 | 
					@ -96,6 +97,7 @@ static void operation_unlink(pa_operation *o) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_operation_unref(pa_operation *o)
 | 
					void pa_operation_unref(pa_operation *o)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(o);
 | 
						pa_assert(o);
 | 
				
			||||||
| 
						 | 
					@ -126,6 +128,7 @@ static void operation_set_state(pa_operation *o, pa_operation_state_t st) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_operation_cancel(pa_operation *o)
 | 
					void pa_operation_cancel(pa_operation *o)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(o);
 | 
						pa_assert(o);
 | 
				
			||||||
| 
						 | 
					@ -141,6 +144,7 @@ void pa_operation_done(pa_operation *o) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation_state_t pa_operation_get_state(pa_operation *o)
 | 
					pa_operation_state_t pa_operation_get_state(pa_operation *o)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(o);
 | 
						pa_assert(o);
 | 
				
			||||||
| 
						 | 
					@ -148,6 +152,7 @@ pa_operation_state_t pa_operation_get_state(pa_operation *o)
 | 
				
			||||||
	return o->state;
 | 
						return o->state;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_operation_set_state_callback(pa_operation *o, pa_operation_notify_cb_t cb, void *userdata)
 | 
					void pa_operation_set_state_callback(pa_operation *o, pa_operation_notify_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(o);
 | 
						pa_assert(o);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -49,6 +49,7 @@ pa_proplist* pa_proplist_new_props(struct pw_properties *props)
 | 
				
			||||||
	return pa_proplist_new_dict(&props->dict);
 | 
						return pa_proplist_new_dict(&props->dict);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_proplist* pa_proplist_new(void)
 | 
					pa_proplist* pa_proplist_new(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return pa_proplist_new_dict(NULL);
 | 
						return pa_proplist_new_dict(NULL);
 | 
				
			||||||
| 
						 | 
					@ -60,12 +61,14 @@ int pa_proplist_update_dict(pa_proplist *p, struct spa_dict *dict)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_proplist_free(pa_proplist* p)
 | 
					void pa_proplist_free(pa_proplist* p)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_properties_free(p->props);
 | 
						pw_properties_free(p->props);
 | 
				
			||||||
	free(p);
 | 
						free(p);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_proplist_key_valid(const char *key)
 | 
					int pa_proplist_key_valid(const char *key)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	const char *p;
 | 
						const char *p;
 | 
				
			||||||
| 
						 | 
					@ -79,6 +82,7 @@ int pa_proplist_key_valid(const char *key)
 | 
				
			||||||
	return 1;
 | 
						return 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_proplist_sets(pa_proplist *p, const char *key, const char *value)
 | 
					int pa_proplist_sets(pa_proplist *p, const char *key, const char *value)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(p);
 | 
						pa_assert(p);
 | 
				
			||||||
| 
						 | 
					@ -92,6 +96,7 @@ int pa_proplist_sets(pa_proplist *p, const char *key, const char *value)
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_proplist_setp(pa_proplist *p, const char *pair)
 | 
					int pa_proplist_setp(pa_proplist *p, const char *pair)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	const char *t;
 | 
						const char *t;
 | 
				
			||||||
| 
						 | 
					@ -113,6 +118,7 @@ int pa_proplist_setp(pa_proplist *p, const char *pair)
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_proplist_setf(pa_proplist *p, const char *key, const char *format, ...)
 | 
					int pa_proplist_setf(pa_proplist *p, const char *key, const char *format, ...)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	va_list varargs;
 | 
						va_list varargs;
 | 
				
			||||||
| 
						 | 
					@ -124,6 +130,7 @@ int pa_proplist_setf(pa_proplist *p, const char *key, const char *format, ...)
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_proplist_set(pa_proplist *p, const char *key, const void *data, size_t nbytes)
 | 
					int pa_proplist_set(pa_proplist *p, const char *key, const void *data, size_t nbytes)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(p);
 | 
						pa_assert(p);
 | 
				
			||||||
| 
						 | 
					@ -137,11 +144,13 @@ int pa_proplist_set(pa_proplist *p, const char *key, const void *data, size_t nb
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const char *pa_proplist_gets(pa_proplist *p, const char *key)
 | 
					const char *pa_proplist_gets(pa_proplist *p, const char *key)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return pw_properties_get(p->props, key);
 | 
						return pw_properties_get(p->props, key);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_proplist_get(pa_proplist *p, const char *key, const void **data, size_t *nbytes)
 | 
					int pa_proplist_get(pa_proplist *p, const char *key, const void **data, size_t *nbytes)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	const char *val;
 | 
						const char *val;
 | 
				
			||||||
| 
						 | 
					@ -156,6 +165,7 @@ int pa_proplist_get(pa_proplist *p, const char *key, const void **data, size_t *
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_proplist_update(pa_proplist *p, pa_update_mode_t mode, const pa_proplist *other)
 | 
					void pa_proplist_update(pa_proplist *p, pa_update_mode_t mode, const pa_proplist *other)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	uint32_t i;
 | 
						uint32_t i;
 | 
				
			||||||
| 
						 | 
					@ -181,6 +191,7 @@ void pa_proplist_update(pa_proplist *p, pa_update_mode_t mode, const pa_proplist
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_proplist_unset(pa_proplist *p, const char *key)
 | 
					int pa_proplist_unset(pa_proplist *p, const char *key)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(p);
 | 
						spa_assert(p);
 | 
				
			||||||
| 
						 | 
					@ -192,6 +203,7 @@ int pa_proplist_unset(pa_proplist *p, const char *key)
 | 
				
			||||||
	return pw_properties_set(p->props, key, NULL);
 | 
						return pw_properties_set(p->props, key, NULL);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_proplist_unset_many(pa_proplist *p, const char * const keys[])
 | 
					int pa_proplist_unset_many(pa_proplist *p, const char * const keys[])
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	const char * const * k;
 | 
						const char * const * k;
 | 
				
			||||||
| 
						 | 
					@ -210,6 +222,7 @@ int pa_proplist_unset_many(pa_proplist *p, const char * const keys[])
 | 
				
			||||||
	return n;
 | 
						return n;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const char *pa_proplist_iterate(pa_proplist *p, void **state)
 | 
					const char *pa_proplist_iterate(pa_proplist *p, void **state)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(p);
 | 
						spa_assert(p);
 | 
				
			||||||
| 
						 | 
					@ -217,12 +230,14 @@ const char *pa_proplist_iterate(pa_proplist *p, void **state)
 | 
				
			||||||
	return pw_properties_iterate(p->props, state);
 | 
						return pw_properties_iterate(p->props, state);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_proplist_to_string(pa_proplist *p)
 | 
					char *pa_proplist_to_string(pa_proplist *p)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(p);
 | 
						spa_assert(p);
 | 
				
			||||||
	return pa_proplist_to_string_sep(p, ",");
 | 
						return pa_proplist_to_string_sep(p, ",");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_proplist_to_string_sep(pa_proplist *p, const char *sep)
 | 
					char *pa_proplist_to_string_sep(pa_proplist *p, const char *sep)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	const char *key;
 | 
						const char *key;
 | 
				
			||||||
| 
						 | 
					@ -269,6 +284,7 @@ char *pa_proplist_to_string_sep(pa_proplist *p, const char *sep)
 | 
				
			||||||
	return pa_strbuf_to_string_free(buf);
 | 
						return pa_strbuf_to_string_free(buf);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_proplist *pa_proplist_from_string(const char *str)
 | 
					pa_proplist *pa_proplist_from_string(const char *str)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(str);
 | 
						spa_assert(str);
 | 
				
			||||||
| 
						 | 
					@ -276,6 +292,7 @@ pa_proplist *pa_proplist_from_string(const char *str)
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_proplist_contains(pa_proplist *p, const char *key)
 | 
					int pa_proplist_contains(pa_proplist *p, const char *key)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(p);
 | 
						spa_assert(p);
 | 
				
			||||||
| 
						 | 
					@ -290,12 +307,14 @@ int pa_proplist_contains(pa_proplist *p, const char *key)
 | 
				
			||||||
	return 1;
 | 
						return 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_proplist_clear(pa_proplist *p)
 | 
					void pa_proplist_clear(pa_proplist *p)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(p);
 | 
						spa_assert(p);
 | 
				
			||||||
	pw_properties_clear(p->props);
 | 
						pw_properties_clear(p->props);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_proplist* pa_proplist_copy(const pa_proplist *p)
 | 
					pa_proplist* pa_proplist_copy(const pa_proplist *p)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_proplist *c;
 | 
						pa_proplist *c;
 | 
				
			||||||
| 
						 | 
					@ -310,18 +329,21 @@ pa_proplist* pa_proplist_copy(const pa_proplist *p)
 | 
				
			||||||
	return c;
 | 
						return c;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
unsigned pa_proplist_size(pa_proplist *p)
 | 
					unsigned pa_proplist_size(pa_proplist *p)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(p);
 | 
						spa_assert(p);
 | 
				
			||||||
	return p->props->dict.n_items;
 | 
						return p->props->dict.n_items;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_proplist_isempty(pa_proplist *p)
 | 
					int pa_proplist_isempty(pa_proplist *p)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(p);
 | 
						spa_assert(p);
 | 
				
			||||||
	return p->props->dict.n_items == 0 ? 1 : 0;
 | 
						return p->props->dict.n_items == 0 ? 1 : 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_proplist_equal(pa_proplist *a, pa_proplist *b)
 | 
					int pa_proplist_equal(pa_proplist *a, pa_proplist *b)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	uint32_t i;
 | 
						uint32_t i;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,6 +25,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <pulse/rtclock.h>
 | 
					#include <pulse/rtclock.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_usec_t pa_rtclock_now(void)
 | 
					pa_usec_t pa_rtclock_now(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct timespec ts;
 | 
						struct timespec ts;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										18
									
								
								src/sample.c
									
										
									
									
									
								
							
							
						
						
									
										18
									
								
								src/sample.c
									
										
									
									
									
								
							| 
						 | 
					@ -50,6 +50,7 @@ static const size_t size_table[] = {
 | 
				
			||||||
	[PA_SAMPLE_S24_32BE] = 4
 | 
						[PA_SAMPLE_S24_32BE] = 4
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
size_t pa_sample_size_of_format(pa_sample_format_t f)
 | 
					size_t pa_sample_size_of_format(pa_sample_format_t f)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(pa_sample_format_valid(f));
 | 
						spa_assert(pa_sample_format_valid(f));
 | 
				
			||||||
| 
						 | 
					@ -57,6 +58,7 @@ size_t pa_sample_size_of_format(pa_sample_format_t f)
 | 
				
			||||||
	return size_table[f];
 | 
						return size_table[f];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
size_t pa_sample_size(const pa_sample_spec * spec)
 | 
					size_t pa_sample_size(const pa_sample_spec * spec)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(spec);
 | 
						spa_assert(spec);
 | 
				
			||||||
| 
						 | 
					@ -65,6 +67,7 @@ size_t pa_sample_size(const pa_sample_spec * spec)
 | 
				
			||||||
	return size_table[spec->format];
 | 
						return size_table[spec->format];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
size_t pa_frame_size(const pa_sample_spec * spec)
 | 
					size_t pa_frame_size(const pa_sample_spec * spec)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(spec);
 | 
						spa_assert(spec);
 | 
				
			||||||
| 
						 | 
					@ -73,6 +76,7 @@ size_t pa_frame_size(const pa_sample_spec * spec)
 | 
				
			||||||
	return size_table[spec->format] * spec->channels;
 | 
						return size_table[spec->format] * spec->channels;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
size_t pa_bytes_per_second(const pa_sample_spec * spec)
 | 
					size_t pa_bytes_per_second(const pa_sample_spec * spec)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(spec);
 | 
						spa_assert(spec);
 | 
				
			||||||
| 
						 | 
					@ -81,6 +85,7 @@ size_t pa_bytes_per_second(const pa_sample_spec * spec)
 | 
				
			||||||
	return spec->rate * size_table[spec->format] * spec->channels;
 | 
						return spec->rate * size_table[spec->format] * spec->channels;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_usec_t pa_bytes_to_usec(uint64_t length, const pa_sample_spec * spec)
 | 
					pa_usec_t pa_bytes_to_usec(uint64_t length, const pa_sample_spec * spec)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(spec);
 | 
						spa_assert(spec);
 | 
				
			||||||
| 
						 | 
					@ -91,6 +96,7 @@ pa_usec_t pa_bytes_to_usec(uint64_t length, const pa_sample_spec * spec)
 | 
				
			||||||
		 * PA_USEC_PER_SEC) / spec->rate);
 | 
							 * PA_USEC_PER_SEC) / spec->rate);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
size_t pa_usec_to_bytes(pa_usec_t t, const pa_sample_spec * spec)
 | 
					size_t pa_usec_to_bytes(pa_usec_t t, const pa_sample_spec * spec)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(spec);
 | 
						spa_assert(spec);
 | 
				
			||||||
| 
						 | 
					@ -100,6 +106,7 @@ size_t pa_usec_to_bytes(pa_usec_t t, const pa_sample_spec * spec)
 | 
				
			||||||
	    (size_table[spec->format] * spec->channels);
 | 
						    (size_table[spec->format] * spec->channels);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_sample_spec *pa_sample_spec_init(pa_sample_spec * spec)
 | 
					pa_sample_spec *pa_sample_spec_init(pa_sample_spec * spec)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(spec);
 | 
						spa_assert(spec);
 | 
				
			||||||
| 
						 | 
					@ -111,11 +118,13 @@ pa_sample_spec *pa_sample_spec_init(pa_sample_spec * spec)
 | 
				
			||||||
	return spec;
 | 
						return spec;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_sample_format_valid(unsigned format)
 | 
					int pa_sample_format_valid(unsigned format)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return format < PA_SAMPLE_MAX;
 | 
						return format < PA_SAMPLE_MAX;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_sample_rate_valid(uint32_t rate)
 | 
					int pa_sample_rate_valid(uint32_t rate)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	/* The extra 1% is due to module-loopback: it temporarily sets
 | 
						/* The extra 1% is due to module-loopback: it temporarily sets
 | 
				
			||||||
| 
						 | 
					@ -124,11 +133,13 @@ int pa_sample_rate_valid(uint32_t rate)
 | 
				
			||||||
	return rate > 0 && rate <= PA_RATE_MAX * 101 / 100;
 | 
						return rate > 0 && rate <= PA_RATE_MAX * 101 / 100;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_channels_valid(uint8_t channels)
 | 
					int pa_channels_valid(uint8_t channels)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return channels > 0 && channels <= PA_CHANNELS_MAX;
 | 
						return channels > 0 && channels <= PA_CHANNELS_MAX;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_sample_spec_valid(const pa_sample_spec * spec)
 | 
					int pa_sample_spec_valid(const pa_sample_spec * spec)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(spec);
 | 
						spa_assert(spec);
 | 
				
			||||||
| 
						 | 
					@ -141,6 +152,7 @@ int pa_sample_spec_valid(const pa_sample_spec * spec)
 | 
				
			||||||
	return 1;
 | 
						return 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_sample_spec_equal(const pa_sample_spec * a, const pa_sample_spec * b)
 | 
					int pa_sample_spec_equal(const pa_sample_spec * a, const pa_sample_spec * b)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(a);
 | 
						spa_assert(a);
 | 
				
			||||||
| 
						 | 
					@ -158,6 +170,7 @@ int pa_sample_spec_equal(const pa_sample_spec * a, const pa_sample_spec * b)
 | 
				
			||||||
	    (a->rate == b->rate) && (a->channels == b->channels);
 | 
						    (a->rate == b->rate) && (a->channels == b->channels);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const char *pa_sample_format_to_string(pa_sample_format_t f)
 | 
					const char *pa_sample_format_to_string(pa_sample_format_t f)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	static const char *const table[] = {
 | 
						static const char *const table[] = {
 | 
				
			||||||
| 
						 | 
					@ -182,6 +195,7 @@ const char *pa_sample_format_to_string(pa_sample_format_t f)
 | 
				
			||||||
	return table[f];
 | 
						return table[f];
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_sample_spec_snprint(char *s, size_t l, const pa_sample_spec * spec)
 | 
					char *pa_sample_spec_snprint(char *s, size_t l, const pa_sample_spec * spec)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -200,6 +214,7 @@ char *pa_sample_spec_snprint(char *s, size_t l, const pa_sample_spec * spec)
 | 
				
			||||||
	return s;
 | 
						return s;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_bytes_snprint(char *s, size_t l, unsigned v)
 | 
					char *pa_bytes_snprint(char *s, size_t l, unsigned v)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -220,6 +235,7 @@ char *pa_bytes_snprint(char *s, size_t l, unsigned v)
 | 
				
			||||||
	return s;
 | 
						return s;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_sample_format_t pa_parse_sample_format(const char *format)
 | 
					pa_sample_format_t pa_parse_sample_format(const char *format)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(format);
 | 
						spa_assert(format);
 | 
				
			||||||
| 
						 | 
					@ -284,6 +300,7 @@ pa_sample_format_t pa_parse_sample_format(const char *format)
 | 
				
			||||||
	return PA_SAMPLE_INVALID;
 | 
						return PA_SAMPLE_INVALID;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_sample_format_is_le(pa_sample_format_t f)
 | 
					int pa_sample_format_is_le(pa_sample_format_t f)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(pa_sample_format_valid(f));
 | 
						spa_assert(pa_sample_format_valid(f));
 | 
				
			||||||
| 
						 | 
					@ -308,6 +325,7 @@ int pa_sample_format_is_le(pa_sample_format_t f)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_sample_format_is_be(pa_sample_format_t f)
 | 
					int pa_sample_format_is_be(pa_sample_format_t f)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int r;
 | 
						int r;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,24 +23,28 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "internal.h"
 | 
					#include "internal.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_stream_connect_upload(pa_stream *s, size_t length)
 | 
					int pa_stream_connect_upload(pa_stream *s, size_t length)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_stream_finish_upload(pa_stream *s)
 | 
					int pa_stream_finish_upload(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_remove_sample(pa_context *c, const char *name, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_remove_sample(pa_context *c, const char *name, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_play_sample(pa_context *c, const char *name, const char *dev,
 | 
					pa_operation* pa_context_play_sample(pa_context *c, const char *name, const char *dev,
 | 
				
			||||||
        pa_volume_t volume, pa_context_success_cb_t cb, void *userdata)
 | 
					        pa_volume_t volume, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -48,6 +52,7 @@ pa_operation* pa_context_play_sample(pa_context *c, const char *name, const char
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_play_sample_with_proplist(pa_context *c, const char *name,
 | 
					pa_operation* pa_context_play_sample_with_proplist(pa_context *c, const char *name,
 | 
				
			||||||
        const char *dev, pa_volume_t volume, pa_proplist *proplist,
 | 
					        const char *dev, pa_volume_t volume, pa_proplist *proplist,
 | 
				
			||||||
        pa_context_play_sample_cb_t cb, void *userdata)
 | 
					        pa_context_play_sample_cb_t cb, void *userdata)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										57
									
								
								src/stream.c
									
										
									
									
									
								
							
							
						
						
									
										57
									
								
								src/stream.c
									
										
									
									
									
								
							| 
						 | 
					@ -495,7 +495,7 @@ static const struct pw_stream_events stream_events =
 | 
				
			||||||
	.process = stream_process,
 | 
						.process = stream_process,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pa_stream* stream_new(pa_context *c, const char *name,
 | 
					static pa_stream* stream_new(pa_context *c, const char *name,
 | 
				
			||||||
        const pa_sample_spec *ss, const pa_channel_map *map,
 | 
					        const pa_sample_spec *ss, const pa_channel_map *map,
 | 
				
			||||||
	pa_format_info * const * formats, unsigned int n_formats,
 | 
						pa_format_info * const * formats, unsigned int n_formats,
 | 
				
			||||||
	pa_proplist *p)
 | 
						pa_proplist *p)
 | 
				
			||||||
| 
						 | 
					@ -590,12 +590,14 @@ pa_stream* stream_new(pa_context *c, const char *name,
 | 
				
			||||||
	return s;
 | 
						return s;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_stream* pa_stream_new(pa_context *c, const char *name, const pa_sample_spec *ss,
 | 
					pa_stream* pa_stream_new(pa_context *c, const char *name, const pa_sample_spec *ss,
 | 
				
			||||||
        const pa_channel_map *map)
 | 
					        const pa_channel_map *map)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return stream_new(c, name, ss, map, NULL, 0, NULL);
 | 
						return stream_new(c, name, ss, map, NULL, 0, NULL);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_stream* pa_stream_new_with_proplist(pa_context *c, const char *name,
 | 
					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)
 | 
					        const pa_sample_spec *ss, const pa_channel_map *map, pa_proplist *p)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -607,6 +609,7 @@ pa_stream* pa_stream_new_with_proplist(pa_context *c, const char *name,
 | 
				
			||||||
	return stream_new(c, name, ss, map, NULL, 0, p);
 | 
						return stream_new(c, name, ss, map, NULL, 0, p);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_stream *pa_stream_new_extended(pa_context *c, const char *name,
 | 
					pa_stream *pa_stream_new_extended(pa_context *c, const char *name,
 | 
				
			||||||
        pa_format_info * const * formats, unsigned int n_formats, pa_proplist *p)
 | 
					        pa_format_info * const * formats, unsigned int n_formats, pa_proplist *p)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -658,6 +661,7 @@ static void stream_free(pa_stream *s)
 | 
				
			||||||
	free(s);
 | 
						free(s);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_stream_unref(pa_stream *s)
 | 
					void pa_stream_unref(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -667,6 +671,7 @@ void pa_stream_unref(pa_stream *s)
 | 
				
			||||||
		stream_free(s);
 | 
							stream_free(s);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_stream *pa_stream_ref(pa_stream *s)
 | 
					pa_stream *pa_stream_ref(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -676,6 +681,7 @@ pa_stream *pa_stream_ref(pa_stream *s)
 | 
				
			||||||
	return s;
 | 
						return s;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_stream_state_t pa_stream_get_state(pa_stream *s)
 | 
					pa_stream_state_t pa_stream_get_state(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -683,6 +689,7 @@ pa_stream_state_t pa_stream_get_state(pa_stream *s)
 | 
				
			||||||
	return s->state;
 | 
						return s->state;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_context* pa_stream_get_context(pa_stream *s)
 | 
					pa_context* pa_stream_get_context(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -690,6 +697,7 @@ pa_context* pa_stream_get_context(pa_stream *s)
 | 
				
			||||||
	return s->context;
 | 
						return s->context;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
uint32_t pa_stream_get_index(pa_stream *s)
 | 
					uint32_t pa_stream_get_index(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -720,6 +728,7 @@ void pa_stream_set_state(pa_stream *s, pa_stream_state_t st) {
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
uint32_t pa_stream_get_device_index(pa_stream *s)
 | 
					uint32_t pa_stream_get_device_index(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -736,6 +745,7 @@ uint32_t pa_stream_get_device_index(pa_stream *s)
 | 
				
			||||||
	return s->device_index;
 | 
						return s->device_index;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const char *pa_stream_get_device_name(pa_stream *s)
 | 
					const char *pa_stream_get_device_name(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -748,6 +758,7 @@ const char *pa_stream_get_device_name(pa_stream *s)
 | 
				
			||||||
	return s->device_name;
 | 
						return s->device_name;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_stream_is_suspended(pa_stream *s)
 | 
					int pa_stream_is_suspended(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -759,6 +770,7 @@ int pa_stream_is_suspended(pa_stream *s)
 | 
				
			||||||
	return s->suspended;
 | 
						return s->suspended;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_stream_is_corked(pa_stream *s)
 | 
					int pa_stream_is_corked(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -942,6 +954,7 @@ static int create_stream(pa_stream_direction_t direction,
 | 
				
			||||||
	return res;
 | 
						return res;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_stream_connect_playback(
 | 
					int pa_stream_connect_playback(
 | 
				
			||||||
        pa_stream *s,
 | 
					        pa_stream *s,
 | 
				
			||||||
        const char *dev,
 | 
					        const char *dev,
 | 
				
			||||||
| 
						 | 
					@ -953,6 +966,7 @@ int pa_stream_connect_playback(
 | 
				
			||||||
	return create_stream(PA_STREAM_PLAYBACK, s, dev, attr, flags, volume, sync_stream);
 | 
						return create_stream(PA_STREAM_PLAYBACK, s, dev, attr, flags, volume, sync_stream);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_stream_connect_record(
 | 
					int pa_stream_connect_record(
 | 
				
			||||||
        pa_stream *s,
 | 
					        pa_stream *s,
 | 
				
			||||||
        const char *dev,
 | 
					        const char *dev,
 | 
				
			||||||
| 
						 | 
					@ -967,6 +981,7 @@ static void on_disconnected(pa_operation *o, void *userdata)
 | 
				
			||||||
	pa_stream_set_state(o->stream, PA_STREAM_TERMINATED);
 | 
						pa_stream_set_state(o->stream, PA_STREAM_TERMINATED);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_stream_disconnect(pa_stream *s)
 | 
					int pa_stream_disconnect(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1036,6 +1051,7 @@ int queue_buffer(pa_stream *s)
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_stream_begin_write(
 | 
					int pa_stream_begin_write(
 | 
				
			||||||
        pa_stream *s,
 | 
					        pa_stream *s,
 | 
				
			||||||
        void **data,
 | 
					        void **data,
 | 
				
			||||||
| 
						 | 
					@ -1066,6 +1082,7 @@ int pa_stream_begin_write(
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_stream_cancel_write(pa_stream *s)
 | 
					int pa_stream_cancel_write(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1081,6 +1098,7 @@ int pa_stream_cancel_write(pa_stream *s)
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_stream_write(pa_stream *s,
 | 
					int pa_stream_write(pa_stream *s,
 | 
				
			||||||
        const void *data,
 | 
					        const void *data,
 | 
				
			||||||
        size_t nbytes,
 | 
					        size_t nbytes,
 | 
				
			||||||
| 
						 | 
					@ -1091,6 +1109,7 @@ int pa_stream_write(pa_stream *s,
 | 
				
			||||||
	return pa_stream_write_ext_free(s, data, nbytes, free_cb, (void*) data, offset, seek);
 | 
						return pa_stream_write_ext_free(s, data, nbytes, free_cb, (void*) data, offset, seek);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_stream_write_ext_free(pa_stream *s,
 | 
					int pa_stream_write_ext_free(pa_stream *s,
 | 
				
			||||||
        const void *data,
 | 
					        const void *data,
 | 
				
			||||||
        size_t nbytes,
 | 
					        size_t nbytes,
 | 
				
			||||||
| 
						 | 
					@ -1160,6 +1179,7 @@ int pa_stream_write_ext_free(pa_stream *s,
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_stream_peek(pa_stream *s,
 | 
					int pa_stream_peek(pa_stream *s,
 | 
				
			||||||
        const void **data,
 | 
					        const void **data,
 | 
				
			||||||
        size_t *nbytes)
 | 
					        size_t *nbytes)
 | 
				
			||||||
| 
						 | 
					@ -1185,6 +1205,7 @@ int pa_stream_peek(pa_stream *s,
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_stream_drop(pa_stream *s)
 | 
					int pa_stream_drop(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1200,6 +1221,7 @@ int pa_stream_drop(pa_stream *s)
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
size_t pa_stream_writable_size(pa_stream *s)
 | 
					size_t pa_stream_writable_size(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1214,6 +1236,7 @@ size_t pa_stream_writable_size(pa_stream *s)
 | 
				
			||||||
	return s->dequeued_size;
 | 
						return s->dequeued_size;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
size_t pa_stream_readable_size(pa_stream *s)
 | 
					size_t pa_stream_readable_size(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1241,6 +1264,7 @@ static void on_success(pa_operation *o, void *userdata)
 | 
				
			||||||
		d->cb(s, 1, d->userdata);
 | 
							d->cb(s, 1, d->userdata);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_stream_drain(pa_stream *s, pa_stream_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_stream_drain(pa_stream *s, pa_stream_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1276,6 +1300,7 @@ static void on_timing_success(pa_operation *o, void *userdata)
 | 
				
			||||||
		d->cb(s, s->timing_info_valid, d->userdata);
 | 
							d->cb(s, s->timing_info_valid, d->userdata);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_stream_update_timing_info(pa_stream *s, pa_stream_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_stream_update_timing_info(pa_stream *s, pa_stream_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1296,6 +1321,7 @@ pa_operation* pa_stream_update_timing_info(pa_stream *s, pa_stream_success_cb_t
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_stream_set_state_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata)
 | 
					void pa_stream_set_state_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1308,6 +1334,7 @@ void pa_stream_set_state_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *
 | 
				
			||||||
	s->state_userdata = userdata;
 | 
						s->state_userdata = userdata;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_stream_set_write_callback(pa_stream *s, pa_stream_request_cb_t cb, void *userdata)
 | 
					void pa_stream_set_write_callback(pa_stream *s, pa_stream_request_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1320,6 +1347,7 @@ void pa_stream_set_write_callback(pa_stream *s, pa_stream_request_cb_t cb, void
 | 
				
			||||||
	s->write_userdata = userdata;
 | 
						s->write_userdata = userdata;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_stream_set_read_callback(pa_stream *s, pa_stream_request_cb_t cb, void *userdata)
 | 
					void pa_stream_set_read_callback(pa_stream *s, pa_stream_request_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1332,6 +1360,7 @@ void pa_stream_set_read_callback(pa_stream *s, pa_stream_request_cb_t cb, void *
 | 
				
			||||||
	s->read_userdata = userdata;
 | 
						s->read_userdata = userdata;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_stream_set_overflow_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata)
 | 
					void pa_stream_set_overflow_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1344,12 +1373,14 @@ void pa_stream_set_overflow_callback(pa_stream *s, pa_stream_notify_cb_t cb, voi
 | 
				
			||||||
	s->overflow_userdata = userdata;
 | 
						s->overflow_userdata = userdata;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int64_t pa_stream_get_underflow_index(pa_stream *s)
 | 
					int64_t pa_stream_get_underflow_index(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_stream_set_underflow_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata)
 | 
					void pa_stream_set_underflow_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1362,6 +1393,7 @@ void pa_stream_set_underflow_callback(pa_stream *s, pa_stream_notify_cb_t cb, vo
 | 
				
			||||||
	s->underflow_userdata = userdata;
 | 
						s->underflow_userdata = userdata;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_stream_set_started_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata)
 | 
					void pa_stream_set_started_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1374,6 +1406,7 @@ void pa_stream_set_started_callback(pa_stream *s, pa_stream_notify_cb_t cb, void
 | 
				
			||||||
	s->started_userdata = userdata;
 | 
						s->started_userdata = userdata;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_stream_set_latency_update_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata)
 | 
					void pa_stream_set_latency_update_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1386,6 +1419,7 @@ void pa_stream_set_latency_update_callback(pa_stream *s, pa_stream_notify_cb_t c
 | 
				
			||||||
	s->latency_update_userdata = userdata;
 | 
						s->latency_update_userdata = userdata;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_stream_set_moved_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata)
 | 
					void pa_stream_set_moved_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1398,6 +1432,7 @@ void pa_stream_set_moved_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *
 | 
				
			||||||
	s->moved_userdata = userdata;
 | 
						s->moved_userdata = userdata;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_stream_set_suspended_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata)
 | 
					void pa_stream_set_suspended_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1410,6 +1445,7 @@ void pa_stream_set_suspended_callback(pa_stream *s, pa_stream_notify_cb_t cb, vo
 | 
				
			||||||
	s->suspended_userdata = userdata;
 | 
						s->suspended_userdata = userdata;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_stream_set_event_callback(pa_stream *s, pa_stream_event_cb_t cb, void *userdata)
 | 
					void pa_stream_set_event_callback(pa_stream *s, pa_stream_event_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1422,6 +1458,7 @@ void pa_stream_set_event_callback(pa_stream *s, pa_stream_event_cb_t cb, void *u
 | 
				
			||||||
	s->event_userdata = userdata;
 | 
						s->event_userdata = userdata;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_stream_set_buffer_attr_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata)
 | 
					void pa_stream_set_buffer_attr_callback(pa_stream *s, pa_stream_notify_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1434,6 +1471,7 @@ void pa_stream_set_buffer_attr_callback(pa_stream *s, pa_stream_notify_cb_t cb,
 | 
				
			||||||
	s->buffer_attr_userdata = userdata;
 | 
						s->buffer_attr_userdata = userdata;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_stream_cork(pa_stream *s, int b, pa_stream_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_stream_cork(pa_stream *s, int b, pa_stream_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1457,6 +1495,7 @@ pa_operation* pa_stream_cork(pa_stream *s, int b, pa_stream_success_cb_t cb, voi
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_stream_flush(pa_stream *s, pa_stream_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_stream_flush(pa_stream *s, pa_stream_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1479,6 +1518,7 @@ pa_operation* pa_stream_flush(pa_stream *s, pa_stream_success_cb_t cb, void *use
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_stream_prebuf(pa_stream *s, pa_stream_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_stream_prebuf(pa_stream *s, pa_stream_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1501,6 +1541,7 @@ pa_operation* pa_stream_prebuf(pa_stream *s, pa_stream_success_cb_t cb, void *us
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_stream_trigger(pa_stream *s, pa_stream_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_stream_trigger(pa_stream *s, pa_stream_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1523,6 +1564,7 @@ pa_operation* pa_stream_trigger(pa_stream *s, pa_stream_success_cb_t cb, void *u
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_stream_set_name(pa_stream *s, const char *name, pa_stream_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_stream_set_name(pa_stream *s, const char *name, pa_stream_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1550,6 +1592,7 @@ pa_operation* pa_stream_set_name(pa_stream *s, const char *name, pa_stream_succe
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_stream_get_time(pa_stream *s, pa_usec_t *r_usec)
 | 
					int pa_stream_get_time(pa_stream *s, pa_usec_t *r_usec)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_usec_t res;
 | 
						pa_usec_t res;
 | 
				
			||||||
| 
						 | 
					@ -1602,6 +1645,7 @@ static pa_usec_t time_counter_diff(const pa_stream *s, pa_usec_t a, pa_usec_t b,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_stream_get_latency(pa_stream *s, pa_usec_t *r_usec, int *negative)
 | 
					int pa_stream_get_latency(pa_stream *s, pa_usec_t *r_usec, int *negative)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_usec_t t, c;
 | 
						pa_usec_t t, c;
 | 
				
			||||||
| 
						 | 
					@ -1635,6 +1679,7 @@ int pa_stream_get_latency(pa_stream *s, pa_usec_t *r_usec, int *negative)
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const pa_timing_info* pa_stream_get_timing_info(pa_stream *s)
 | 
					const pa_timing_info* pa_stream_get_timing_info(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1651,6 +1696,7 @@ const pa_timing_info* pa_stream_get_timing_info(pa_stream *s)
 | 
				
			||||||
	return &s->timing_info;
 | 
						return &s->timing_info;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const pa_sample_spec* pa_stream_get_sample_spec(pa_stream *s)
 | 
					const pa_sample_spec* pa_stream_get_sample_spec(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1658,6 +1704,7 @@ const pa_sample_spec* pa_stream_get_sample_spec(pa_stream *s)
 | 
				
			||||||
	return &s->sample_spec;
 | 
						return &s->sample_spec;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const pa_channel_map* pa_stream_get_channel_map(pa_stream *s)
 | 
					const pa_channel_map* pa_stream_get_channel_map(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1665,6 +1712,7 @@ const pa_channel_map* pa_stream_get_channel_map(pa_stream *s)
 | 
				
			||||||
	return &s->channel_map;
 | 
						return &s->channel_map;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const pa_format_info* pa_stream_get_format_info(pa_stream *s)
 | 
					const pa_format_info* pa_stream_get_format_info(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1675,6 +1723,7 @@ const pa_format_info* pa_stream_get_format_info(pa_stream *s)
 | 
				
			||||||
	return s->format;
 | 
						return s->format;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const pa_buffer_attr* pa_stream_get_buffer_attr(pa_stream *s)
 | 
					const pa_buffer_attr* pa_stream_get_buffer_attr(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1686,6 +1735,7 @@ const pa_buffer_attr* pa_stream_get_buffer_attr(pa_stream *s)
 | 
				
			||||||
	return &s->buffer_attr;
 | 
						return &s->buffer_attr;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_stream_set_buffer_attr(pa_stream *s, const pa_buffer_attr *attr, pa_stream_success_cb_t cb, void *userdata)
 | 
					pa_operation *pa_stream_set_buffer_attr(pa_stream *s, const pa_buffer_attr *attr, pa_stream_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1707,6 +1757,7 @@ pa_operation *pa_stream_set_buffer_attr(pa_stream *s, const pa_buffer_attr *attr
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_stream_update_sample_rate(pa_stream *s, uint32_t rate, pa_stream_success_cb_t cb, void *userdata)
 | 
					pa_operation *pa_stream_update_sample_rate(pa_stream *s, uint32_t rate, pa_stream_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1729,6 +1780,7 @@ pa_operation *pa_stream_update_sample_rate(pa_stream *s, uint32_t rate, pa_strea
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
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)
 | 
					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)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1752,6 +1804,7 @@ pa_operation *pa_stream_proplist_update(pa_stream *s, pa_update_mode_t mode, pa_
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation *pa_stream_proplist_remove(pa_stream *s, const char *const keys[], pa_stream_success_cb_t cb, void *userdata)
 | 
					pa_operation *pa_stream_proplist_remove(pa_stream *s, const char *const keys[], pa_stream_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -1773,6 +1826,7 @@ pa_operation *pa_stream_proplist_remove(pa_stream *s, const char *const keys[],
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_stream_set_monitor_stream(pa_stream *s, uint32_t sink_input_idx)
 | 
					int pa_stream_set_monitor_stream(pa_stream *s, uint32_t sink_input_idx)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					@ -1787,6 +1841,7 @@ int pa_stream_set_monitor_stream(pa_stream *s, uint32_t sink_input_idx)
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
uint32_t pa_stream_get_monitor_stream(pa_stream *s)
 | 
					uint32_t pa_stream_get_monitor_stream(pa_stream *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	spa_assert(s);
 | 
						spa_assert(s);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -36,6 +36,7 @@ static void on_subscribed(pa_operation *o, void *userdata)
 | 
				
			||||||
		d->cb(o->context, PA_OK, d->userdata);
 | 
							d->cb(o->context, PA_OK, d->userdata);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_operation* pa_context_subscribe(pa_context *c, pa_subscription_mask_t m, pa_context_success_cb_t cb, void *userdata)
 | 
					pa_operation* pa_context_subscribe(pa_context *c, pa_subscription_mask_t m, pa_context_success_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_operation *o;
 | 
						pa_operation *o;
 | 
				
			||||||
| 
						 | 
					@ -54,6 +55,7 @@ pa_operation* pa_context_subscribe(pa_context *c, pa_subscription_mask_t m, pa_c
 | 
				
			||||||
	return o;
 | 
						return o;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_context_set_subscribe_callback(pa_context *c, pa_context_subscribe_cb_t cb, void *userdata)
 | 
					void pa_context_set_subscribe_callback(pa_context *c, pa_context_subscribe_cb_t cb, void *userdata)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_assert(c);
 | 
						pa_assert(c);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,6 +31,7 @@ struct pa_threaded_mainloop
 | 
				
			||||||
	struct pw_thread_loop *tloop;
 | 
						struct pw_thread_loop *tloop;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_threaded_mainloop *pa_threaded_mainloop_new(void)
 | 
					pa_threaded_mainloop *pa_threaded_mainloop_new(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pa_threaded_mainloop *m;
 | 
						pa_threaded_mainloop *m;
 | 
				
			||||||
| 
						 | 
					@ -56,6 +57,7 @@ pa_threaded_mainloop *pa_threaded_mainloop_new(void)
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_threaded_mainloop_free(pa_threaded_mainloop* m)
 | 
					void pa_threaded_mainloop_free(pa_threaded_mainloop* m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_thread_loop_destroy(m->tloop);
 | 
						pw_thread_loop_destroy(m->tloop);
 | 
				
			||||||
| 
						 | 
					@ -63,56 +65,67 @@ void pa_threaded_mainloop_free(pa_threaded_mainloop* m)
 | 
				
			||||||
	free(m);
 | 
						free(m);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_threaded_mainloop_start(pa_threaded_mainloop *m)
 | 
					int pa_threaded_mainloop_start(pa_threaded_mainloop *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return pw_thread_loop_start(m->tloop);
 | 
						return pw_thread_loop_start(m->tloop);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_threaded_mainloop_stop(pa_threaded_mainloop *m)
 | 
					void pa_threaded_mainloop_stop(pa_threaded_mainloop *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_thread_loop_stop(m->tloop);
 | 
						pw_thread_loop_stop(m->tloop);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_threaded_mainloop_lock(pa_threaded_mainloop *m)
 | 
					void pa_threaded_mainloop_lock(pa_threaded_mainloop *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_thread_loop_lock(m->tloop);
 | 
						pw_thread_loop_lock(m->tloop);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_threaded_mainloop_unlock(pa_threaded_mainloop *m)
 | 
					void pa_threaded_mainloop_unlock(pa_threaded_mainloop *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_thread_loop_unlock(m->tloop);
 | 
						pw_thread_loop_unlock(m->tloop);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_threaded_mainloop_wait(pa_threaded_mainloop *m)
 | 
					void pa_threaded_mainloop_wait(pa_threaded_mainloop *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_thread_loop_wait(m->tloop);
 | 
						pw_thread_loop_wait(m->tloop);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_threaded_mainloop_signal(pa_threaded_mainloop *m, int wait_for_accept)
 | 
					void pa_threaded_mainloop_signal(pa_threaded_mainloop *m, int wait_for_accept)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_thread_loop_signal(m->tloop, wait_for_accept);
 | 
						pw_thread_loop_signal(m->tloop, wait_for_accept);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_threaded_mainloop_accept(pa_threaded_mainloop *m)
 | 
					void pa_threaded_mainloop_accept(pa_threaded_mainloop *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_thread_loop_accept(m->tloop);
 | 
						pw_thread_loop_accept(m->tloop);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_threaded_mainloop_get_retval(pa_threaded_mainloop *m)
 | 
					int pa_threaded_mainloop_get_retval(pa_threaded_mainloop *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return pa_mainloop_get_retval(m->loop);
 | 
						return pa_mainloop_get_retval(m->loop);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_mainloop_api* pa_threaded_mainloop_get_api(pa_threaded_mainloop*m)
 | 
					pa_mainloop_api* pa_threaded_mainloop_get_api(pa_threaded_mainloop*m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return pa_mainloop_get_api(m->loop);
 | 
						return pa_mainloop_get_api(m->loop);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_threaded_mainloop_in_thread(pa_threaded_mainloop *m)
 | 
					int pa_threaded_mainloop_in_thread(pa_threaded_mainloop *m)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return pw_thread_loop_in_thread(m->tloop);
 | 
						return pw_thread_loop_in_thread(m->tloop);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_threaded_mainloop_set_name(pa_threaded_mainloop *m, const char *name)
 | 
					void pa_threaded_mainloop_set_name(pa_threaded_mainloop *m, const char *name)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,6 +35,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define HAVE_GETTIMEOFDAY
 | 
					#define HAVE_GETTIMEOFDAY
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
struct timeval *pa_gettimeofday(struct timeval *tv) {
 | 
					struct timeval *pa_gettimeofday(struct timeval *tv) {
 | 
				
			||||||
    pa_assert(tv);
 | 
					    pa_assert(tv);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -71,6 +72,7 @@ struct timeval *pa_gettimeofday(struct timeval *tv) {
 | 
				
			||||||
    return tv;
 | 
					    return tv;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_usec_t pa_timeval_diff(const struct timeval *a, const struct timeval *b) {
 | 
					pa_usec_t pa_timeval_diff(const struct timeval *a, const struct timeval *b) {
 | 
				
			||||||
    pa_usec_t r;
 | 
					    pa_usec_t r;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -97,6 +99,7 @@ pa_usec_t pa_timeval_diff(const struct timeval *a, const struct timeval *b) {
 | 
				
			||||||
    return r;
 | 
					    return r;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_timeval_cmp(const struct timeval *a, const struct timeval *b) {
 | 
					int pa_timeval_cmp(const struct timeval *a, const struct timeval *b) {
 | 
				
			||||||
    pa_assert(a);
 | 
					    pa_assert(a);
 | 
				
			||||||
    pa_assert(b);
 | 
					    pa_assert(b);
 | 
				
			||||||
| 
						 | 
					@ -116,6 +119,7 @@ int pa_timeval_cmp(const struct timeval *a, const struct timeval *b) {
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_usec_t pa_timeval_age(const struct timeval *tv) {
 | 
					pa_usec_t pa_timeval_age(const struct timeval *tv) {
 | 
				
			||||||
    struct timeval now;
 | 
					    struct timeval now;
 | 
				
			||||||
    pa_assert(tv);
 | 
					    pa_assert(tv);
 | 
				
			||||||
| 
						 | 
					@ -123,6 +127,7 @@ pa_usec_t pa_timeval_age(const struct timeval *tv) {
 | 
				
			||||||
    return pa_timeval_diff(pa_gettimeofday(&now), tv);
 | 
					    return pa_timeval_diff(pa_gettimeofday(&now), tv);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
struct timeval* pa_timeval_add(struct timeval *tv, pa_usec_t v) {
 | 
					struct timeval* pa_timeval_add(struct timeval *tv, pa_usec_t v) {
 | 
				
			||||||
    time_t secs;
 | 
					    time_t secs;
 | 
				
			||||||
    pa_assert(tv);
 | 
					    pa_assert(tv);
 | 
				
			||||||
| 
						 | 
					@ -154,6 +159,7 @@ overflow:
 | 
				
			||||||
    return tv;
 | 
					    return tv;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
struct timeval* pa_timeval_sub(struct timeval *tv, pa_usec_t v) {
 | 
					struct timeval* pa_timeval_sub(struct timeval *tv, pa_usec_t v) {
 | 
				
			||||||
    time_t secs;
 | 
					    time_t secs;
 | 
				
			||||||
    pa_assert(tv);
 | 
					    pa_assert(tv);
 | 
				
			||||||
| 
						 | 
					@ -185,6 +191,7 @@ underflow:
 | 
				
			||||||
    return tv;
 | 
					    return tv;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
struct timeval* pa_timeval_store(struct timeval *tv, pa_usec_t v) {
 | 
					struct timeval* pa_timeval_store(struct timeval *tv, pa_usec_t v) {
 | 
				
			||||||
    pa_assert(tv);
 | 
					    pa_assert(tv);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -201,6 +208,7 @@ struct timeval* pa_timeval_store(struct timeval *tv, pa_usec_t v) {
 | 
				
			||||||
    return tv;
 | 
					    return tv;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_usec_t pa_timeval_load(const struct timeval *tv) {
 | 
					pa_usec_t pa_timeval_load(const struct timeval *tv) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (PA_UNLIKELY(!tv))
 | 
					    if (PA_UNLIKELY(!tv))
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -172,10 +172,12 @@ failure:
 | 
				
			||||||
    return NULL;
 | 
					    return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char* pa_utf8_valid (const char *str) {
 | 
					char* pa_utf8_valid (const char *str) {
 | 
				
			||||||
    return utf8_validate(str, NULL);
 | 
					    return utf8_validate(str, NULL);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char* pa_utf8_filter (const char *str) {
 | 
					char* pa_utf8_filter (const char *str) {
 | 
				
			||||||
    char *new_str;
 | 
					    char *new_str;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -233,22 +235,26 @@ static char* iconv_simple(const char *str, const char *to, const char *from) {
 | 
				
			||||||
    return new_str;
 | 
					    return new_str;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char* pa_utf8_to_locale (const char *str) {
 | 
					char* pa_utf8_to_locale (const char *str) {
 | 
				
			||||||
    return iconv_simple(str, "", "UTF-8");
 | 
					    return iconv_simple(str, "", "UTF-8");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char* pa_locale_to_utf8 (const char *str) {
 | 
					char* pa_locale_to_utf8 (const char *str) {
 | 
				
			||||||
    return iconv_simple(str, "UTF-8", "");
 | 
					    return iconv_simple(str, "UTF-8", "");
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char* pa_utf8_to_locale (const char *str) {
 | 
					char* pa_utf8_to_locale (const char *str) {
 | 
				
			||||||
    pa_assert(str);
 | 
					    pa_assert(str);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return pa_ascii_filter(str);
 | 
					    return pa_ascii_filter(str);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char* pa_locale_to_utf8 (const char *str) {
 | 
					char* pa_locale_to_utf8 (const char *str) {
 | 
				
			||||||
    pa_assert(str);
 | 
					    pa_assert(str);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -260,6 +266,7 @@ char* pa_locale_to_utf8 (const char *str) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_ascii_valid(const char *str) {
 | 
					char *pa_ascii_valid(const char *str) {
 | 
				
			||||||
    const char *p;
 | 
					    const char *p;
 | 
				
			||||||
    pa_assert(str);
 | 
					    pa_assert(str);
 | 
				
			||||||
| 
						 | 
					@ -271,6 +278,7 @@ char *pa_ascii_valid(const char *str) {
 | 
				
			||||||
    return (char*) str;
 | 
					    return (char*) str;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_ascii_filter(const char *str) {
 | 
					char *pa_ascii_filter(const char *str) {
 | 
				
			||||||
    char *r, *s, *d;
 | 
					    char *r, *s, *d;
 | 
				
			||||||
    pa_assert(str);
 | 
					    pa_assert(str);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,33 +26,39 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define PA_PATH_SEP_CHAR	'/'
 | 
					#define PA_PATH_SEP_CHAR	'/'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_get_user_name(char *s, size_t l)
 | 
					char *pa_get_user_name(char *s, size_t l)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return strncpy(s, pw_get_user_name(), l);
 | 
						return strncpy(s, pw_get_user_name(), l);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_get_host_name(char *s, size_t l)
 | 
					char *pa_get_host_name(char *s, size_t l)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return strncpy(s, pw_get_host_name(), l);
 | 
						return strncpy(s, pw_get_host_name(), l);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_get_fqdn(char *s, size_t l)
 | 
					char *pa_get_fqdn(char *s, size_t l)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return strncpy(s, pw_get_host_name(), l);
 | 
						return strncpy(s, pw_get_host_name(), l);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_get_home_dir(char *s, size_t l)
 | 
					char *pa_get_home_dir(char *s, size_t l)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	pw_log_warn("Not Implemented");
 | 
						pw_log_warn("Not Implemented");
 | 
				
			||||||
	return NULL;
 | 
						return NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_get_binary_name(char *s, size_t l)
 | 
					char *pa_get_binary_name(char *s, size_t l)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return strncpy(s, pw_get_prgname(), l);
 | 
						return strncpy(s, pw_get_prgname(), l);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_path_get_filename(const char *p)
 | 
					char *pa_path_get_filename(const char *p)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	char *fn;
 | 
						char *fn;
 | 
				
			||||||
| 
						 | 
					@ -66,6 +72,7 @@ char *pa_path_get_filename(const char *p)
 | 
				
			||||||
	return (char*) p;
 | 
						return (char*) p;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_msleep(unsigned long t)
 | 
					int pa_msleep(unsigned long t)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    struct timespec ts;
 | 
					    struct timespec ts;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -17,8 +17,11 @@
 | 
				
			||||||
 * Boston, MA 02110-1301, USA.
 | 
					 * Boston, MA 02110-1301, USA.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <spa/utils/defs.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <pulse/version.h>
 | 
					#include <pulse/version.h>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
const char* pa_get_library_version(void)
 | 
					const char* pa_get_library_version(void)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	return pa_get_headers_version();
 | 
						return pa_get_headers_version();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										44
									
								
								src/volume.c
									
										
									
									
									
								
							
							
						
						
									
										44
									
								
								src/volume.c
									
										
									
									
									
								
							| 
						 | 
					@ -30,6 +30,7 @@
 | 
				
			||||||
#include "internal.h"
 | 
					#include "internal.h"
 | 
				
			||||||
#include "sample-util.h"
 | 
					#include "sample-util.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_cvolume_equal(const pa_cvolume *a, const pa_cvolume *b) {
 | 
					int pa_cvolume_equal(const pa_cvolume *a, const pa_cvolume *b) {
 | 
				
			||||||
    int i;
 | 
					    int i;
 | 
				
			||||||
    pa_assert(a);
 | 
					    pa_assert(a);
 | 
				
			||||||
| 
						 | 
					@ -52,6 +53,7 @@ int pa_cvolume_equal(const pa_cvolume *a, const pa_cvolume *b) {
 | 
				
			||||||
    return 1;
 | 
					    return 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_cvolume* pa_cvolume_init(pa_cvolume *a) {
 | 
					pa_cvolume* pa_cvolume_init(pa_cvolume *a) {
 | 
				
			||||||
    unsigned c;
 | 
					    unsigned c;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -65,6 +67,7 @@ pa_cvolume* pa_cvolume_init(pa_cvolume *a) {
 | 
				
			||||||
    return a;
 | 
					    return a;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_cvolume* pa_cvolume_set(pa_cvolume *a, unsigned channels, pa_volume_t v) {
 | 
					pa_cvolume* pa_cvolume_set(pa_cvolume *a, unsigned channels, pa_volume_t v) {
 | 
				
			||||||
    int i;
 | 
					    int i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -81,6 +84,7 @@ pa_cvolume* pa_cvolume_set(pa_cvolume *a, unsigned channels, pa_volume_t v) {
 | 
				
			||||||
    return a;
 | 
					    return a;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_volume_t pa_cvolume_avg(const pa_cvolume *a) {
 | 
					pa_volume_t pa_cvolume_avg(const pa_cvolume *a) {
 | 
				
			||||||
    uint64_t sum = 0;
 | 
					    uint64_t sum = 0;
 | 
				
			||||||
    unsigned c;
 | 
					    unsigned c;
 | 
				
			||||||
| 
						 | 
					@ -96,6 +100,7 @@ pa_volume_t pa_cvolume_avg(const pa_cvolume *a) {
 | 
				
			||||||
    return (pa_volume_t) sum;
 | 
					    return (pa_volume_t) sum;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_volume_t pa_cvolume_avg_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) {
 | 
					pa_volume_t pa_cvolume_avg_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) {
 | 
				
			||||||
    uint64_t sum = 0;
 | 
					    uint64_t sum = 0;
 | 
				
			||||||
    unsigned c, n;
 | 
					    unsigned c, n;
 | 
				
			||||||
| 
						 | 
					@ -122,6 +127,7 @@ pa_volume_t pa_cvolume_avg_mask(const pa_cvolume *a, const pa_channel_map *cm, p
 | 
				
			||||||
    return (pa_volume_t) sum;
 | 
					    return (pa_volume_t) sum;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_volume_t pa_cvolume_max(const pa_cvolume *a) {
 | 
					pa_volume_t pa_cvolume_max(const pa_cvolume *a) {
 | 
				
			||||||
    pa_volume_t m = PA_VOLUME_MUTED;
 | 
					    pa_volume_t m = PA_VOLUME_MUTED;
 | 
				
			||||||
    unsigned c;
 | 
					    unsigned c;
 | 
				
			||||||
| 
						 | 
					@ -136,6 +142,7 @@ pa_volume_t pa_cvolume_max(const pa_cvolume *a) {
 | 
				
			||||||
    return m;
 | 
					    return m;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_volume_t pa_cvolume_min(const pa_cvolume *a) {
 | 
					pa_volume_t pa_cvolume_min(const pa_cvolume *a) {
 | 
				
			||||||
    pa_volume_t m = PA_VOLUME_MAX;
 | 
					    pa_volume_t m = PA_VOLUME_MAX;
 | 
				
			||||||
    unsigned c;
 | 
					    unsigned c;
 | 
				
			||||||
| 
						 | 
					@ -150,6 +157,7 @@ pa_volume_t pa_cvolume_min(const pa_cvolume *a) {
 | 
				
			||||||
    return m;
 | 
					    return m;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) {
 | 
					pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) {
 | 
				
			||||||
    pa_volume_t m = PA_VOLUME_MUTED;
 | 
					    pa_volume_t m = PA_VOLUME_MUTED;
 | 
				
			||||||
    unsigned c;
 | 
					    unsigned c;
 | 
				
			||||||
| 
						 | 
					@ -173,6 +181,7 @@ pa_volume_t pa_cvolume_max_mask(const pa_cvolume *a, const pa_channel_map *cm, p
 | 
				
			||||||
    return m;
 | 
					    return m;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_volume_t pa_cvolume_min_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) {
 | 
					pa_volume_t pa_cvolume_min_mask(const pa_cvolume *a, const pa_channel_map *cm, pa_channel_position_mask_t mask) {
 | 
				
			||||||
    pa_volume_t m = PA_VOLUME_MAX;
 | 
					    pa_volume_t m = PA_VOLUME_MAX;
 | 
				
			||||||
    unsigned c;
 | 
					    unsigned c;
 | 
				
			||||||
| 
						 | 
					@ -196,6 +205,7 @@ pa_volume_t pa_cvolume_min_mask(const pa_cvolume *a, const pa_channel_map *cm, p
 | 
				
			||||||
    return m;
 | 
					    return m;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_volume_t pa_sw_volume_multiply(pa_volume_t a, pa_volume_t b) {
 | 
					pa_volume_t pa_sw_volume_multiply(pa_volume_t a, pa_volume_t b) {
 | 
				
			||||||
    uint64_t result;
 | 
					    uint64_t result;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -212,6 +222,7 @@ pa_volume_t pa_sw_volume_multiply(pa_volume_t a, pa_volume_t b) {
 | 
				
			||||||
    return (pa_volume_t) PA_CLAMP_VOLUME(result);
 | 
					    return (pa_volume_t) PA_CLAMP_VOLUME(result);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_volume_t pa_sw_volume_divide(pa_volume_t a, pa_volume_t b) {
 | 
					pa_volume_t pa_sw_volume_divide(pa_volume_t a, pa_volume_t b) {
 | 
				
			||||||
    uint64_t result;
 | 
					    uint64_t result;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -238,6 +249,7 @@ static double dB_to_linear(double v) {
 | 
				
			||||||
    return pow(10.0, v / 20.0);
 | 
					    return pow(10.0, v / 20.0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_volume_t pa_sw_volume_from_dB(double dB) {
 | 
					pa_volume_t pa_sw_volume_from_dB(double dB) {
 | 
				
			||||||
    if (isinf(dB) < 0 || dB <= PA_DECIBEL_MININFTY)
 | 
					    if (isinf(dB) < 0 || dB <= PA_DECIBEL_MININFTY)
 | 
				
			||||||
        return PA_VOLUME_MUTED;
 | 
					        return PA_VOLUME_MUTED;
 | 
				
			||||||
| 
						 | 
					@ -245,6 +257,7 @@ pa_volume_t pa_sw_volume_from_dB(double dB) {
 | 
				
			||||||
    return pa_sw_volume_from_linear(dB_to_linear(dB));
 | 
					    return pa_sw_volume_from_linear(dB_to_linear(dB));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
double pa_sw_volume_to_dB(pa_volume_t v) {
 | 
					double pa_sw_volume_to_dB(pa_volume_t v) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_return_val_if_fail(PA_VOLUME_IS_VALID(v), PA_DECIBEL_MININFTY);
 | 
					    pa_return_val_if_fail(PA_VOLUME_IS_VALID(v), PA_DECIBEL_MININFTY);
 | 
				
			||||||
| 
						 | 
					@ -255,6 +268,7 @@ double pa_sw_volume_to_dB(pa_volume_t v) {
 | 
				
			||||||
    return linear_to_dB(pa_sw_volume_to_linear(v));
 | 
					    return linear_to_dB(pa_sw_volume_to_linear(v));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_volume_t pa_sw_volume_from_linear(double v) {
 | 
					pa_volume_t pa_sw_volume_from_linear(double v) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (v <= 0.0)
 | 
					    if (v <= 0.0)
 | 
				
			||||||
| 
						 | 
					@ -273,6 +287,7 @@ pa_volume_t pa_sw_volume_from_linear(double v) {
 | 
				
			||||||
    return (pa_volume_t) PA_CLAMP_VOLUME((uint64_t) lround(cbrt(v) * PA_VOLUME_NORM));
 | 
					    return (pa_volume_t) PA_CLAMP_VOLUME((uint64_t) lround(cbrt(v) * PA_VOLUME_NORM));
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
double pa_sw_volume_to_linear(pa_volume_t v) {
 | 
					double pa_sw_volume_to_linear(pa_volume_t v) {
 | 
				
			||||||
    double f;
 | 
					    double f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -289,6 +304,7 @@ double pa_sw_volume_to_linear(pa_volume_t v) {
 | 
				
			||||||
    return f*f*f;
 | 
					    return f*f*f;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_cvolume_snprint(char *s, size_t l, const pa_cvolume *c) {
 | 
					char *pa_cvolume_snprint(char *s, size_t l, const pa_cvolume *c) {
 | 
				
			||||||
    unsigned channel;
 | 
					    unsigned channel;
 | 
				
			||||||
    bool first = true;
 | 
					    bool first = true;
 | 
				
			||||||
| 
						 | 
					@ -320,6 +336,7 @@ char *pa_cvolume_snprint(char *s, size_t l, const pa_cvolume *c) {
 | 
				
			||||||
    return s;
 | 
					    return s;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_volume_snprint(char *s, size_t l, pa_volume_t v) {
 | 
					char *pa_volume_snprint(char *s, size_t l, pa_volume_t v) {
 | 
				
			||||||
    pa_assert(s);
 | 
					    pa_assert(s);
 | 
				
			||||||
    pa_assert(l > 0);
 | 
					    pa_assert(l > 0);
 | 
				
			||||||
| 
						 | 
					@ -335,6 +352,7 @@ char *pa_volume_snprint(char *s, size_t l, pa_volume_t v) {
 | 
				
			||||||
    return s;
 | 
					    return s;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_sw_cvolume_snprint_dB(char *s, size_t l, const pa_cvolume *c) {
 | 
					char *pa_sw_cvolume_snprint_dB(char *s, size_t l, const pa_cvolume *c) {
 | 
				
			||||||
    unsigned channel;
 | 
					    unsigned channel;
 | 
				
			||||||
    bool first = true;
 | 
					    bool first = true;
 | 
				
			||||||
| 
						 | 
					@ -368,6 +386,7 @@ char *pa_sw_cvolume_snprint_dB(char *s, size_t l, const pa_cvolume *c) {
 | 
				
			||||||
    return s;
 | 
					    return s;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_cvolume_snprint_verbose(char *s, size_t l, const pa_cvolume *c, const pa_channel_map *map, int print_dB) {
 | 
					char *pa_cvolume_snprint_verbose(char *s, size_t l, const pa_cvolume *c, const pa_channel_map *map, int print_dB) {
 | 
				
			||||||
    char *current = s;
 | 
					    char *current = s;
 | 
				
			||||||
    bool first = true;
 | 
					    bool first = true;
 | 
				
			||||||
| 
						 | 
					@ -410,6 +429,7 @@ char *pa_cvolume_snprint_verbose(char *s, size_t l, const pa_cvolume *c, const p
 | 
				
			||||||
    return s;
 | 
					    return s;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_sw_volume_snprint_dB(char *s, size_t l, pa_volume_t v) {
 | 
					char *pa_sw_volume_snprint_dB(char *s, size_t l, pa_volume_t v) {
 | 
				
			||||||
    double f;
 | 
					    double f;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -429,6 +449,7 @@ char *pa_sw_volume_snprint_dB(char *s, size_t l, pa_volume_t v) {
 | 
				
			||||||
    return s;
 | 
					    return s;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_volume_snprint_verbose(char *s, size_t l, pa_volume_t v, int print_dB) {
 | 
					char *pa_volume_snprint_verbose(char *s, size_t l, pa_volume_t v, int print_dB) {
 | 
				
			||||||
    char dB[PA_SW_VOLUME_SNPRINT_DB_MAX];
 | 
					    char dB[PA_SW_VOLUME_SNPRINT_DB_MAX];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -451,6 +472,7 @@ char *pa_volume_snprint_verbose(char *s, size_t l, pa_volume_t v, int print_dB)
 | 
				
			||||||
    return s;
 | 
					    return s;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_cvolume_channels_equal_to(const pa_cvolume *a, pa_volume_t v) {
 | 
					int pa_cvolume_channels_equal_to(const pa_cvolume *a, pa_volume_t v) {
 | 
				
			||||||
    unsigned c;
 | 
					    unsigned c;
 | 
				
			||||||
    pa_assert(a);
 | 
					    pa_assert(a);
 | 
				
			||||||
| 
						 | 
					@ -465,6 +487,7 @@ int pa_cvolume_channels_equal_to(const pa_cvolume *a, pa_volume_t v) {
 | 
				
			||||||
    return 1;
 | 
					    return 1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_cvolume *pa_sw_cvolume_multiply(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b) {
 | 
					pa_cvolume *pa_sw_cvolume_multiply(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b) {
 | 
				
			||||||
    unsigned i;
 | 
					    unsigned i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -483,6 +506,7 @@ pa_cvolume *pa_sw_cvolume_multiply(pa_cvolume *dest, const pa_cvolume *a, const
 | 
				
			||||||
    return dest;
 | 
					    return dest;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_cvolume *pa_sw_cvolume_multiply_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_volume_t b) {
 | 
					pa_cvolume *pa_sw_cvolume_multiply_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_volume_t b) {
 | 
				
			||||||
    unsigned i;
 | 
					    unsigned i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -500,6 +524,7 @@ pa_cvolume *pa_sw_cvolume_multiply_scalar(pa_cvolume *dest, const pa_cvolume *a,
 | 
				
			||||||
    return dest;
 | 
					    return dest;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_cvolume *pa_sw_cvolume_divide(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b) {
 | 
					pa_cvolume *pa_sw_cvolume_divide(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b) {
 | 
				
			||||||
    unsigned i;
 | 
					    unsigned i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -518,6 +543,7 @@ pa_cvolume *pa_sw_cvolume_divide(pa_cvolume *dest, const pa_cvolume *a, const pa
 | 
				
			||||||
    return dest;
 | 
					    return dest;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_cvolume *pa_sw_cvolume_divide_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_volume_t b) {
 | 
					pa_cvolume *pa_sw_cvolume_divide_scalar(pa_cvolume *dest, const pa_cvolume *a, pa_volume_t b) {
 | 
				
			||||||
    unsigned i;
 | 
					    unsigned i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -535,6 +561,7 @@ pa_cvolume *pa_sw_cvolume_divide_scalar(pa_cvolume *dest, const pa_cvolume *a, p
 | 
				
			||||||
    return dest;
 | 
					    return dest;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_cvolume_valid(const pa_cvolume *v) {
 | 
					int pa_cvolume_valid(const pa_cvolume *v) {
 | 
				
			||||||
    unsigned c;
 | 
					    unsigned c;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -578,6 +605,7 @@ static bool on_rear(pa_channel_position_t p) {
 | 
				
			||||||
    return !!(PA_CHANNEL_POSITION_MASK(p) & PA_CHANNEL_POSITION_MASK_REAR);
 | 
					    return !!(PA_CHANNEL_POSITION_MASK(p) & PA_CHANNEL_POSITION_MASK_REAR);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_cvolume *pa_cvolume_remap(pa_cvolume *v, const pa_channel_map *from, const pa_channel_map *to) {
 | 
					pa_cvolume *pa_cvolume_remap(pa_cvolume *v, const pa_channel_map *from, const pa_channel_map *to) {
 | 
				
			||||||
    int a, b;
 | 
					    int a, b;
 | 
				
			||||||
    pa_cvolume result;
 | 
					    pa_cvolume result;
 | 
				
			||||||
| 
						 | 
					@ -628,6 +656,7 @@ pa_cvolume *pa_cvolume_remap(pa_cvolume *v, const pa_channel_map *from, const pa
 | 
				
			||||||
    return v;
 | 
					    return v;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_cvolume_compatible(const pa_cvolume *v, const pa_sample_spec *ss) {
 | 
					int pa_cvolume_compatible(const pa_cvolume *v, const pa_sample_spec *ss) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pa_assert(v);
 | 
					    pa_assert(v);
 | 
				
			||||||
| 
						 | 
					@ -639,6 +668,7 @@ int pa_cvolume_compatible(const pa_cvolume *v, const pa_sample_spec *ss) {
 | 
				
			||||||
    return v->channels == ss->channels;
 | 
					    return v->channels == ss->channels;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
int pa_cvolume_compatible_with_channel_map(const pa_cvolume *v, const pa_channel_map *cm) {
 | 
					int pa_cvolume_compatible_with_channel_map(const pa_cvolume *v, const pa_channel_map *cm) {
 | 
				
			||||||
    pa_assert(v);
 | 
					    pa_assert(v);
 | 
				
			||||||
    pa_assert(cm);
 | 
					    pa_assert(cm);
 | 
				
			||||||
| 
						 | 
					@ -686,6 +716,7 @@ static void get_avg(const pa_channel_map *map, const pa_cvolume *v, pa_volume_t
 | 
				
			||||||
        *r = right / n_right;
 | 
					        *r = right / n_right;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
float pa_cvolume_get_balance(const pa_cvolume *v, const pa_channel_map *map) {
 | 
					float pa_cvolume_get_balance(const pa_cvolume *v, const pa_channel_map *map) {
 | 
				
			||||||
    pa_volume_t left, right;
 | 
					    pa_volume_t left, right;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -753,6 +784,7 @@ static pa_cvolume* set_balance(pa_cvolume *v, const pa_channel_map *map, float n
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_cvolume* pa_cvolume_set_balance(pa_cvolume *v, const pa_channel_map *map, float new_balance) {
 | 
					pa_cvolume* pa_cvolume_set_balance(pa_cvolume *v, const pa_channel_map *map, float new_balance) {
 | 
				
			||||||
    pa_assert(map);
 | 
					    pa_assert(map);
 | 
				
			||||||
    pa_assert(v);
 | 
					    pa_assert(v);
 | 
				
			||||||
| 
						 | 
					@ -767,6 +799,7 @@ pa_cvolume* pa_cvolume_set_balance(pa_cvolume *v, const pa_channel_map *map, flo
 | 
				
			||||||
    return set_balance(v, map, new_balance, on_left, on_right);
 | 
					    return set_balance(v, map, new_balance, on_left, on_right);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_cvolume* pa_cvolume_scale(pa_cvolume *v, pa_volume_t max) {
 | 
					pa_cvolume* pa_cvolume_scale(pa_cvolume *v, pa_volume_t max) {
 | 
				
			||||||
    unsigned c;
 | 
					    unsigned c;
 | 
				
			||||||
    pa_volume_t t = 0;
 | 
					    pa_volume_t t = 0;
 | 
				
			||||||
| 
						 | 
					@ -787,6 +820,7 @@ pa_cvolume* pa_cvolume_scale(pa_cvolume *v, pa_volume_t max) {
 | 
				
			||||||
    return v;
 | 
					    return v;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
#if PA_CHECK_VERSION(12, 0, 0)
 | 
					#if PA_CHECK_VERSION(12, 0, 0)
 | 
				
			||||||
pa_cvolume* pa_cvolume_scale_mask(pa_cvolume *v, pa_volume_t max, const pa_channel_map *cm, pa_channel_position_mask_t mask) {
 | 
					pa_cvolume* pa_cvolume_scale_mask(pa_cvolume *v, pa_volume_t max, const pa_channel_map *cm, pa_channel_position_mask_t mask) {
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
| 
						 | 
					@ -815,6 +849,7 @@ pa_cvolume* pa_cvolume_scale_mask(pa_cvolume *v, pa_volume_t max, pa_channel_map
 | 
				
			||||||
    return v;
 | 
					    return v;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
float pa_cvolume_get_fade(const pa_cvolume *v, const pa_channel_map *map) {
 | 
					float pa_cvolume_get_fade(const pa_cvolume *v, const pa_channel_map *map) {
 | 
				
			||||||
    pa_volume_t rear, front;
 | 
					    pa_volume_t rear, front;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -837,6 +872,7 @@ float pa_cvolume_get_fade(const pa_cvolume *v, const pa_channel_map *map) {
 | 
				
			||||||
        return 1.0f - ((float) rear / (float) front);
 | 
					        return 1.0f - ((float) rear / (float) front);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_cvolume* pa_cvolume_set_fade(pa_cvolume *v, const pa_channel_map *map, float new_fade) {
 | 
					pa_cvolume* pa_cvolume_set_fade(pa_cvolume *v, const pa_channel_map *map, float new_fade) {
 | 
				
			||||||
    pa_assert(map);
 | 
					    pa_assert(map);
 | 
				
			||||||
    pa_assert(v);
 | 
					    pa_assert(v);
 | 
				
			||||||
| 
						 | 
					@ -851,6 +887,7 @@ pa_cvolume* pa_cvolume_set_fade(pa_cvolume *v, const pa_channel_map *map, float
 | 
				
			||||||
    return set_balance(v, map, new_fade, on_rear, on_front);
 | 
					    return set_balance(v, map, new_fade, on_rear, on_front);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
float pa_cvolume_get_lfe_balance(const pa_cvolume *v, const pa_channel_map *map) {
 | 
					float pa_cvolume_get_lfe_balance(const pa_cvolume *v, const pa_channel_map *map) {
 | 
				
			||||||
    pa_volume_t hfe, lfe;
 | 
					    pa_volume_t hfe, lfe;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -873,6 +910,7 @@ float pa_cvolume_get_lfe_balance(const pa_cvolume *v, const pa_channel_map *map)
 | 
				
			||||||
        return 1.0f - ((float) hfe / (float) lfe);
 | 
					        return 1.0f - ((float) hfe / (float) lfe);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_cvolume* pa_cvolume_set_lfe_balance(pa_cvolume *v, const pa_channel_map *map, float new_balance) {
 | 
					pa_cvolume* pa_cvolume_set_lfe_balance(pa_cvolume *v, const pa_channel_map *map, float new_balance) {
 | 
				
			||||||
    pa_assert(map);
 | 
					    pa_assert(map);
 | 
				
			||||||
    pa_assert(v);
 | 
					    pa_assert(v);
 | 
				
			||||||
| 
						 | 
					@ -887,6 +925,7 @@ pa_cvolume* pa_cvolume_set_lfe_balance(pa_cvolume *v, const pa_channel_map *map,
 | 
				
			||||||
    return set_balance(v, map, new_balance, on_hfe, on_lfe);
 | 
					    return set_balance(v, map, new_balance, on_hfe, on_lfe);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_cvolume* pa_cvolume_set_position(
 | 
					pa_cvolume* pa_cvolume_set_position(
 | 
				
			||||||
        pa_cvolume *cv,
 | 
					        pa_cvolume *cv,
 | 
				
			||||||
        const pa_channel_map *map,
 | 
					        const pa_channel_map *map,
 | 
				
			||||||
| 
						 | 
					@ -912,6 +951,7 @@ pa_cvolume* pa_cvolume_set_position(
 | 
				
			||||||
    return good ? cv : NULL;
 | 
					    return good ? cv : NULL;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_volume_t pa_cvolume_get_position(
 | 
					pa_volume_t pa_cvolume_get_position(
 | 
				
			||||||
        pa_cvolume *cv,
 | 
					        pa_cvolume *cv,
 | 
				
			||||||
        const pa_channel_map *map,
 | 
					        const pa_channel_map *map,
 | 
				
			||||||
| 
						 | 
					@ -934,6 +974,7 @@ pa_volume_t pa_cvolume_get_position(
 | 
				
			||||||
    return v;
 | 
					    return v;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_cvolume* pa_cvolume_merge(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b) {
 | 
					pa_cvolume* pa_cvolume_merge(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b) {
 | 
				
			||||||
    unsigned i;
 | 
					    unsigned i;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -952,6 +993,7 @@ pa_cvolume* pa_cvolume_merge(pa_cvolume *dest, const pa_cvolume *a, const pa_cvo
 | 
				
			||||||
    return dest;
 | 
					    return dest;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_cvolume* pa_cvolume_inc_clamp(pa_cvolume *v, pa_volume_t inc, pa_volume_t limit) {
 | 
					pa_cvolume* pa_cvolume_inc_clamp(pa_cvolume *v, pa_volume_t inc, pa_volume_t limit) {
 | 
				
			||||||
    pa_volume_t m;
 | 
					    pa_volume_t m;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -970,10 +1012,12 @@ pa_cvolume* pa_cvolume_inc_clamp(pa_cvolume *v, pa_volume_t inc, pa_volume_t lim
 | 
				
			||||||
    return pa_cvolume_scale(v, m);
 | 
					    return pa_cvolume_scale(v, m);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_cvolume* pa_cvolume_inc(pa_cvolume *v, pa_volume_t inc) {
 | 
					pa_cvolume* pa_cvolume_inc(pa_cvolume *v, pa_volume_t inc) {
 | 
				
			||||||
    return pa_cvolume_inc_clamp(v, inc, PA_VOLUME_MAX);
 | 
					    return pa_cvolume_inc_clamp(v, inc, PA_VOLUME_MAX);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
pa_cvolume* pa_cvolume_dec(pa_cvolume *v, pa_volume_t dec) {
 | 
					pa_cvolume* pa_cvolume_dec(pa_cvolume *v, pa_volume_t dec) {
 | 
				
			||||||
    pa_volume_t m;
 | 
					    pa_volume_t m;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,6 +35,7 @@ static void oom(void) {
 | 
				
			||||||
	_exit(1);
 | 
						_exit(1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void* pa_xmalloc(size_t l)
 | 
					void* pa_xmalloc(size_t l)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	void *p;
 | 
						void *p;
 | 
				
			||||||
| 
						 | 
					@ -47,6 +48,7 @@ void* pa_xmalloc(size_t l)
 | 
				
			||||||
	return p;
 | 
						return p;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void *pa_xmalloc0(size_t l)
 | 
					void *pa_xmalloc0(size_t l)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	void *p;
 | 
						void *p;
 | 
				
			||||||
| 
						 | 
					@ -59,6 +61,7 @@ void *pa_xmalloc0(size_t l)
 | 
				
			||||||
	return p;
 | 
						return p;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void *pa_xrealloc(void *ptr, size_t size)
 | 
					void *pa_xrealloc(void *ptr, size_t size)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	void *p;
 | 
						void *p;
 | 
				
			||||||
| 
						 | 
					@ -70,6 +73,7 @@ void *pa_xrealloc(void *ptr, size_t size)
 | 
				
			||||||
	return p;
 | 
						return p;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void pa_xfree(void *p)
 | 
					void pa_xfree(void *p)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int saved_errno;
 | 
						int saved_errno;
 | 
				
			||||||
| 
						 | 
					@ -80,6 +84,7 @@ void pa_xfree(void *p)
 | 
				
			||||||
	errno = saved_errno;
 | 
						errno = saved_errno;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_xstrdup(const char *s)
 | 
					char *pa_xstrdup(const char *s)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (!s)
 | 
						if (!s)
 | 
				
			||||||
| 
						 | 
					@ -87,6 +92,7 @@ char *pa_xstrdup(const char *s)
 | 
				
			||||||
	return pa_xmemdup(s, strlen(s)+1);
 | 
						return pa_xmemdup(s, strlen(s)+1);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
char *pa_xstrndup(const char *s, size_t l)
 | 
					char *pa_xstrndup(const char *s, size_t l)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	char *e, *r;
 | 
						char *e, *r;
 | 
				
			||||||
| 
						 | 
					@ -103,6 +109,7 @@ char *pa_xstrndup(const char *s, size_t l)
 | 
				
			||||||
	return r;
 | 
						return r;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SPA_EXPORT
 | 
				
			||||||
void* pa_xmemdup(const void *p, size_t l)
 | 
					void* pa_xmemdup(const void *p, size_t l)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (!p)
 | 
						if (!p)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue