[FFmpeg-devel] [PATCH 07/11] lavu/dict: add av_dict_serialize

Lukasz Marek lukasz.m.luki2 at gmail.com
Wed Nov 19 23:24:06 CET 2014


On 19.11.2014 21:50, Lukasz Marek wrote:
> On 19-Nov-2014 8:59 pm, "Michael Niedermayer" <michaelni at gmx.at
> <mailto:michaelni at gmx.at>> wrote:
>  >
>  > On Wed, Nov 19, 2014 at 02:25:48AM +0100, Lukasz Marek wrote:
>  > > On 19.11.2014 01:13, Michael Niedermayer wrote:
>  > > >On Wed, Nov 19, 2014 at 12:30:53AM +0100, Lukasz Marek wrote:
>  > > >>On 18.11.2014 20:47, Michael Niedermayer wrote:
>  > > >>>>>how will that work without any way to identify the version or
> format?
>  > > >>>>>
>  > > >>>>>also a serialization stream thats self containd seems much
> nicer to
>  > > >>>>>handle as theres no need to keep track of the exact version (if we
>  > > >>>>>end up having more than 1) the used seperators, ...
>  > > >>>>>
>  > > >>>>>also consider 2 libs or apps to interface with each other
> using this
>  > > >>>>>serialization format, if one requires a change to the format
> how can
>  > > >>>>>the other know without a version in it, it would need to know
> it by
>  > > >>>>>external means. it can surely be done but it doesnt feel like
>  > > >>>>>something desirable
>  > > >>>>>
>  > > >>>>
>  > > >>>>I can do one of followings:
>  > > >>>>- I can move this function to ffserver_config.c, where it is
> needed as
>  > > >>>>presented here (to create simple pairs separated with comas)
>  > > >>>>- Rename function to av_dict_get_string or something so it wont get
>  > > >>>>confused with your idea of serialize function. I still think
> both version
>  > > >>>>has own usecases
>  > > >>>
>  > > >>>iam fine with either of these
>  > > >>
>  > > >>OK, renamed. I swapped separators order to be the same as
>  > > >>parse_string's ones. added tests for corner cases where potential
>  > > >>escape chars are separators.
>  > > >
>  > > >[...]
>  > > >
>  > > >>+{
>  > > >>+    AVDictionary *dict = NULL;
>  > > >>+    char *buffer = NULL;
>  > > >>+
>  > > >>+    printf("Testing av_dict_get_string() and
> av_dict_parse_string()");
>  > > >>+    av_dict_get_string(dict, &buffer, '=', ',');
>  > > >>+    printf("%s\n", buffer);
>  > > >>+    av_freep(&buffer);
>  > > >>+    av_dict_set(&dict, "aaa", "aaa", 0);
>  > > >>+    av_dict_set(&dict, "b,b", "bbb", 0);
>  > > >>+    av_dict_set(&dict, "c=c", "ccc", 0);
>  > > >>+    av_dict_set(&dict, "ddd", "d,d", 0);
>  > > >>+    av_dict_set(&dict, "eee", "e=e", 0);
>  > > >>+    av_dict_set(&dict, "f,f", "f=f", 0);
>  > > >>+    av_dict_set(&dict, "g=g", "g,g", 0);
>  > > >>+    test_separators(dict, ',', '=');
>  > > >>+    av_dict_free(&dict);
>  > > >>+    av_dict_set(&dict, "aaa", "aaa", 0);
>  > > >
>  > > >i tried this instead
>  > > >av_dict_set(&dict, "a\\,=\'\"aa", "a\\,=\'\"aa", 0);
>  > > >
>  > > >and it doesnt seem to work
>  > >
>  > > obviously av_get_token is broken, i'm not going to fix it soon, so
>  > > consider patchset dropped unless no one does or wahtever
>  >
>  > i dont think we need \ as a seperator, supporting that case would
>  > only add work
>  > I suggest this:
>
> OK. I will fix it later.

Updated.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-lavu-dict-add-av_dict_serialize.patch
Type: text/x-patch
Size: 5823 bytes
Desc: not available
URL: <https://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20141119/f76eca8a/attachment.bin>


More information about the ffmpeg-devel mailing list