summaryrefslogtreecommitdiff
path: root/libavfilter/graphparser.c
Commit message (Collapse)AuthorAge
* avfilter/graphparser: Fix memleak when linking filters failsAndreas Rheinhardt2020-08-23
| | | | | | | | | | | | | | | | | | | | | Parsing labeled outputs involves a check for an already known match (a labeled input with the same name) to pair them together. If yes, it is attempted to create a link between the two filters; in this case the AVFilterInOuts have fulfilled their purpose and are freed. Yet if creating the link fails, these AVFilterInOuts have up until now not been freed, although they had already been removed from their respective lists (which means that they are not freed automatically). In other words: They leak. This commit fixes this. This fixes ticket #7084. Said ticket contains an example program to reproduce a leak. It can also be reproduced with ffmpeg alone, e.g. with the complex filters "[0]null[1],[2]anull[0]" or with "[0]abitscope[0]". All of these three examples involve media type mismatches which make it impossible to create the links. The bug could also be triggered by other means, e.g. failure to allocate the necessary AVFilterLink. Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
* avfilter/graphparser: Check allocations for successAndreas Rheinhardt2020-08-23
| | | | | | | | | parse_filter() did not check the return value of av_get_token() for success; in case name (the name of a filter) was NULL, one got a segfault in av_strlcpy() (called from create_filter()). Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
* avfilter/graphparser: Don't set pointer to one beyond '\0' of stringAndreas Rheinhardt2020-08-23
| | | | | | | | | | | | | This happened in parse_link_name() if there was a '[' without matching ']'. While this is not undefined behaviour (pointer arithmetic one beyond the end of an array works fine as long as there are no accesses), it is potentially dangerous. It currently isn't (all callers of parse_link_name() treat this as an error and don't access the string any more), but making sure that this will never cause trouble in the future seems nevertheless worthwhile. Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
* avfilter/graphparser: Fix leaks when parsing inputs failsAndreas Rheinhardt2020-08-23
| | | | | | | | | | | | | | | | | parse_inputs() uses a temporary linked list to parse the labeled inputs of a filter; said linked list owns its elements (and their names). On success, the list of unlabeled inputs is appened to the end of the list of labeled inputs and the new list is returned; yet on failures, nothing frees the already existing elements of the temporary linked list, leading to a leak. This can be triggered by e.g. using '-vf [v][' in the FFmpeg command-line tool. This leak seems to exist since 4e781c25b7b1955d1a9a0b0771c3ce1acb0957bd. Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
* lavfi/graphparser: Constify a variable.Carl Eugen Hoyos2017-10-21
| | | | | Fixes the following warning: libavfilter/graphparser.c:122:10: warning: assignment discards 'const' qualifier from pointer target type
* avfilter/graphparser: allow specifying filter@id as filter instanceMuhammad Faiz2017-05-19
| | | | | | | | | | | | | | See http://lists.ffmpeg.org/pipermail/ffmpeg-user/2017-April/035975.html Parsed_filter_X could remain and user can override it with custom one. Example: ffplay -f lavfi "nullsrc=s=640x360, sendcmd='1 drawtext@top reinit text=Hello; 2 drawtext@bottom reinit text=World', drawtext@top=x=16:y=16:fontsize=20:fontcolor=Red:text='', drawtext@bottom=x=16:y=340:fontsize=16:fontcolor=Blue:text=''" Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
* avfilter/graphparser: remove '\n' from parse_filterMuhammad Faiz2016-06-13
| | | | | | | | | this allow a filter to be written like this: aformat = sample_fmts = fltp|flt: sample_rates = 44100|44800 Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
* avfilter/graphparser: add '\r' as whitespaceMuhammad Faiz2016-05-06
| | | | | | | for compatibility with platforms that treat it as newline Signed-off-by: Muhammad Faiz <mfcc64@gmail.com>
* fix some a/an typosLou Logan2016-03-28
| | | | Signed-off-by: Lou Logan <lou@lrcd.com>
* lavfi: remove old graph parser API with different semanticsHendrik Leppkes2015-09-05
| | | | This API hasn't been active since the last bump already.
* avfilter/graphparser: Do not ignore scale_sws_opts if args == NULLMichael Niedermayer2015-08-08
| | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* Merge commit '9d3b752fceb0f2a42cac7c2a1109b0629823c99f'Michael Niedermayer2015-02-17
|\ | | | | | | | | | | | | * commit '9d3b752fceb0f2a42cac7c2a1109b0629823c99f': graphparser: Check av_get_token() memory error Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * graphparser: Check av_get_token() memory errorVittorio Giovara2015-02-17
| | | | | | | | | | CC: libav-stable@libav.org Bug-Id: CID 1267891
* | avfilter/graphparser: Use av_freep(), avoid leaving stale pointers in memoryMichael Niedermayer2014-11-22
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | avfilter/graphparser: zero filter_ctx in case of deallocation in create_filter()Michael Niedermayer2013-11-07
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | Merge commit 'cffecc0e7ebd642afaa1fb9f56fab1fcc283293c'Michael Niedermayer2013-11-07
|\| | | | | | | | | | | | | | | | | | | * commit 'cffecc0e7ebd642afaa1fb9f56fab1fcc283293c': avfilter/graphparser: Directly free filter memory if initialization fails Conflicts: libavfilter/graphparser.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * avfilter/graphparser: Directly free filter memory if initialization failsDiego Biurrun2013-11-06
| |
* | Do not leave positive values undefined when negative are defined as errorMichael Niedermayer2013-10-19
| | | | | | | | | | | | | | | | Define positive return values as non errors and leave further meaning undefined This allows future extensions to use these values Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | avfilter/graphparser: fix use of deprecated symbolsMichael Niedermayer2013-08-25
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | avfilter/graphparser: remove 256 char limit from create_filter()Michael Niedermayer2013-08-04
| | | | | | | | | | | | Fixes Ticket2803 Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | avfilter/graphparse: Fix build with --enable-incompatible-fork-abiMichael Niedermayer2013-07-09
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavfi: create Libav-API compatibility layer for avfilter_graph_parse() at ↵Stefano Sabatini2013-07-03
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | the next bump Add function avfilter_graph_parse_ptr() and favor it in place of avfilter_graph_parse(), which will be restored with the old/Libav signature at the next bump. If HAVE_INCOMPATIBLE_LIBAV_API is enabled it will use the Libav-compatible signature for avfilter_graph_parse(). At the next major bump the current implementation of avfilter_graph_parse() should be dropped in favor of the Libav/old implementation. Should address trac ticket #2672.
* | Merge commit 'c22263d3e813d442df8fa5f5ba8993573fe775d8'Michael Niedermayer2013-05-01
|\| | | | | | | | | | | | | | | * commit 'c22263d3e813d442df8fa5f5ba8993573fe775d8': graphparser: only print filter arguments if they are non-NULL af_channelmap: ensure the output channel layout is valid. Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * graphparser: only print filter arguments if they are non-NULLAnton Khirnov2013-04-30
| |
* | lavfi: fix forgotten chunk in eb0f774d.Clément Bœsch2013-04-12
| |
* | Merge commit '48a5adab62bd2a553f5069d41fa632a0701835e5'Michael Niedermayer2013-04-12
|\| | | | | | | | | | | | | | | | | | | | | * commit '48a5adab62bd2a553f5069d41fa632a0701835e5': lavfi: add avfilter_init_str() to replace avfilter_init_filter(). avfilter_graph_create_filter() opaque is still passed to avfilter_init_filter() which continues to pass it to init_opaque as its still used in the buffer sinks the sinks should be changed and the opaque passing removed Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavfi: add avfilter_init_str() to replace avfilter_init_filter().Anton Khirnov2013-04-11
| | | | | | | | Drop the unused opaque parameter from its signature.
* | Merge commit '1565cbc65cbb9f95c11367314a080068895e0cf0'Michael Niedermayer2013-04-12
|\| | | | | | | | | | | | | | | | | | | | | | | * commit '1565cbc65cbb9f95c11367314a080068895e0cf0': lavfi: make avfilter_free() remove the filter from its graph. Conflicts: libavfilter/avfilter.c libavfilter/avfiltergraph.c libavfilter/graphparser.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavfi: make avfilter_free() remove the filter from its graph.Anton Khirnov2013-04-11
| |
* | Merge commit 'bc1a985ba030e9861d24965d42792850b43a43ea'Michael Niedermayer2013-04-12
|\| | | | | | | | | | | | | | | | | | | | | | | * commit 'bc1a985ba030e9861d24965d42792850b43a43ea': lavfi: replace avfilter_open() with avfilter_graph_alloc_filter(). Conflicts: libavfilter/avfiltergraph.c libavfilter/internal.h libavfilter/version.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavfi: replace avfilter_open() with avfilter_graph_alloc_filter().Anton Khirnov2013-04-11
| | | | | | | | | | | | | | Since we do not support "standalone" filters not attached to an AVFilterGraph, we should not have a public function to create such filters. In addition that function is horribly named, the action it does cannot be possibly described as "opening" a filter.
* | Merge commit '38f0c0781a6e099f11c0acec07f9b8be742190c4'Michael Niedermayer2013-04-11
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '38f0c0781a6e099f11c0acec07f9b8be742190c4': lavfi: merge avfiltergraph.h into avfilter.h Conflicts: doc/APIchanges ffmpeg_filter.c libavfilter/avfilter.h libavfilter/avfiltergraph.h libavfilter/version.h tools/graph2dot.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavfi: merge avfiltergraph.h into avfilter.hAnton Khirnov2013-04-11
| | | | | | | | | | We do not support using filters without AVFilterGraph in practice anyway, so there is no point in pretending we do.
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2013-04-03
|\| | | | | | | | | | | | | | | | | | | | | * qatar/master: avfiltergraph: check for sws opts being non-NULL before using them. Conflicts: libavfilter/avfiltergraph.c libavfilter/graphparser.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * avfiltergraph: check for sws opts being non-NULL before using them.Anton Khirnov2013-04-03
| | | | | | | | | | | | Avoid snprintfing a NULL pointer. CC: libav-stable@libav.org
* | Merge commit '42c7c61ab25809620b8c8809b3da73e25f5bbaaf'Michael Niedermayer2013-03-16
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '42c7c61ab25809620b8c8809b3da73e25f5bbaaf': avfiltergraph: replace AVFilterGraph.filter_count with nb_filters Conflicts: doc/APIchanges libavfilter/avfiltergraph.c libavfilter/avfiltergraph.h libavfilter/graphparser.c libavfilter/version.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * avfiltergraph: replace AVFilterGraph.filter_count with nb_filtersAnton Khirnov2013-03-16
| | | | | | | | This is more consistent with the naming in the rest of Libav.
| * Use the avstring.h locale-independent character type functionsReimar Döffinger2013-03-07
| | | | | | | | | | | | Make sure the behavior does not change with the locale. Signed-off-by: Martin Storsjö <martin@martin.st>
* | Remove incorrect use of ctype.h functions.Reimar Döffinger2013-03-03
| | | | | | | | | | | | | | As far as I can tell the code should not change behaviour depending on locale in any of these places. Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
* | Merge commit '1b891d17c531e8a63c2974aab4bf997ce70746f3'Michael Niedermayer2012-10-26
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '1b891d17c531e8a63c2974aab4bf997ce70746f3': avconv: fix bitrate report when writing to /dev/null avfilter: fix graphparser memleaks on error paths rawdec: remove ff_raw_read_header pcmdec: remove dependency from rawdec g722: refactor out of rawdec.c rawvideo: use a specific read_header Conflicts: ffmpeg.c libavformat/Makefile libavformat/rawdec.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * avfilter: fix graphparser memleaks on error pathsJanne Grunau2012-10-25
| | | | | | | | Fixes CID700635, CID700636 and CID732274.
* | avfilter_graph_parse: add support for parsing sws_flagsMichael Niedermayer2012-10-22
| | | | | | | | Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
* | lavfi/graphparser: fix parsing error in case of NULL sws_opts additionStefano Sabatini2012-10-21
| | | | | | | | | | | | If sws_opts was NULL it was resulting in the args being set to "W:H:(null)", which with the new parsing code was generating a syntax failure.
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-08-16
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: Fix even more missing includes after the common.h removal build: Factor out rangecoder dependencies to CONFIG_RANGECODER build: Factor out error resilience dependencies to CONFIG_ERROR_RESILIENCE x86: avcodec: Consistently name all init files Add more missing includes after removing the implicit common.h Add some more missing includes after removing the implicit common.h Don't include common.h from avutil.h rtmp: Automatically compute the hash for SWFVerification Conflicts: configure doc/APIchanges doc/examples/decoding_encoding.c libavcodec/Makefile libavcodec/assdec.c libavcodec/audio_frame_queue.c libavcodec/avpacket.c libavcodec/dv_profile.c libavcodec/dwt.c libavcodec/libtheoraenc.c libavcodec/rawdec.c libavcodec/rv40dsp.c libavcodec/tiff.c libavcodec/tiffenc.c libavcodec/v210dec.h libavcodec/vc1dsp.c libavcodec/x86/Makefile libavfilter/asrc_anullsrc.c libavfilter/avfilter.c libavfilter/buffer.c libavfilter/formats.c libavfilter/vf_ass.c libavfilter/vf_drawtext.c libavfilter/vf_fade.c libavfilter/vf_select.c libavfilter/video.c libavfilter/vsrc_testsrc.c libavformat/version.h libavutil/audioconvert.c libavutil/error.h libavutil/version.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * Don't include common.h from avutil.hMartin Storsjö2012-08-15
| | | | | | | | Signed-off-by: Martin Storsjö <martin@martin.st>
* | Merge commit '1961e46c15c23a041f8d8614a25388a3ee9eff63'Michael Niedermayer2012-06-27
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * commit '1961e46c15c23a041f8d8614a25388a3ee9eff63': lavfi: remove disabled FF_API_FILTERS_PUBLIC cruft lavfi: remove disabled FF_API_DEFAULT_CONFIG_OUTPUT_LINK cruft lavfi: use proper FF_API guards for different deprecated functions lavfi: remove disabled FF_API_VSRC_BUFFER_ADD_FRAME cruft lavfi: remove disabled FF_API_SAMPLERATE64 cruft lavfi: remove disabled FF_API_GRAPH_AVCLASS cruft Conflicts: libavfilter/avfilter.c libavfilter/avfilter.h libavfilter/buffersrc.c libavfilter/formats.c libavfilter/graphparser.c libavfilter/version.h libavfilter/video.c libavfilter/vsrc_buffer.h Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavfi: remove disabled FF_API_GRAPH_AVCLASS cruftAnton Khirnov2012-06-26
| |
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-06-13
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: rtmp: Add a new option 'rtmp_buffer', for setting the client buffer time rtmp: Set the client buffer time to 3s instead of 0.26s rtmp: Handle server bandwidth packets rtmp: Display a verbose message when an unknown packet type is received lavfi/audio: use av_samples_copy() instead of custom code. configure: add all filters hardcoded into avconv to avconv_deps avfiltergraph: remove a redundant call to avfilter_get_by_name(). lavfi: allow building without swscale. build: Do not delete tests/vsynth2 directory, which is no longer created. lavfi: replace AVFilterContext.input/output_count with nb_inputs/outputs lavfi: make AVFilterPad opaque after two major bumps. lavfi: add avfilter_pad_get_type() and avfilter_pad_get_name(). lavfi: make avfilter_get_video_buffer() private on next bump. jack: update to new latency range API as the old one has been deprecated rtmp: Tokenize the AMF connection parameters manually instead of using strtok_r ppc: Rename H.264 optimization template file for consistency. lavfi: add channelsplit audio filter. golomb: check remaining bits during unary decoding in get_ur_golomb_jpegls() sws: fix planar RGB input conversions for 9/10/16 bpp. Conflicts: Changelog configure doc/APIchanges ffmpeg.c libavcodec/golomb.h libavcodec/v210dec.h libavfilter/Makefile libavfilter/allfilters.c libavfilter/asrc_anullsrc.c libavfilter/audio.c libavfilter/avfilter.c libavfilter/avfilter.h libavfilter/avfiltergraph.c libavfilter/buffersrc.c libavfilter/formats.c libavfilter/version.h libavfilter/vf_frei0r.c libavfilter/vf_pad.c libavfilter/vf_scale.c libavfilter/video.h libavfilter/vsrc_color.c libavformat/rtmpproto.c libswscale/input.c tests/Makefile Merged-by: Michael Niedermayer <michaelni@gmx.at>
| * lavfi: replace AVFilterContext.input/output_count with nb_inputs/outputsAnton Khirnov2012-06-13
| | | | | | | | This is more consistent with naming in the rest of Libav.
* | Merge remote-tracking branch 'qatar/master'Michael Niedermayer2012-04-17
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * qatar/master: indeo3: add parens around some macro arguments h264: use proper PROLOGUE statement for a function using 8 registers. doc: Update sample Vim config with suitable (function) indentation settings. dv: Merge dvquant.h into dvdata.c where all other DV tables reside. dv: Move static tables only used in one place to where they are used. graphparser: set next to NULL on an entry extracted from inputs list doc/filters: update documentation. avconv: flush decoders immediately after an EOF. avconv: send EOF to vsrc_buffer. avconv: reindent. Conflicts: doc/filters.texi ffmpeg.c Merged-by: Michael Niedermayer <michaelni@gmx.at>