summaryrefslogtreecommitdiff
path: root/libavfilter
Commit message (Collapse)AuthorAge
* lavfi/vf_vpp_qsv: set the right timestamp for AVERROR_EOFHaihao Xiang2023-03-20
| | | | | | | | | Rescale the timestamp for AVERROR_EOF. This can fix tickets 10261 and 10262. Tested-by: Dmitry Rogozhkin <dmitry.v.rogozhkin@intel.com> Signed-off-by: Haihao Xiang <haihao.xiang@intel.com> (cherry picked from commit 57afccc0ef8d3024ffb2d1b2d25c9670b9501248)
* avfilter/vf_untile: swap the chroma shift values used for plane offsetsJames Almer2023-03-16
| | | | | | | Fixes ticket #10265 Signed-off-by: James Almer <jamrial@gmail.com> (cherry picked from commit dc61d5cf195bc6de9263883c42a58348863e6d4f)
* avfilter/graphparser: fix filter instance name when an id is providedJames Almer2023-03-06
| | | | | | | | | | Restores the behavior of naming the instance filter@id, which was accidentally changed to simpy id in commit f17051eaae. Fixes ticket #10226. Signed-off-by: James Almer <jamrial@gmail.com> (cherry picked from commit 2fd86d9afadf9b62c2e900505558141a35e2ed6f)
* avfilter/af_pan: use the new swr used channel layout optionJames Almer2023-02-19
| | | | | | | Fixes ticket #10180 Signed-off-by: James Almer <jamrial@gmail.com> (cherry picked from commit 4561232b1a36b7f8532c7939e4a508734053f6f0)
* version.h: Bump minor for 6.0 branchMichael Niedermayer2023-02-19
| | | | Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
* avfilter/vf_libplacebo: add SMPTE ST2094 tone-mappersNiklas Haas2023-02-17
| | | | libplacebo gained these exciting new functions upstream.
* libavfilter/qsvvpp: check the return valueWenbin Chen2023-02-16
| | | | Signed-off-by: Wenbin Chen <wenbin.chen@intel.com>
* avfilter: add QSV variants of the stack filtersHaihao Xiang2023-02-16
| | | | | | | | | | | | | | | | | | | Include hstack_qsv, vstack_qsv and xstack_qsv. They may accept input streams with different sizes. Examples: $ ffmpeg -hwaccel qsv -hwaccel_output_format qsv -i input.mp4 \ -filter_complex "[0:v][0:v]hstack_qsv" -f null - $ ffmpeg \ -hwaccel qsv -hwaccel_output_format qsv -i input.mp4 \ -hwaccel qsv -hwaccel_output_format qsv -i input.mp4 \ -hwaccel qsv -hwaccel_output_format qsv -i input.mp4 \ -hwaccel qsv -hwaccel_output_format qsv -i input.mp4 \ -filter_complex "[0:v][1:v][2:v][3:v]xstack_qsv=inputs=4:fill=0x000000:layout=0_0_1920x1080|w0_0_1920x1080|0_h0_1920x1080|w0_h0_1920x1080" \ -f null - Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
* lavfi/vf_stack_vaapi: factor out the common code for stack settingHaihao Xiang2023-02-16
| | | | | | The common code will be used in QSV based stack filters. Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
* vf_yadif: Remove unused emms_cKieran Kunhya2023-02-14
|
* avfilter: use ff_inlink_make_frame_writable()Paul B Mahol2023-02-12
|
* lavfi/graphparser: reimplement avfilter_graph_parse* using new APIAnton Khirnov2023-02-12
|
* lavfi: add a new filtergraph parsing APIAnton Khirnov2023-02-12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Callers currently have two ways of adding filters to a graph - they can either - create, initialize, and link them manually - use one of the avfilter_graph_parse*() functions, which take a (typically end-user-written) string, split it into individual filter definitions+options, then create filters, apply options, initialize filters, and finally link them - all based on information from this string. A major problem with the second approach is that it performs many actions as a single atomic unit, leaving the caller no space to intervene in between. Such intervention would be useful e.g. to - modify filter options; - supply hardware device contexts; both of which typically must be done before the filter is initialized. Callers who need such intervention are then forced to invent their own filtergraph parsing, which is clearly suboptimal. This commit aims to address this problem by adding a new modular filtergraph parsing API. It adds a new avfilter_graph_segment_parse() function to parse a string filtergraph description into an intermediate tree-like representation (AVFilterGraphSegment and its children). This intermediate form may then be applied step by step using further new avfilter_graph_segment*() functions, with user intervention possible between each step.
* lavfi/avfilter: track whether a filter has been initializedAnton Khirnov2023-02-12
| | | | Refuse to link uninitialized filters or initialize a filter twice.
* lavfi/avfilter: export process_options()Anton Khirnov2023-02-12
| | | | | | | Also, replace an AVFilterContext argument with a logging context+private class, as those are the only things needed in this function. Will be useful in future commits.
* lavfi/astats: sort measures keys by nameStefano Sabatini2023-02-11
|
* avfilter/vf_vibrance: reduce copy operationsPaul B Mahol2023-02-11
|
* avfilter/vf_exposure: reduce copy operationsPaul B Mahol2023-02-11
|
* Bump major versions of all librariesJames Almer2023-02-09
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* avfilter: remove FF_API_PAD_COUNTJames Almer2023-02-09
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* avfilter: remove FF_API_BUFFERSINK_ALLOCJames Almer2023-02-09
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* avfilter: remove FF_API_SWS_PARAM_OPTIONJames Almer2023-02-09
| | | | Signed-off-by: James Almer <jamrial@gmail.com>
* Revert "avfilter/af_pan: fix regression introduced with switch to new ↵Paul B Mahol2023-02-09
| | | | | | | | channel layout API" This reverts commit 93a9ee7afd7bf2e019490117f1bada30724a0200. Was not fixing real problem, issue is probably outside of pan filter.
* avfilter/af_compand: simplify frame allocationPaul B Mahol2023-02-08
|
* avfilter/af_compensationdelay: simplify frame allocationPaul B Mahol2023-02-08
|
* avfilter/af_pan: fix regression introduced with switch to new channel layout APIPaul B Mahol2023-02-07
| | | | Fixes #10168
* avfilter/vf_libplacebo: fix format queryNiklas Haas2023-02-07
| | | | | | | | | | | | | | We need to construct the output format list separatedly from the input format list, because we need to adhere to two extra requirements: 1. Big-endian output formats are always unsupported (runtime error) 2. Combining 'vulkan' with an explicit out_format that is not supported by the vulkan frame allocation code is illegal and will crash (abort) As a free side benefit, this rewrite fixes a possible memory leak in the `fail` path that was present in the old code. Signed-off-by: Niklas Haas <git@haasn.dev>
* lavfi/vf_vpp_qsv: add support for new scaling modesHaihao Xiang2023-02-07
| | | | | | The new modes work on new platforms and are avaialable only for oneVPL. Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
* lavfi/vf_vpp_qsv: support UYVY in system memoryHaihao Xiang2023-02-07
| | | | | | | | | It only works on Linux $ ffmpeg -loglevel verbose -init_hw_device qsv=intel -f lavfi -i \ yuvtestsrc -vf "format=uyvy422,vpp_qsv=format=nv12" -f null - Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
* lavfi/deinterlace_qsv: re-use VPPContext for deinterlace_qsv filterHaihao Xiang2023-02-03
| | | | | | | | | | | QSVDeintContext and VPPContext have the same base context, and all features in deinterlace_qsv are implemented in vpp_qsv filter, so deinterlace_qsv can be taken as a special case of vpp_qsv filter, and we may use VPPContext with a different option array, preinit callback and support pixel formats to implement deinterlace_qsv, then remove QSVDeintContext. Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
* lavfi/deinterlace_qsv: simplify deinterlace_qsv filterHaihao Xiang2023-02-03
| | | | | | | Like what we did for scale_qsv filter, we use QSVVPPContext as a base context to manage MFX session for deinterlace_qsv filter. Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
* lavfi/vpp_qsv: add rate optionHaihao Xiang2023-02-03
| | | | | | | This is used to control the output at frame rate or field rate when deinterlace is expected and framerate is not specified. Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
* x86: replace explicit REP_RETs with RETsLynne2023-02-01
| | | | | | | | | | | | | | | | | | | From x86inc: > On AMD cpus <=K10, an ordinary ret is slow if it immediately follows either > a branch or a branch target. So switch to a 2-byte form of ret in that case. > We can automatically detect "follows a branch", but not a branch target. > (SSSE3 is a sufficient condition to know that your cpu doesn't have this problem.) x86inc can automatically determine whether to use REP_RET rather than REP in most of these cases, so impact is minimal. Additionally, a few REP_RETs were used unnecessary, despite the return being nowhere near a branch. The only CPUs affected were AMD K10s, made between 2007 and 2011, 16 years ago and 12 years ago, respectively. In the future, everyone involved with x86inc should consider dropping REP_RETs altogether.
* avfilter/vf_libplacebo: suppress cast warningNiklas Haas2023-01-30
| | | | This warning was introduced when ee65039 removed the cast.
* avfilter/vf_colorlevels: add support for gbrpf32 formatPaul B Mahol2023-01-30
|
* lavfi/vpp_qsv: factor out the code for filter definitionHaihao Xiang2023-01-30
| | | | Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
* lavfi/scale_qsv: re-use VPPContext for scale_qsv filterHaihao Xiang2023-01-30
| | | | | | | | | | QSVScaleContext and VPPContext have the same base context, and all features in scale_qsv are implemented in vpp_qsv filter, so scale_qsv can be taken as a special case of vpp_qsv filter, and we may use VPPContext with a different option array, preinit callback and supported pixel formats to implement scale_qsv then remove QSVScaleContext Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
* lavfi/scale_qsv: simplify scale_qsv filterHaihao Xiang2023-01-30
| | | | | | | | | | | | Use QSVVPPContext as a base context of QSVScaleContext, hence we may re-use functions defined for QSVVPPContext to manage MFX session for scale_qsv filter. In addition, system memory has been taken into account in QSVVVPPContext, we may add support for non-QSV pixel formats in the future. Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
* avfilter: add VA-API variants of the stack filtersHaihao Xiang2023-01-30
| | | | | | | | | | | | | | | | | | | Include hstack_vaapi, vstack_vaapi and xstack_vaapi. They may accept input streams with different sizes. libva2 (VA-API 1.0+) is required. Example: $ ffmpeg -hwaccel vaapi -hwaccel_output_format vaapi -i input.h265 -filter_complex "[0:v][0:v]hstack_vaapi" -c:v h264_vaapi out.h264 $ ffmpeg \ -hwaccel vaapi -hwaccel_output_format vaapi -i input.h264 \ -hwaccel vaapi -hwaccel_output_format vaapi -i input.h264 \ -hwaccel vaapi -hwaccel_output_format vaapi -i input.h264 \ -hwaccel vaapi -hwaccel_output_format vaapi -i input.h264 \ -filter_complex "[0:v][1:v][2:v][3:v]xstack_vaapi=inputs=4:fill=0x000000:layout=0_0_1920x1080|w0_0_1920x1080|0_h0_1920x1080|w0_h0_1920x1080" \ -c:v hevc_vaapi out.h265 Signed-off-by: Haihao Xiang <haihao.xiang@intel.com>
* avfilter/vf_ssim360: Constify AVFilterAndreas Rheinhardt2023-01-28
| | | | | | | | This brings ff_vf_ssim360 in line with its declaration in allfilters.c; this discrepancy is actually undefined behaviour. Reviewed-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avfilter/vf_ssim360: Don't initialize twiceAndreas Rheinhardt2023-01-28
| | | | | | | | | | The FILTER_INPUTS and FILTER_OUTPUTS macros already set AVFilter.(inputs|outputs); Clang therefore emits a warning for this: "initializer overrides prior initialization of this subobject [-Winitializer-overrides]" Reviewed-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* avfilter/vf_ssim360: Fix left-shift of negative valueAndreas Rheinhardt2023-01-28
| | | | | Reviewed-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
* lavfi/vf_ssim360: Fix compilation with MSVCMartin Storsjö2023-01-28
| | | | | | | | | Don't use "static const" for compile time float constants, but use defines. This fixes the following error: src/libavfilter/vf_ssim360.c(549): error C2099: initializer is not a constant Signed-off-by: Martin Storsjö <martin@martin.st>
* lavfi: Add vf_ssim360 filterShannon Chen2023-01-28
| | | | | | | | | | | | | Customized SSIM for various projections (and stereo formats) of 360 images and videos. Further contributions by: Ashok Mathew Kuruvilla Matthieu Patou Yu-Hui Wu Anton Khirnov Suggested-By: ffmpeg@fb.com Signed-off-by: Anton Khirnov <anton@khirnov.net>
* avfilter/f_reverse: set output frame durationPaul B Mahol2023-01-27
|
* avfilter/vf_ciescope: set output frame durationPaul B Mahol2023-01-27
|
* avfilter/vf_tpad: set output frame durationPaul B Mahol2023-01-27
|
* avfilter/vf_random: set output frame durationPaul B Mahol2023-01-27
|
* avfilter/vf_datascope: call av_frame_copy_props()Paul B Mahol2023-01-27
|
* avfilter/af_adynamicequalizer: add auto optionPaul B Mahol2023-01-27
|