1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-28 20:53:54 +02:00
Commit Graph

3765 Commits

Author SHA1 Message Date
Paul B Mahol
253e155251 lavfi/crop: support more pixel formats
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2013-07-04 11:46:06 +00:00
Jean Delvare
f0bcb13aed lavfi/delogo: avoid propagation of rounding errors in chroma planes
When operating on subsampled chroma planes, some rounding is taking
place. The left and top borders are rounded down while the width and
height are rounded up, so all rounding is done outward to guarantee the
logo area is fully covered.

The problem is that the width and height are counted from the
unrounded left and top borders, respectively. So if the left or top
border position has indeed been rounded down, and the width or height
needs no rounding (up), the position of the the right or bottom border
will be effectively rounded down, i.e. inward.

The issue can easily be seen with a yuv240p input and
  -vf delogo=45:45:60:40:show=1 -vframes 1 delogo-bug.png
(or virtually any logo area with odd x and y and even width and
height.) The right and bottom chroma borders (in green) are clearly
off.

In order to fix this, the width and height must be adjusted to include
the bits lost in the rounding of the left and top border positions,
respectively, prior to being themselves rounded up.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-07-03 23:10:57 +02:00
Jean Delvare
99f1d74933 lavfi/delogo: take SAR into account
When interpolating, weights are based on relative distances, which
assume square pixels. If a non-1:1 sample aspect ratio is used, it
should be taken into account when comparing distances, because the
human eye and brain care about the picture as it is displayed, not
stored.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-07-03 23:10:46 +02:00
Stefano Sabatini
838bd73139 lavfi: create Libav-API compatibility layer for avfilter_graph_parse() at 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.
2013-07-03 13:21:42 +02:00
Jean Delvare
16fd75ceec lavfi/delogo: use weighted interpolation
The original delogo algorithm interpolates both horizontally and
vertically and uses the average to compute the resulting sample. This
works reasonably well when the logo area is almost square. However
when the logo area is significantly larger than high or higher than
large, the result is largely suboptimal.

The issue can be clearly seen by testing the delogo filter with a fake
logo area that is 200 pixels large and 2 pixels high. Vertical
interpolation gives a very good result in that case, horizontal
interpolation gives a very bad result, and the overall result is poor,
because both are given the same weight.

Even when the logo is roughly square, the current algorithm gives poor
results on the borders of the logo area, because it always gives
horizontal and vertical interpolations an equal weight, and this is
suboptimal on borders. For example, in the middle of the left hand
side border of the logo, you want to trust the left known point much
more than the right known point (which the current algorithm already
does) but also much more than the top and bottom known points (which
the current algorithm doesn't do.)

By properly weighting each known point when computing the value of
each interpolated pixel, the visual result is much better, especially
on borders and/or for high or large logo areas.

The algorithm I implemented guarantees that the weight of each of the
4 known points directly depends on its distance to the interpolated
point. It is largely inspired from the original algorithm, the key
difference being that it computes the relative weights globally
instead of separating the vertical and horizontal interpolations and
combining them afterward.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Stefano Sabatini <stefasab@gmail.com>
2013-07-01 09:33:33 +02:00
Carl Eugen Hoyos
674d8a9629 Rename thread_init() in libavcodec and libavfilter as library_thread_init().
The aix header sys/thread.h contains a definition for thread_init().
2013-06-30 13:47:45 +02:00
Carl Eugen Hoyos
33f5d70df5 Rename constant HZ in af_biquads.c as HERTZ.
The aix header sys/m_param.h defines HZ as _HZ.
2013-06-30 13:47:45 +02:00
Michael Niedermayer
2236456715 avfilter/avfilter: Make avfilter_register() thread safe
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-28 12:44:03 +02:00
Michael Niedermayer
ef90639004 avfilter/vf_mp: preserve pixel format when possible
Fixes Ticket2577

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-28 03:32:00 +02:00
Michael Niedermayer
ee97982408 avfilter/src_movie: Fix handling of packet size for video
See Ticket2556

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-26 13:46:19 +02:00
Michael Niedermayer
87bc648930 libavfilter/src_movie: fix which packet is reset
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-26 13:06:11 +02:00
Michael Niedermayer
73215fe30a vf_drawbox: give all v_log() a context
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-26 00:54:08 +02:00
Michael Niedermayer
47da9b2c51 vf_drawbox: avoid declaration in for() arguments
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-26 00:52:16 +02:00
Michael Niedermayer
f1efaf8371 Merge branch 'drawbox_exprs' of https://github.com/mjmvisser/FFmpeg
* 'drawbox_exprs' of https://github.com/mjmvisser/FFmpeg:
  enabled expressions on x, y, w, h and t parameters for drawgrid and drawbox, added examples

Reviewed-by: Andrey Utkin
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-26 00:33:41 +02:00
Mark Visser
84f571e37f enabled expressions on x, y, w, h and t parameters for drawgrid and drawbox, added examples 2013-06-25 11:38:59 -04:00
Michael Niedermayer
015cc3239a lavfi/movie: free packet on decoder error
Prevents infinite loop, see Ticket2556

Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-25 13:37:40 +02:00
Michael Niedermayer
8a7aabe80b avfilter/vsrc_testsrc: fix artifacts with odd height
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-24 23:21:17 +02:00
Michael Niedermayer
5d509fbdcf Merge commit 'eeeb5c291d3f78eaade5b99c2614c7cab0e9be79'
* commit 'eeeb5c291d3f78eaade5b99c2614c7cab0e9be79':
  vsrc_movie: do not free avoption variables in uninit()

Conflicts:
	libavfilter/src_movie.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-21 10:41:41 +02:00
Anton Khirnov
eeeb5c291d vsrc_movie: do not free avoption variables in uninit()
The generic code frees them as well. Since av_free was used to free them
instead of av_freep, this would result in a double free.
2013-06-20 13:27:14 +02:00
Jean Delvare
b08cd2fb94 delogo: Fix function description
The algorithm works on src and writes to dst, not the other way
around.

Signed-off-by: Jean Delvare <khali@linux-fr.org>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-19 22:13:12 +02:00
Michael Niedermayer
209cb8afe0 Merge remote-tracking branch 'qatar/master'
* qatar/master:
  lavfi: switch ff_default_get_audio_buffer() to av_frame_get_buffer()

Conflicts:
	libavfilter/audio.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-19 08:27:35 +02:00
Michael Niedermayer
602d0bfe67 Merge branch 'frame_num_offset' of https://github.com/mjmvisser/FFmpeg
Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-19 01:25:50 +02:00
Mark Visser
2090abcc43 add the start_number offset to var_values[VAR_N] directly, instead of adding it in func_frame_num 2013-06-18 17:38:17 -04:00
Anton Khirnov
c9c7bc4493 lavfi: switch ff_default_get_audio_buffer() to av_frame_get_buffer()
This simplifies the code and avoids using libavcodec-specific
avcodec_fill_audio_frame().
2013-06-18 11:21:16 +02:00
Michael Niedermayer
e41bf19d2c Merge remote-tracking branch 'qatar/master'
* qatar/master:
  lavfi: math typo in interlace filter

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-18 09:31:05 +02:00
Alexander Strasser
ac604e446b lavfi/src_movie: Use movie_common_init instead individual wrappers
Makes it easier to understand that there is no difference in init
callback for movie and amovie. Also saves a few lines of code.

Signed-off-by: Alexander Strasser <eclipse7@gmx.net>
2013-06-18 00:02:30 +02:00
Alexander Strasser
c679a1c358 lavfi/src_movie: Check pointer is not NULL before deref
Also do not check against empty string, the lower levels should
be able to deal with it.

Signed-off-by: Alexander Strasser <eclipse7@gmx.net>
2013-06-18 00:02:30 +02:00
Vittorio Giovara
cd0faeee62 lavfi: math typo in interlace filter
Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
2013-06-17 12:25:43 +02:00
Mark Visser
0defc77e9d added start_number parameter to drawtext to permit an offset to n/frame_num var 2013-06-14 17:05:19 -04:00
Clément Bœsch
147adf2c4f lavfi/spp: fix description. 2013-06-14 06:53:52 +02:00
Jean Delvare
cef42ded8d drawbox: Respect thickness parameter
The drawbox video filter is drawing lines one pixel thinner than
requested. The default thickness is 4 pixel but in fact the lines
drawn by default are only 3 pixel wide.

Change the comparisons in the code to fix this off-by-one bug. Also
change the default thickness from 4 to 3 to minimize the unexpected
changes from the user's perspective.

As I was already touching these lines, I also removed the "maximum" in
the thickness parameter description, as I don't think it was adding
any value and I even found it confusing.

Reviewed-by: Andrey Utkin <andrey.krieger.utkin@gmail.com>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-14 03:52:32 +02:00
Clément Bœsch
852f74bd85 lavfi/mp: remove mp=spp.
The filter was ported to a native libavfilter filter.
2013-06-14 01:27:22 +02:00
Clément Bœsch
a2c547ffec lavfi: add spp filter. 2013-06-14 01:27:22 +02:00
Stefano Sabatini
e0135a4bcd lavfi/rotate: add angle command 2013-06-13 01:21:47 +02:00
Stefano Sabatini
dc5e26d67f lavfi: add rotate filter
Based on the libavfilter SOC filter by Vitor Sessak, with the following additions:
* integer arithmetic
* bilinear interpolation
* RGB path
* configurable parametric angle, output width and height

Address trac issue #1500.

See thread:
Subject: [FFmpeg-devel] [WIP] rotate filter(s)
Date: 2010-10-03 17:35:49 GMT
2013-06-13 01:21:47 +02:00
Michael Niedermayer
d3e89f2641 vf_sab: Fix memleak
Fixes CID1030353
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-10 22:00:43 +02:00
Clément Bœsch
b77e58aad3 lavfi/pp: set out frame size.
w/h from input frame are not copied in av_frame_copy_props(). This
commit avoids a mismatch between aligned_[wh] and outbuf->{width,height}
(and thus avoids triggering an assert in avfilter because of this).
2013-06-08 23:23:30 +02:00
Clément Bœsch
f97e28ebe5 lavfi/lut3d: add sanity checks.
Should fix CID1026775 and CID1026774.
2013-06-07 01:48:41 +02:00
Paul B Mahol
3554238863 lavfi/il: add timeline support
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2013-06-06 17:44:54 +00:00
Paul B Mahol
7d01533371 lavfi/framestep: cosmetics: reindent AVFilter
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2013-06-06 17:19:16 +00:00
Paul B Mahol
27d3d61343 lavfi/framestep: add timeline support
Signed-off-by: Paul B Mahol <onemda@gmail.com>
2013-06-06 17:17:14 +00:00
Michael Niedermayer
2280b539c5 Merge commit '8b7dffc2d6c6c19f8e0a1fedcd0e95dce7a273ff'
* commit '8b7dffc2d6c6c19f8e0a1fedcd0e95dce7a273ff':
  lavfi doxy: improve/extend AVFilter doxy.

Conflicts:
	libavfilter/avfilter.h

Merged-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-05 12:05:41 +02:00
Stefano Sabatini
449558d34a lavfi/mp: remove mp=sab
The filter was ported to a native libavfilter filter.
2013-06-05 00:06:51 +02:00
Stefano Sabatini
841df7bf86 lavfi: port sab filter from libmpcodecs 2013-06-05 00:06:51 +02:00
Anton Khirnov
8b7dffc2d6 lavfi doxy: improve/extend AVFilter doxy. 2013-06-04 17:18:33 +02:00
Michael Niedermayer
43487bc5c1 avfilter/vf_mcdeint: free frame on error
Fixes CID1026766
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-03 15:41:29 +02:00
Michael Niedermayer
3ed56b3b39 avfilter/process_options: fix memleak
Fixes CID1026765
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-03 15:26:50 +02:00
Michael Niedermayer
7e7d090907 avfilter/af_astats: rename stat()
See CID1026741
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
2013-06-03 14:59:52 +02:00
Nicolas George
50a4d076ce lavfi/trim: mark link closed on EOF.
Fix trac ticket #2620.
2013-06-02 23:19:42 +02:00
Stefano Sabatini
ec34963276 lavfi/mp: drop mcdeint wrapper
It was ported to a native libavfilter filter.
2013-06-01 22:35:20 +02:00