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
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel