summaryrefslogtreecommitdiffstats
path: root/video/filter
Commit message (Collapse)AuthorAgeFilesLines
* vf_eq: remove slow inline asmwm42014-04-191-75/+0
| | | | | Compiled with -O2, the C code runs just as far (or even slightly faster) then the MMX inline asm.
* vf_vapoursynth: handle destruction more gracefullywm42014-04-141-7/+8
| | | | | | | | | | | | | | We were relying on vsscript_freeScript() to take care of proper termination. But it doesn't do that: it doesn't wait for the filters to finish and exit at all. Instead, it just destroys all objects, which causes the worker threads to crash sometimes. Also, we're supposed to wait for the frame callback to finish before freeing the associated node. Handle this by explicitly waiting as far as we can. Probably fixes crashes on seeking, although VapourSynth itself might also need some work to make this case completely stable.
* vf_vapoursynth: wipe vapoursynth state completely on reloadingwm42014-04-141-40/+55
| | | | | | | | Before this commit, the filter attempted to keep the vsscript state (p->se) even when the script was reloaded. Change it to destroy the script state too on reloading. Now no workaround for LoadPlugin is necessary, and this also fixes a weird theoretical race condition when destroying and recreating the mpv source filter.
* Kill all tabswm42014-04-1314-1366/+1366
| | | | | | | | | | | I hate tabs. This replaces all tabs in all source files with spaces. The only exception is old-makefile. The replacement was made by running the GNU coreutils "expand" command on every file. Since the replacement was automatic, it's possible that some formatting was destroyed (but perhaps only if it was assuming that the end of a tab does not correspond to aligning the end to multiples of 8 spaces).
* vf_lavfi: copy AVFrame metadata into vf_lavfi privKevin Mitchell2014-04-132-0/+21
| | | | | | | | store it as mp_tas and add VFCTRL_GET_METADATA to access it from elsewhere Signed-off-by: wm4 <wm4@nowhere> old-configure test by wm4.
* vf_lavfi: fix ffmpeg deprecation warning for avfilter_graph_parseKevin Mitchell2014-04-131-1/+1
| | | | use avfilter_graph_parse_ptr for ffmpeg
* vf: auto-label video filters if no label is specifiedKevin Mitchell2014-04-131-1/+12
| | | | Signed-off-by: wm4 <wm4@nowhere>
* vf: add vf_control_by_label to send vfctrl to specific filterKevin Mitchell2014-04-132-0/+12
|
* vf_vapoursynth: print an error if VapourSynth returns an unknown formatwm42014-04-131-0/+1
| | | | | Apparently there is no real format negotiation, so this can actually happen.
* vf_vapoursynth: error out early if the file sub-option is not setwm42014-04-131-0/+4
| | | | Instead of crashing by possibly passing a NULL pointer to VapourSynth.
* video: add VapourSynth filter bridgewm42014-04-122-0/+480
| | | | | | | | | | | | Mainly meant to apply simple VapourSynth filters to video at runtime. This has various restrictions, which are listed in the manpage. Additionally, this actually copies video frames when converting frame references from mpv to VapourSynth, and a second time when going from VapourSynth to mpv. This is inefficient and could probably be easily improved. But for now, this is simpler, and in fact I'm not sure if we even can references VapourSynth frames after the core has been destroyed.
* vf_eq: don't malloc priv structwm42014-03-301-1/+0
| | | | | There wasn't any reason for this. In fact, it's a memory leak. The proper priv struct is already allocated vf.c and the option parser.
* vaapi: make struct va_surface privatewm42014-03-171-11/+11
| | | | | | It's not really needed to be public. Other code can just use mp_image. The only disadvantage is that the other code needs to call an accessor to get the VASurfaceID.
* vaapi: replace image pool implementation with mp_image_poolwm42014-03-171-17/+26
| | | | | | | | | | | | Although I at first thought it would be better to have a separate implementation for hwaccels because the difference to software images are too large, it turns out you can actually save some code with it. Note that the old implementation had a small memory management bug. This got painted over in commit 269c1e1, but is hereby solved properly. Also note that I couldn't test vf_vavpp.c (due to lack of hardware), and I hope I didn't accidentally break it.
* vf_delogo: remove internal implementationwm42014-03-161-249/+2
| | | | See previous commit.
* vf_hqdn3d: remove internal implementationwm42014-03-161-276/+10
| | | | See previous commit.
* vf_yadif: remove internal implementationwm42014-03-161-467/+3
| | | | See previous commit.
* vf_unsharp: remove internal implementationwm42014-03-161-176/+3
| | | | See previous commit.
* vf_gradfun: remove internal implementationwm42014-03-161-339/+5
| | | | | | | This follows the (only slowly progressing) plan to replace all internal video filters with libavfilter. All what's left in vf_gradfun.c is the weird wrapper around vf_lavfi.c.
* build: simplify libavfilter configure checkswm42014-03-162-2/+2
| | | | | This is all not needed anymore. In particular, remove all configure switches except --enable-libavfilter.
* Remove some more unneeded version checkswm42014-03-161-12/+2
| | | | | All of these check against things that happened before the latest supported FFmpeg/Libav release.
* video: add rounding to aspect ratio calculationswm42014-02-191-2/+2
| | | | | Small errors are unavoidable, but truncation can cause anamorphic video to be off by 1 or 2 pixels.
* msg: remove global statewm42013-12-211-1/+0
|
* msg: rename mp_msg_log -> mp_msgwm42013-12-211-9/+9
| | | | Same for companion functions.
* m_option: add mp_log context to sub-module print_help callbackwm42013-12-213-11/+9
|
* m_option, m_config: mp_msg conversionswm42013-12-211-1/+1
| | | | | | | | Always pass around mp_log contexts in the option parser code. This of course affects all users of this API as well. In stream.c, pass a mp_null_log, because we can't do it properly yet. This will be fixed later.
* vaapi: mp_msg conversionswm42013-12-211-29/+36
| | | | | | This ended up a little bit messy. In order to get a mp_log everywhere, mostly make use of the fact that va_surface already references global state anyway.
* sws_utils: mp_msg conversionswm42013-12-211-0/+1
| | | | | | This requires the caller to provide a mp_log in order to see error messages. Unfortunately we don't do this in most places, but I guess we have to live with it.
* video/filter: mp_msg conversionswm42013-12-2116-121/+102
|
* vf_lavfi: don't access AVFilterPad directlywm42013-12-181-2/+3
| | | | Direct access is deprecated.
* Split mpvcore/ into common/, misc/, bstr/wm42013-12-1731-42/+42
|
* Move options/config related files from mpvcore/ to options/wm42013-12-1726-33/+33
| | | | | | | | | Since m_option.h and options.h are extremely often included, a lot of files have to be changed. Moving path.c/h to options/ is a bit questionable, but since this is mainly about access to config files (which are also handled in options/), it's probably ok.
* Replace mp_tmsg, mp_dbg -> mp_msg, remove mp_gtext(), remove set_osd_tmsgwm42013-12-162-5/+5
| | | | | | | | | The tmsg stuff was for the internal gettext() based translation system, which nobody ever attempted to use and thus was removed. mp_gtext() and set_osd_tmsg() were also for this. mp_dbg was once enabled in debug mode only, but since we have log level for enabling debug messages, it seems utterly useless.
* vf_dsize: fix bug caused by typowm42013-12-141-1/+1
|
* video: move VO reinit from filter chain to playerwm42013-12-103-117/+34
| | | | | | | | | This gets rid of the vf_vo pseudo-filter. It ends the idea of MPlayer's architecture that the VO is just a (terminating) video filter. It didn't really work for us with respect to video timing (the "end" of the video chain isn't really made for video timing, and making it do so would be awkward), and now we're removing it entirely. We will be able to fix some things, such as properly draining video on reconfiguration.
* video: move handling of brightness and deinterlacing controlwm42013-12-101-27/+0
| | | | | Handling of brightness/gamma/saturation/etc. and deinterlacing is moved from vf_vo.c to dec_video.c.
* vf_vo: remove VO reset on filter uninitwm42013-12-101-5/+0
| | | | | | I don't think this has any reason to exist. It's likely that this used to be required by the old direct rendering infrastructure. (See git blame output.)
* vf: redo conversion filter insertion/format negotiationwm42013-12-076-175/+187
| | | | | | | | | | | | | | | | | Remove the inconsistent, duplicated, and insufficient scale filter insertion code, and do it in one place instead. This also compensates for the earlier removal of vf_match_csp() (which was in fact duplicated code). The algorithm to determine where to insert a filter etc. is probably the same, though it also comes with some changes that should make debugging easier when trying to figure out why a chain is failing to configure. Add an "in" pseudo filter, which makes insertion of conversion filters easier. Also change the vf->reconfig signature. At a later point, I'll probably change format negotiation such that the generic filter code will choose the output format, so having separate in and out params will be useful.
* video/filter: make vf->control non-recursivewm42013-12-0712-32/+27
| | | | | | Reason: I never liked it being recursive. Generally, this seems to cause more problems than trouble, and is less flexible for access outside of the chain.
* vf: remove flags from filter format statuswm42013-12-074-37/+25
| | | | | | | | I don't think we need these flags anymore. Simplify the code and get rid of the vf_format struct. There still is the vf_format.configured field, but this can be replaced by checking for a valid image format.
* video: create a separate context for video filter chainwm42013-12-074-85/+164
| | | | | | This adds vf_chain, which unlike vf_instance refers to the filter chain as a whole. This makes the filter API less awkward, and will allow handling format negotiation better.
* video/filter: remove vf_match_csp()wm42013-12-076-119/+4
| | | | | | | | | This function improves automatic filter insertion, but this really should be done by the generic filter code. Remove vf_match_csp() and all code using it as preparation for that. This commit temporarily makes handling of filter insertion worse for now, but it will be fixed with the following commits.
* vf: remove unused functionwm42013-12-072-23/+0
|
* vf: print error when creating filter failswm42013-12-071-0/+1
| | | | Before that we relied on the filters printing their own error messages.
* vf: declare config() as legacywm42013-12-051-5/+5
|
* video/filter: remove unneeded config callbackswm42013-12-055-45/+0
| | | | | | | | They didn't do anything. vf_screenshot.c actually did release the previous image, but that's not really required. At worst you could take a screenshot and get an old frame when there's no new frame yet.
* video: remove --flipwm42013-12-051-1/+0
| | | | | | | | | | | | | | | | The --flip option flipped the image upside-down, by trying to use VO support, or if not available, by inserting a video filter. I'm not sure why it existed. Maybe it was important in ancient times when VfW based decoders output an image this way (but even then, flipping an image is a free operation by negating the stride). One nice thing about this is that it provided a possible path for implementing video orientation, which is a feature we should probably support eventually. The important part is that it would be for free for VOs that support it, and would work even with hardware decoding. But for now get rid of it. It's useless, trivial, stands in the way, and supporting video orientation would require solving other problems first.
* vf: move norm_qscale() to the only filter which uses itwm42013-12-052-15/+15
|
* vf_sub, vf_dlopen: default struct is not neededwm42013-12-052-7/+3
|
* vf: cleanup removed filter entrywm42013-12-051-1/+0
|
* video/filter: fix some bogus free() callswm42013-12-054-8/+0
| | | | The generic filter code frees these; recent regression.
* options: remove legacy hacks for sub-option handlingwm42013-12-041-17/+8
|
* vf_noise: reduce binary sizewm42013-12-041-4/+1
| | | | Same issues as in previous commit.
* vf_eq: revert unintended binary size increasewm42013-12-041-13/+10
| | | | | | The vf_eq context contains a very large lookup table, and the method of setting default values caused the vf_eq context to be included in the compiled code.
* video/filter: remove legacy option handling hackswm42013-12-0432-37/+35
| | | | | | | | | All filters now either use the generic option parser, or don't have options. This finally finishes a transition started in 2003 (see git commit 33b62af94760186c). Why are MPlayer devs so monumentally lazy? Sorry, but this takes the cake. You had 10 years.
* vf_vo: don't abuse option strings to set VOwm42013-12-042-6/+15
| | | | Whoever thought this was a good idea should be punched.
* vf_rotate: use option parserwm42013-12-041-2/+7
|
* vf_pp: use option parserwm42013-12-041-5/+14
|
* vf_ilpack: use option parserwm42013-12-041-8/+10
|
* vf_eq: use option parserwm42013-12-041-26/+22
|
* vf_dsize: use option parserwm42013-12-041-31/+19
| | | | | | | Mostly backwards compatible, we don't change much because we just want to get rid of the legacy option string handling. You can't pass an aspect as first argument anymore.
* vf_divtc: use option parserwm42013-12-041-78/+36
|
* video/filter: remove vf_down3drightwm42013-12-042-158/+0
| | | | | | | | Apparently you can get this with: stereo3d=ab[2]{l,r}:sbs[2]{l,r} So it seems the filter is redundant and can be removed. Also see FFmpeg commit 2f11aa141a01.
* vf: remove unneeded fieldwm42013-12-041-1/+0
| | | | | This was once required for padding, because many filters didn't use designated initializers, and initialized a removed field with NULL.
* vf_pullup: change options, reroute to vf_lavfiwm42013-12-041-10/+37
| | | | The options are probably mostly backwards compatible.
* vf_unsharp: change options, reroute to vf_lavfiwm42013-12-041-50/+37
|
* vf_phase: change options, reroute to vf_lavfiwm42013-12-041-35/+48
| | | | The option change is probably backwards compatible.
* vf_noise: reroute to vf_lavfiwm42013-12-041-26/+42
| | | | | | | | Unfortunately, this forces filtering both luma and chroma, because otherwise we'd have to deal with libavfilter's vf_noise weird handling of YUV vs. RGB formats. Would we e.g. filter luma only, it would filter red in RGB mode only, because it goes by component and there's no way to distinguish YUV and RGB by just using the filter's options.
* vf_stereo3d: reroute to vf_lavfiwm42013-12-041-10/+31
|
* vf_hqdn3d: change options, reroute to vf_lavfiwm42013-12-041-67/+34
|
* vf_gradfun: reroute to vf_lavfiwm42013-12-041-0/+23
| | | | | Also update the manpage. We changed defaults and added a suboption quite some time ago, and we forgot to update the manpage at all.
* vf_delogo: reroute to vf_lavfiwm42013-12-041-2/+20
| | | | The ``file`` suboption is unsupported on lavfi.
* vf_yadif: change options, reroute to vf_lavfiwm42013-12-041-15/+24
| | | | | | Also remove the ability to disable deinterlacing at runtime. You can still disable deinterlacing at runtime by using the ``D`` key and its automatical filter insertion/removal.
* vf_lavfi: export a wrapper functionwm42013-12-042-6/+156
| | | | | | | | | | | This will allow old filter to run libavfilter instead by calling vf_lw_set_graph(), which turns the filter into a wrapper, using a given libavfilter graph. Later commits use that to automatically "reroute" a bunch of filters to libavfilter. We want to get rid of the old MPlayer filter code, because it's bad an unmaintained, but we still don't want to force everyone to use vf_lavfi, so this solution will do for a while.
* video: remove VFCAP_POSTPROCwm42013-12-041-4/+1
| | | | This wasn't used anymore, not even until recently.
* vf_screenshot: remove unnecessary codewm42013-12-041-5/+0