mirror of
https://gitlab.freedesktop.org/pulseaudio/pulseaudio.git
synced 2025-11-07 13:30:03 -05:00
Add APIs to pass pa_volume_t fields in a tagstruct
This commit is contained in:
parent
6342053b34
commit
3e3c103ed9
2 changed files with 42 additions and 2 deletions
|
|
@ -254,6 +254,17 @@ void pa_tagstruct_put_cvolume(pa_tagstruct *t, const pa_cvolume *cvolume) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void pa_tagstruct_put_volume(pa_tagstruct *t, pa_volume_t vol) {
|
||||||
|
uint32_t u;
|
||||||
|
pa_assert(t);
|
||||||
|
|
||||||
|
extend(t, 5);
|
||||||
|
t->data[t->length] = PA_TAG_VOLUME;
|
||||||
|
u = htonl((uint32_t) vol);
|
||||||
|
memcpy(t->data+t->length+1, &u, 4);
|
||||||
|
t->length += 5;
|
||||||
|
}
|
||||||
|
|
||||||
void pa_tagstruct_put_proplist(pa_tagstruct *t, pa_proplist *p) {
|
void pa_tagstruct_put_proplist(pa_tagstruct *t, pa_proplist *p) {
|
||||||
void *state = NULL;
|
void *state = NULL;
|
||||||
pa_assert(t);
|
pa_assert(t);
|
||||||
|
|
@ -555,6 +566,25 @@ int pa_tagstruct_get_cvolume(pa_tagstruct *t, pa_cvolume *cvolume) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int pa_tagstruct_get_volume(pa_tagstruct*t, pa_volume_t *vol) {
|
||||||
|
uint32_t u;
|
||||||
|
|
||||||
|
pa_assert(t);
|
||||||
|
pa_assert(vol);
|
||||||
|
|
||||||
|
if (t->rindex+5 > t->length)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
if (t->data[t->rindex] != PA_TAG_VOLUME)
|
||||||
|
return -1;
|
||||||
|
|
||||||
|
memcpy(&u, t->data+t->rindex+1, 4);
|
||||||
|
*vol = (pa_volume_t) ntohl(u);
|
||||||
|
|
||||||
|
t->rindex += 5;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int pa_tagstruct_get_proplist(pa_tagstruct *t, pa_proplist *p) {
|
int pa_tagstruct_get_proplist(pa_tagstruct *t, pa_proplist *p) {
|
||||||
size_t saved_rindex;
|
size_t saved_rindex;
|
||||||
|
|
||||||
|
|
@ -663,6 +693,10 @@ void pa_tagstruct_put(pa_tagstruct *t, ...) {
|
||||||
pa_tagstruct_put_cvolume(t, va_arg(va, pa_cvolume *));
|
pa_tagstruct_put_cvolume(t, va_arg(va, pa_cvolume *));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PA_TAG_VOLUME:
|
||||||
|
pa_tagstruct_put_volume(t, va_arg(va, pa_volume_t));
|
||||||
|
break;
|
||||||
|
|
||||||
case PA_TAG_PROPLIST:
|
case PA_TAG_PROPLIST:
|
||||||
pa_tagstruct_put_proplist(t, va_arg(va, pa_proplist *));
|
pa_tagstruct_put_proplist(t, va_arg(va, pa_proplist *));
|
||||||
break;
|
break;
|
||||||
|
|
@ -738,6 +772,10 @@ int pa_tagstruct_get(pa_tagstruct *t, ...) {
|
||||||
ret = pa_tagstruct_get_cvolume(t, va_arg(va, pa_cvolume *));
|
ret = pa_tagstruct_get_cvolume(t, va_arg(va, pa_cvolume *));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case PA_TAG_VOLUME:
|
||||||
|
ret = pa_tagstruct_get_volume(t, va_arg(va, pa_volume_t *));
|
||||||
|
break;
|
||||||
|
|
||||||
case PA_TAG_PROPLIST:
|
case PA_TAG_PROPLIST:
|
||||||
ret = pa_tagstruct_get_proplist(t, va_arg(va, pa_proplist *));
|
ret = pa_tagstruct_get_proplist(t, va_arg(va, pa_proplist *));
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,8 @@ enum {
|
||||||
PA_TAG_USEC = 'U' /* 64bit unsigned */,
|
PA_TAG_USEC = 'U' /* 64bit unsigned */,
|
||||||
PA_TAG_CHANNEL_MAP = 'm',
|
PA_TAG_CHANNEL_MAP = 'm',
|
||||||
PA_TAG_CVOLUME = 'v',
|
PA_TAG_CVOLUME = 'v',
|
||||||
PA_TAG_PROPLIST = 'P'
|
PA_TAG_PROPLIST = 'P',
|
||||||
|
PA_TAG_VOLUME = 'V'
|
||||||
};
|
};
|
||||||
|
|
||||||
pa_tagstruct *pa_tagstruct_new(const uint8_t* data, size_t length);
|
pa_tagstruct *pa_tagstruct_new(const uint8_t* data, size_t length);
|
||||||
|
|
@ -79,6 +80,7 @@ void pa_tagstruct_put_usec(pa_tagstruct*t, pa_usec_t u);
|
||||||
void pa_tagstruct_put_channel_map(pa_tagstruct *t, const pa_channel_map *map);
|
void pa_tagstruct_put_channel_map(pa_tagstruct *t, const pa_channel_map *map);
|
||||||
void pa_tagstruct_put_cvolume(pa_tagstruct *t, const pa_cvolume *cvolume);
|
void pa_tagstruct_put_cvolume(pa_tagstruct *t, const pa_cvolume *cvolume);
|
||||||
void pa_tagstruct_put_proplist(pa_tagstruct *t, pa_proplist *p);
|
void pa_tagstruct_put_proplist(pa_tagstruct *t, pa_proplist *p);
|
||||||
|
void pa_tagstruct_put_volume(pa_tagstruct *t, pa_volume_t volume);
|
||||||
|
|
||||||
int pa_tagstruct_get(pa_tagstruct *t, ...);
|
int pa_tagstruct_get(pa_tagstruct *t, ...);
|
||||||
|
|
||||||
|
|
@ -95,6 +97,6 @@ int pa_tagstruct_get_usec(pa_tagstruct*t, pa_usec_t *u);
|
||||||
int pa_tagstruct_get_channel_map(pa_tagstruct *t, pa_channel_map *map);
|
int pa_tagstruct_get_channel_map(pa_tagstruct *t, pa_channel_map *map);
|
||||||
int pa_tagstruct_get_cvolume(pa_tagstruct *t, pa_cvolume *v);
|
int pa_tagstruct_get_cvolume(pa_tagstruct *t, pa_cvolume *v);
|
||||||
int pa_tagstruct_get_proplist(pa_tagstruct *t, pa_proplist *p);
|
int pa_tagstruct_get_proplist(pa_tagstruct *t, pa_proplist *p);
|
||||||
|
int pa_tagstruct_get_volume(pa_tagstruct *t, pa_volume_t *v);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue