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 *state = NULL;
|
||||
pa_assert(t);
|
||||
|
|
@ -555,6 +566,25 @@ int pa_tagstruct_get_cvolume(pa_tagstruct *t, pa_cvolume *cvolume) {
|
|||
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) {
|
||||
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 *));
|
||||
break;
|
||||
|
||||
case PA_TAG_VOLUME:
|
||||
pa_tagstruct_put_volume(t, va_arg(va, pa_volume_t));
|
||||
break;
|
||||
|
||||
case PA_TAG_PROPLIST:
|
||||
pa_tagstruct_put_proplist(t, va_arg(va, pa_proplist *));
|
||||
break;
|
||||
|
|
@ -738,6 +772,10 @@ int pa_tagstruct_get(pa_tagstruct *t, ...) {
|
|||
ret = pa_tagstruct_get_cvolume(t, va_arg(va, pa_cvolume *));
|
||||
break;
|
||||
|
||||
case PA_TAG_VOLUME:
|
||||
ret = pa_tagstruct_get_volume(t, va_arg(va, pa_volume_t *));
|
||||
break;
|
||||
|
||||
case PA_TAG_PROPLIST:
|
||||
ret = pa_tagstruct_get_proplist(t, va_arg(va, pa_proplist *));
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -54,7 +54,8 @@ enum {
|
|||
PA_TAG_USEC = 'U' /* 64bit unsigned */,
|
||||
PA_TAG_CHANNEL_MAP = 'm',
|
||||
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);
|
||||
|
|
@ -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_cvolume(pa_tagstruct *t, const pa_cvolume *cvolume);
|
||||
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, ...);
|
||||
|
||||
|
|
@ -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_cvolume(pa_tagstruct *t, pa_cvolume *v);
|
||||
int pa_tagstruct_get_proplist(pa_tagstruct *t, pa_proplist *p);
|
||||
|
||||
int pa_tagstruct_get_volume(pa_tagstruct *t, pa_volume_t *v);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue