summaryrefslogtreecommitdiff
path: root/libavfilter/internal.h
Commit message (Collapse)AuthorAge
* avfilter: convert to new channel layout APIJames Almer2022-03-15
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* Remove obsolete version.h inclusionsAndreas Rheinhardt2022-02-24
| | | | | | | Forgotten in e7bd47e657bbf9e1ce9915e93bc80cb1a29fb7f3. Reviewed-by: Martin Storsjö <martin@martin.st> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avfilter: Replace query_formats callback with union of list and callbackAndreas Rheinhardt2021-10-05
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If one looks at the many query_formats callbacks in existence, one will immediately recognize that there is one type of default callback for video and a slightly different default callback for audio: It is "return ff_set_common_formats_from_list(ctx, pix_fmts);" for video with a filter-specific pix_fmts list. For audio, it is the same with a filter-specific sample_fmts list together with ff_set_common_all_samplerates() and ff_set_common_all_channel_counts(). This commit allows to remove the boilerplate query_formats callbacks by replacing said callback with a union consisting the old callback and pointers for pixel and sample format arrays. For the not uncommon case in which these lists only contain a single entry (besides the sentinel) enum AVPixelFormat and enum AVSampleFormat fields are also added to the union to store them directly in the AVFilter, thereby avoiding a relocation. The state of said union will be contained in a new, dedicated AVFilter field (the nb_inputs and nb_outputs fields have been shrunk to uint8_t in order to create a hole for this new field; this is no problem, as the maximum of all the nb_inputs is four; for nb_outputs it is only two). The state's default value coincides with the earlier default of query_formats being unset, namely that the filter accepts all formats (and also sample rates and channel counts/layouts for audio) provided that these properties agree coincide for all inputs and outputs. By using different union members for audio and video filters the type-unsafety of using the same functions for audio and video lists will furthermore be more confined to formats.c than before. When the new fields are used, they will also avoid allocations: Currently something nearly equivalent to ff_default_query_formats() is called after every successful call to a query_formats callback; yet in the common case that the newly allocated AVFilterFormats are not used at all (namely if there are no free links) these newly allocated AVFilterFormats are freed again without ever being used. Filters no longer using the callback will not exhibit this any more. Reviewed-by: Paul B Mahol <onemda@gmail.com> Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avfilter/avfilter: Make ff_tlog_ref() staticAndreas Rheinhardt2021-10-03
| | | | | | | | | It allows compilers to inline the one and only call to this function in its caller or even to optimize it away completely (this function is empty in case TRACE is not defined). Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avfilter/internal: Add AVFILTER_DEFINE_CLASS_EXTAndreas Rheinhardt2021-09-13
| | | | | | | | | | This macro will allow to share options between AVClasses without having to redefine the option name (as is currently done) and will also allow to share the AVClasses itself (which is possible now that AVClass.child_class_next is gone). Reviewed-by: Paul B Mahol <onemda@gmail.com> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avfilter/avfilter: Allow to free non-static pads genericallyAndreas Rheinhardt2021-08-22
| | | | | | | | | | This can be enabled/disabled on a per-pad basis by setting the AVFILTERPAD_FLAG_FREE_NAME flag; variants of ff_append_(in|out)pads that do this for you have been added and will be put to use in the following commits. Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avfilter/internal: Uninline ff_insert_(in|out)pad()Andreas Rheinhardt2021-08-22
| | | | | | | These functions are not hot at all. Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avfilter/avfilter: Add numbers of (in|out)pads directly to AVFilterAndreas Rheinhardt2021-08-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Up until now, an AVFilter's lists of input and output AVFilterPads were terminated by a sentinel and the only way to get the length of these lists was by using avfilter_pad_count(). This has two drawbacks: first, sizeof(AVFilterPad) is not negligible (i.e. 64B on 64bit systems); second, getting the size involves a function call instead of just reading the data. This commit therefore changes this. The sentinels are removed and new private fields nb_inputs and nb_outputs are added to AVFilter that contain the number of elements of the respective AVFilterPad array. Given that AVFilter.(in|out)puts are the only arrays of zero-terminated AVFilterPads an API user has access to (AVFilterContext.(in|out)put_pads are not zero-terminated and they already have a size field) the argument to avfilter_pad_count() is always one of these lists, so it just has to find the filter the list belongs to and read said number. This is slower than before, but a replacement function that just reads the internal numbers that users are expected to switch to will be added soon; and furthermore, avfilter_pad_count() is probably never called in hot loops anyway. This saves about 49KiB from the binary; notice that these sentinels are not in .bss despite being zeroed: they are in .data.rel.ro due to the non-sentinels. Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avfilter/avfilter: Remove unused feature to add pads in the middleAndreas Rheinhardt2021-08-17
| | | | | Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avfilter/internal: Replace AVFilterPad.needs_writable by flagsAndreas Rheinhardt2021-08-17
| | | | | | | It will be useful in the future when more flags are added. Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avfilter/internal: Combine get_(audio|video)_buffer into unionAndreas Rheinhardt2021-08-17
| | | | | | | | These fields are mutually exclusive, so putting them in a union is possible and makes AVFilterPad smaller. Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avfilter/internal: Factor out executing a filter's execute_funcAndreas Rheinhardt2021-08-15
| | | | | | | The current way of doing it involves writing the ctx parameter twice. Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avfilter/internal: Don't include libavcodec/(avcodec|internal).hAndreas Rheinhardt2021-08-05
| | | | | | | | | The reasons for including them don't exist any longer: ff_tlog() has been moved to libavutil/internal.h and FF_QSCALE_TYPE_* has been moved to qp_table.h. Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avfilter/internal: Move ff_norm_qscale() to qp_table.hAndreas Rheinhardt2021-08-05
| | | | | | | It is the natural header for it. Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avfilter/internal: Don't include framepool.h, thread.hAndreas Rheinhardt2021-08-04
| | | | | | | | They are not used by the header at all and only used by very few files; so include the headers in their users instead of in internal.h. Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avfilter/internal: Mark ff_filter_get_nb_threads() as av_pureAndreas Rheinhardt2021-07-18
| | | | | | | | | | | It does not modify anything; it only returns a value, so it fulfills the requirements for av_pure. The deeper rationale behind this change is that this function is called quite often inside arguments to FFMIN which may lead to two calls to it; declaring this function as av_pure allows the compiler to optimize the second call away. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avfilter/avfilter: mark enable as runtime option tooPaul B Mahol2021-02-03
|
* avfilter/formats: Remove unused functionsAndreas Rheinhardt2020-08-21
| | | | | | | | | | | | | | This commit removes ff_parse_sample_format(), ff_parse_time_base() and ff_query_formats_all_layouts() from libavfilter/formats.c. All of these functions were completely unused. ff_parse_time_base() has not been used at all since it had been added in 3448404a707b6e236a2ffa7b0453b3300de41b7b; the last caller of ff_parse_sample_format has been removed in commit d1c49bcae9b7fd41df5c6804ac7f6a5c271a7c2e. And the one and only caller of ff_query_formats_all_layouts() (the asyncts filter) has been removed in commit a8fe8d6b4a35c95aa94fccde5f001041278d197c. Reviewed-by: Nicolas George <george@nsup.org> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
* lavfi: remove needs_fifo.Nicolas George2020-08-20
|
* avfilter: add D2TS, TS2D, TS2T as a common macro in internal.hLimin Wang2020-06-19
| | | | Signed-off-by: Limin Wang <lance.lmwang@gmail.com>
* lavfi: remove AVFilterPad.poll_frame().Nicolas George2019-12-23
| | | | This design is no longer used and was replaced a long time ago.
* lavfi: remove ff_poll_frame().Nicolas George2019-12-23
| | | | It is never used.
* avfilter/avfilter: add ff_filter_process_command()Paul B Mahol2019-10-14
|
* Merge commit '6d86cef06ba36c0ed591e14a2382e9630059fc5d'Mark Thompson2018-02-12
|\ | | | | | | | | | | | | * commit '6d86cef06ba36c0ed591e14a2382e9630059fc5d': lavfi: Add support for increasing hardware frame pool sizes Merged-by: Mark Thompson <sw@jkqxz.net>
| * lavfi: Add support for increasing hardware frame pool sizesMark Thompson2018-02-11
| | | | | | | | | | AVFilterContext.extra_hw_frames functions identically to the field of the same name in AVCodecContext.
* | avfilter: remove duplicate and disabled trace log functionJames Almer2017-09-01
| | | | | | | | | | | | | | It's already defined and actually enabled depending on compiler options elsewhere. Signed-off-by: James Almer <jamrial@gmail.com>
* | avfilter: remove usage of empty headerPaul B Mahol2017-06-26
| | | | | | | | Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | Merge commit 'e3fb74f7f9a8f1895381355f40c92cac3c1023d9'Matthieu Bouron2017-03-30
|\| | | | | | | | | | | | | * commit 'e3fb74f7f9a8f1895381355f40c92cac3c1023d9': lavfi: Always propagate hw_frames_ctx through links Merged-by: Matthieu Bouron <matthieu.bouron@gmail.com>
| * lavfi: Always propagate hw_frames_ctx through linksMark Thompson2016-11-02
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also adds a new flag to mark filters which are aware of hwframes and will perform this task themselves, and marks all appropriate filters with this flag. This is required to allow software-mapped hardware frames to work, because we need to have the frames context available for any later mapping operation in the filter graph. The output from the filter graph should only propagate further to an encoder if the hardware format actually matches the visible format (mapped frames are valid here and have an hw_frames_ctx, but this should not be given to the encoder as its hardware context).
* | lavfi: make two functions static.Nicolas George2017-01-12
| | | | | | | | | | ff_request_frame_to_filter() and ff_filter_frame_to_filter() are only used in avfilter.c.
* | lavfi: disallow ff_request_frame for filters using activate.Nicolas George2017-01-12
| | | | | | | | | | Having two different functions allows to have stricter tests and detect errors earlier.
* | lavfi: make filter_frame non-recursive.Nicolas George2016-12-18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A lot of changes happen at the same time: - Add a framequeue fifo to AVFilterLink. - split AVFilterLink.status into status_in and status_out: requires changes to the few filters and programs that use it directly (f_interleave, split, filtfmts). - Add a field ready to AVFilterContext, marking when the filter is ready and its activation priority. - Add flags to mark blocked links. - Change ff_filter_frame() to enqueue the frame. - Change all filtering functions to update the ready field and the blocked flags. - Update ff_filter_graph_run_once() to use the ready field. - buffersrc: always push the frame immediately.
* | avfilter: add ff_filter_get_nb_threads()Paul B Mahol2016-08-29
| |
* | avfilter: update some commentsPaul B Mahol2016-01-24
| | | | | | | | | | | | start_frame is no more, samplesref argument is now frame argument. Signed-off-by: Paul B Mahol <onemda@gmail.com>
* | lavfi: make request_frame() non-recursive.Nicolas George2015-12-22
| | | | | | | | | | | | | | Instead of calling the input filter request_frame() method, ff_request_frame() now marks the link and returns immediately. buffersink is changed to activate the marked filters until a frame is obtained.
* | lavfi: replace link.closed by link.status.Nicolas George2015-12-22
| | | | | | | | | | | | The status field can carry any error code instead of just EOF. Also only update it through a wrapper function and provide a timestamp. Update the few filters that used it directly.
* | lavfi: use a video frame pool for each link of the filtergraphMatthieu Bouron2015-12-15
| |
* | avfilter/internal: Doxygen for ff_fmt_is_inGanesh Ajjanagadde2015-10-17
| | | | | | | | | | | | | | This clarifies and adds Doxygen for ff_fmt_is_in. Reviewed-by: Timothy Gu <timothygu99@gmail.com> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
* | avfilter/internal: add av_warn_unused_resultGanesh Ajjanagadde2015-10-17
| | | | | | | | | | | | | | | | | | av_warn_unused_result is added to functions whose return status should be checked. Currently does not trigger any warnings, but should be useful for future robustness. Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Ganesh Ajjanagadde <gajjanagadde@gmail.com>
* | lavfi: remove FF_LINK_FLAG_REQUEST_LOOP.Nicolas George2015-09-20
| | | | | | | | It has no longer any effect.
* | lavfi: drop the requirement that request_frame returns a frame.Nicolas George2015-09-20
| | | | | | | | | | | | | | | | It requires a loop in filters or the framework, that makes the scheduling less efficient and more complex. This is purely an internal change since the loop is now present in buffersink. Note that no filter except buffersink did rely on the requirement.
* | Remove left-over FF_API_AVFILTERBUFFER cruftHendrik Leppkes2015-09-05
| |
* | Merge commit 'f6974fe651d29ef6eb68d66d73f7b6c011062aa0'Hendrik Leppkes2015-09-05
|\| | | | | | | | | | | | | * commit 'f6974fe651d29ef6eb68d66d73f7b6c011062aa0': lavfi: Drop deprecated AVFilterBuffer* code Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * lavfi: Drop deprecated AVFilterBuffer* codeVittorio Giovara2015-08-28
| | | | | | | | Deprecated in 11/2012.
* | Merge commit 'e65e4cbbda03ca3c9087f069c9867d518415fca1'Hendrik Leppkes2015-09-05
|\| | | | | | | | | | | | | * commit 'e65e4cbbda03ca3c9087f069c9867d518415fca1': lavfi: Drop deprecated *_count suffixed variables Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * lavfi: Drop deprecated *_count suffixed variablesVittorio Giovara2015-08-28
| | | | | | | | Deprecated in 06/2012.
* | Merge commit '86e5056575f55f070609dd3926605302f7d2280e'Hendrik Leppkes2015-09-05
|\| | | | | | | | | | | | | * commit '86e5056575f55f070609dd3926605302f7d2280e': lavfi: Drop deprecated public AVFilterPad struct Merged-by: Hendrik Leppkes <h.leppkes@gmail.com>
| * lavfi: Drop deprecated public AVFilterPad structVittorio Giovara2015-08-28
| | | | | | | | Deprecated in 06/2012.
| * Replace av_dlog with normal av_log at trace levelVittorio Giovara2015-04-19
| | | | | | | | This applies to every library where performance is not critical.
* | avfilter: add missing FF_API_AVFILTERBUFFER guardsAndreas Cadhalpun2015-08-30
| | | | | | | | | | Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com>