[FFmpeg-user] "This syntax is deprecated. Use '|' to separate the list items." (Was: What is the difference between versions of ffmpeg?)

Moritz Barsnick barsnick at gmx.net
Sat Oct 4 22:11:10 CEST 2014


Hello KS (just to give you some name),

On Sat, Oct 04, 2014 at 20:56:30 +0200, skyscanner at gmx.ca wrote:
> I do have another question: When I am running ffmpeg this way, it prints out the following four lines as part of its output - I notice them because they are all or part in green and yellow text:
> 
> [Parsed_pan_1 @ 0x3bd7e20] This syntax is deprecated. Use '|' to separate the list items.
> [Parsed_amerge_0 @ 0x3bc73c0] No channel layout for input 1
> [Parsed_amerge_0 @ 0x3bc73c0] Input channel layouts overlap: output layout will be determined by the number of distinct input channels
> [Parsed_pan_1 @ 0x3bd7e20] Pure channel mapping detected: 0 1 2 3 4 5
> 
> I don't understand all that but it's the first line that has me concerned. What does it mean by, "This syntax is deprecated. Use '|' to separate the list items"? And is there anything else there I should be concerned about? For reference, I'll repeat how I am invoking ffmpeg:
> 
> ffmpeg -i "original program filename.ts" -c:v copy -filter_complex '[0:1][0:2][0:3]amerge=inputs=3,pan=5.1:FL=c0:FR=c1:FC=c2:LFE=c3:BL=c4:BR=c5' -c:a mp2 "converted program filename.ts"

I stumbled across that as well. For all I can tell, the filter syntax
for a list of parameters to a filter argument was changed and the
documentation for the pan filter never updated. Apparently, the eight
filters named in the source below require you to use '|' instead of
':'.

libavfilter/avfilter.c:
#if FF_API_OLD_FILTER_OPTS
            if (   !strcmp(filter->filter->name, "format")     ||
                   !strcmp(filter->filter->name, "noformat")   ||
                   !strcmp(filter->filter->name, "frei0r")     ||
                   !strcmp(filter->filter->name, "frei0r_src") ||
                   !strcmp(filter->filter->name, "ocv")        ||
                   !strcmp(filter->filter->name, "pan")        ||
                   !strcmp(filter->filter->name, "pp")         ||
                   !strcmp(filter->filter->name, "aevalsrc")) {
            /* a hack for compatibility with the old syntax
             * replace colons with |s */

I believe your filter should be as such:

'[0:1][0:2][0:3]amerge=inputs=3,pan=5.1:FL=c0|FR=c1|FC=c2|LFE=c3|BL=c4|BR=c5'

because the first parameter is l=5.1, the second
outdef=FL=c0|FR=c1|FC=c2|LFE=c3|BL=c4|BR=c5, and the ':' separates
parameters.

Just guessing,
I might submit a patch,
Moritz


More information about the ffmpeg-user mailing list