On Mon, Nov 17, 2014 at 02:46:54AM +0100, Lukasz Marek wrote:
> TODO: bump minor, update doc/APIchanges
> 
> Signed-off-by: Lukasz Marek <lukasz.m.lu...@gmail.com>
> ---
>  libavutil/dict.c | 27 +++++++++++++++++++++++++++
>  libavutil/dict.h | 16 ++++++++++++++++
>  2 files changed, 43 insertions(+)
> 
> diff --git a/libavutil/dict.c b/libavutil/dict.c
> index 475e906..a41d61e 100644
> --- a/libavutil/dict.c
> +++ b/libavutil/dict.c
> @@ -24,6 +24,7 @@
>  #include "dict.h"
>  #include "internal.h"
>  #include "mem.h"
> +#include "bprint.h"
>  
>  struct AVDictionary {
>      int count;

> @@ -207,3 +208,29 @@ void av_dict_copy(AVDictionary **dst, FF_CONST_AVUTIL53 
> AVDictionary *src, int f
>      while ((t = av_dict_get(src, "", t, AV_DICT_IGNORE_SUFFIX)))
>          av_dict_set(dst, t->key, t->value, flags);
>  }
> +
> +int av_dict_serialize(const AVDictionary *m, char **buffer,
> +                      const char pairs_sep, const char key_val_sep)
> +{
> +    AVDictionaryEntry *t = NULL;
> +    AVBPrint bprint;
> +    int cnt = 0;
> +
> +    if (!m || !buffer)
> +        return AVERROR(EINVAL);

It should be also possible to serialize an empty dictionary

the serialization string should also contain a serialization format
identifer/version otherwise future maintaince could become hard
this identifer should specify the used separator chars


> +
> +    if (!av_dict_count(m)) {
> +        *buffer = av_strdup("");
> +        return *buffer ? 0 : AVERROR(ENOMEM);
> +    }
> +
> +    av_bprint_init(&bprint, 64, AV_BPRINT_SIZE_UNLIMITED);
> +
> +    while ((t = av_dict_get(m, "", t, AV_DICT_IGNORE_SUFFIX))) {
> +        if (cnt++)
> +            av_bprint_append_data(&bprint, &pairs_sep, 1);
> +        av_bprintf(&bprint, "%s%c%s", t->key, key_val_sep, t->value);
> +    }

this would fail for a string containing the seperator chars
and a string containing all 255 chars could not be serialized at
all.
Also it would lack a check for the occurance of the seperator chars
in the source


[...]

-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

When the tyrant has disposed of foreign enemies by conquest or treaty, and
there is nothing more to fear from them, then he is always stirring up
some war or other, in order that the people may require a leader. -- Plato

Attachment: signature.asc
Description: Digital signature

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to