[FFmpeg-cvslog] r18726 - trunk/libavfilter/graphparser.c
Vitor Sessak
vitor1001
Fri May 8 21:14:40 CEST 2009
Michael Niedermayer wrote:
> On Fri, May 08, 2009 at 08:52:51PM +0200, Vitor Sessak wrote:
>> Michael Niedermayer wrote:
>>> On Fri, May 08, 2009 at 11:24:12AM +0200, Vitor Sessak wrote:
>>>> Michael Niedermayer wrote:
>>>>> On Fri, May 08, 2009 at 01:38:02AM +0200, Vitor Sessak wrote:
>>>>>> stefano wrote:
>>>>>>> Author: stefano
>>>>>>> Date: Fri May 1 20:17:59 2009
>>>>>>> New Revision: 18726
>>>>>>> Log:
>>>>>>> Make graphparser.c use av_get_token().
>>>>>>> This also avoids the need for '\=' escaping.
>>>>>>> Modified:
>>>>>>> trunk/libavfilter/graphparser.c
>>>>>>> Modified: trunk/libavfilter/graphparser.c
>>>>>>> ==============================================================================
>>>>>>> --- trunk/libavfilter/graphparser.c Fri May 1 16:38:07 2009 (r18725)
>>>>>>> +++ trunk/libavfilter/graphparser.c Fri May 1 20:17:59 2009 (r18726)
>>>>>>> @@ -26,6 +26,7 @@
>>>>>>> #include "graphparser.h"
>>>>>>> #include "avfilter.h"
>>>>>>> #include "avfiltergraph.h"
>>>>>>> +#include "parseutils.h"
>>>>>>> #define WHITESPACES " \n\t"
>>>>>>> @@ -44,49 +45,6 @@ static int link_filter(AVFilterContext *
>>>>>>> }
>>>>>>> /**
>>>>>>> - * Consumes a string from *buf.
>>>>>>> - * @return a copy of the consumed string, which should be free'd
>>>>>>> after use
>>>>>>> - */
>>>>>>> -static char *consume_string(const char **buf)
>>>>>>> -{
>>>>>>> - char *out = av_malloc(strlen(*buf) + 1);
>>>>>>> - char *ret = out;
>>>>>>> -
>>>>>>> - *buf += strspn(*buf, WHITESPACES);
>>>>>>> -
>>>>>>> - do{
>>>>>>> - char c = *(*buf)++;
>>>>>>> - switch (c) {
>>>>>>> - case '\\':
>>>>>>> - *out++ = *(*buf)++;
>>>>>>> - break;
>>>>>>> - case '\'':
>>>>>>> - while(**buf && **buf != '\'')
>>>>>>> - *out++ = *(*buf)++;
>>>>>>> - if(**buf) (*buf)++;
>>>>>>> - break;
>>>>>>> - case 0:
>>>>>>> - case ']':
>>>>>>> - case '[':
>>>>>>> - case '=':
>>>>>>> - case ',':
>>>>>>> - case ';':
>>>>>>> - case ' ':
>>>>>>> - case '\n':
>>>>>>> - *out++ = 0;
>>>>>>> - break;
>>>>>>> - default:
>>>>>>> - *out++ = c;
>>>>>>> - }
>>>>>>> - } while(out[-1]);
>>>>>>> -
>>>>>>> - (*buf)--;
>>>>>>> - *buf += strspn(*buf, WHITESPACES);
>>>>>>> -
>>>>>>> - return ret;
>>>>>>> -}
>>>>>>> -
>>>>>>> -/**
>>>>>>> * Parse "[linkname]"
>>>>>>> * @param name a pointer (that need to be free'd after use) to the
>>>>>>> name between
>>>>>>> * parenthesis
>>>>>>> @@ -97,7 +55,7 @@ static char *parse_link_name(const char char
>>>>>>> *name;
>>>>>>> (*buf)++;
>>>>>>> - name = consume_string(buf);
>>>>>>> + name = av_get_token(buf, "]");
>>>>>>> if(!name[0]) {
>>>>>>> av_log(log_ctx, AV_LOG_ERROR,
>>>>>>> @@ -162,12 +120,12 @@ static AVFilterContext *parse_filter(con
>>>>>>> int index, AVClass *log_ctx)
>>>>>>> {
>>>>>>> char *opts = NULL;
>>>>>>> - char *name = consume_string(buf);
>>>>>>> + char *name = av_get_token(buf, "=,");
>>>>>> This caused a regression with the example
>>>>>>
>>>>>> ./ffmpeg -i in.avi -s 240x320 -vfilters "[in]split [T1], fifo,
>>>>>> [T2]overlay='0:240'[out]; [T1]fifo, crop=0:0:-1:240, vflip[T2]" out.avi
>>>>>>
>>>>>> In particular to parse "[in]split [T1]". Fix attached.
>>>>>>
>>>>>> -Vitor
>>>>>> graphparser.c | 2 +-
>>>>>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>>>>> 5d2de7c848bf785e3d66c1dbae01871371f8105d gparser.diff
>>>>>> Index: libavfilter/graphparser.c
>>>>>> ===================================================================
>>>>>> --- libavfilter/graphparser.c (revision 18769)
>>>>>> +++ libavfilter/graphparser.c (working copy)
>>>>>> @@ -120,7 +120,7 @@
>>>>>> int index, AVClass *log_ctx)
>>>>>> {
>>>>>> char *opts = NULL;
>>>>>> - char *name = av_get_token(buf, "=,");
>>>>>> + char *name = av_get_token(buf, "=,[]");
>>>>> does it really need ] too?
>>>> Not really. But "name]" do not seems a reasonable filter name to me
>>>> anyway...
>>> please remove it from the list of terminating chars if it is not a
>>> terminating char
>> ok, attached.
>>
>> -Vitor
>
>> graphparser.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>> 16aa7cafb70cd8ced68aab3a11c3bf045a9047c7 gparser2.diff
>
> ok
Done.
-Vitor
More information about the ffmpeg-cvslog
mailing list