[pulseaudio-discuss] [PATCH 1/5] tagstruct: add copy method
David Henningsson
david.henningsson at canonical.com
Fri Jul 24 04:12:16 PDT 2015
On 2015-04-07 17:13, Wim Taymans wrote:
> Add a method to copy a tagstruct. This will also reset the read pointer
> back to the beginning.
> ---
> src/pulsecore/tagstruct.c | 13 +++++++++++++
> src/pulsecore/tagstruct.h | 2 ++
> 2 files changed, 15 insertions(+)
>
> diff --git a/src/pulsecore/tagstruct.c b/src/pulsecore/tagstruct.c
> index 8a29957..c29e49b 100644
> --- a/src/pulsecore/tagstruct.c
> +++ b/src/pulsecore/tagstruct.c
> @@ -97,6 +97,19 @@ void pa_tagstruct_free(pa_tagstruct*t) {
> pa_xfree(t);
> }
>
> +pa_tagstruct *pa_tagstruct_copy(pa_tagstruct*t) {
> + pa_tagstruct*tc;
> +
> + if (!(tc = pa_flist_pop(PA_STATIC_FLIST_GET(tagstructs))))
> + tc = pa_xnew(pa_tagstruct, 1);
> + tc->data = pa_xmemdup(t->data, t->length);
> + tc->allocated = t->length;
We're missing this line:
tc->length = t->length;
> + tc->rindex = 0;
> + tc->type = PA_TAGSTRUCT_DYNAMIC;
> +
> + return tc;
> +}
> +
> static inline void extend(pa_tagstruct*t, size_t l) {
> pa_assert(t);
> pa_assert(t->type != PA_TAGSTRUCT_FIXED);
> diff --git a/src/pulsecore/tagstruct.h b/src/pulsecore/tagstruct.h
> index 348c65d..e648d75 100644
> --- a/src/pulsecore/tagstruct.h
> +++ b/src/pulsecore/tagstruct.h
> @@ -64,6 +64,8 @@ pa_tagstruct *pa_tagstruct_new(void);
> pa_tagstruct *pa_tagstruct_new_fixed(const uint8_t* data, size_t length);
> void pa_tagstruct_free(pa_tagstruct*t);
>
> +pa_tagstruct *pa_tagstruct_copy(pa_tagstruct*t);
> +
> int pa_tagstruct_eof(pa_tagstruct*t);
> const uint8_t* pa_tagstruct_data(pa_tagstruct*t, size_t *l);
>
>
--
David Henningsson, Canonical Ltd.
https://launchpad.net/~diwic
More information about the pulseaudio-discuss
mailing list