summaryrefslogtreecommitdiffstats
path: root/libhb/nlmeans.c
Commit message (Collapse)AuthorAgeFilesLines
* filters: make job filter settings an hb_dict_tJohn Stebbins2016-03-091-11/+40
| | | | | | This simplifies accessing and changing filter parameters programatically. It also changes the custom filter string format to a ':' separated list of key/value pairs.
* Update copyright dates to 2016.Bradley Sepos2016-01-011-1/+1
|
* libhb: add hb_buffer_listJohn Stebbins2015-09-241-35/+17
| | | | | This brings together several independent implementations of a simple buffer list manager.
* nlmeans: fix the default valuesjstebbins2015-08-171-2/+2
| | | | | | | Make the nlmeans default (when no string supplied) match "medium" preset. And make the CLI default the medium preset. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@7402 b64f7644-9d1e-0410-96f1-a4d463321fa5
* libhb: Use a buffer flat to indicate EOFjstebbins2015-05-011-1/+1
| | | | | | | | | | | | ... instead of a 0 length buffer. This fixes this issue: https://forum.handbrake.fr/viewtopic.php?f=12&t=31959 Theora can create 0 length output. These 0 length frames indicate duplicate frames. So we can't use 0 length buffers to indicate the end of the stream. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@7143 b64f7644-9d1e-0410-96f1-a4d463321fa5
* nlmeans: fix build on non-x86 architecturesjstebbins2015-02-261-4/+3
| | | | git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6945 b64f7644-9d1e-0410-96f1-a4d463321fa5
* libhb: Fix memory alignment issue in nlmeans.bradleys2015-02-161-1/+1
| | | | | | | | Solves crash in accelerated code when source dimensions are not mod 16. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6915 b64f7644-9d1e-0410-96f1-a4d463321fa5
* libhb: Fix compiler warnings and more const correctness in nlmeans.bradleys2015-02-161-32/+33
| | | | git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6910 b64f7644-9d1e-0410-96f1-a4d463321fa5
* libhb: Additional minor optimizations to nlmeans.bradleys2015-02-111-45/+47
| | | | | | | | | | | Assume buffered planes are equal size in nlmeans. Make nlmeans scalar counters read like accelerated counters (more readable and saves ~2 cycles). Yet more const correctness. Clarify some variable names for readability. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6896 b64f7644-9d1e-0410-96f1-a4d463321fa5
* libhb: Minor nlmeans optimizations.bradleys2015-02-061-58/+77
| | | | | | | | | | | | | | Use calloc for nlmeans integral instead of memsets in-loop zeroing. Replace superfluous const with literal in SSE implementation. Move exponential table calculation out of the main loop. More const correctness. Add some braces. Overall, slightly more readable/maintainable and (very) slightly faster. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6874 b64f7644-9d1e-0410-96f1-a4d463321fa5
* libhb: NLMeans x86 SSE acceleration/optimizations.bradleys2015-01-291-36/+80
| | | | | | | | Speed improvements of 1-6% seem typical. Most benefit seems to be for older hardware and/or hardware with fewer threads. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6826 b64f7644-9d1e-0410-96f1-a4d463321fa5
* libhb: thread nlmeans filterjstebbins2014-09-091-184/+410
| | | | | | | Scales well with number of CPUs, so is 4x faster on quad cores. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6397 b64f7644-9d1e-0410-96f1-a4d463321fa5
* libhb: Improve nlmeans edgeboost prefilter.bradleys2014-06-281-11/+53
| | | | | | | | | Fixes a typo (1/27 instead of 1/127) that caused edgeboost to match on nearly everything, and tweaks this number slightly. Adds a post-processing step to handle marked pixels having too few marked neighboring pixels as false positives. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6224 b64f7644-9d1e-0410-96f1-a4d463321fa5
* libhb: Add median prefilter to nlmeans.bradleys2014-06-271-5/+118
| | | | git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6223 b64f7644-9d1e-0410-96f1-a4d463321fa5
* libhb: New denoiser, nlmeans.bradleys2014-06-191-0/+742
Non-local means averages multiple patches of similar pixels together, preserving similarities and attenuating variance (usually noise). This is typically more effective than lowpass and more faithfully restores the appearance of structure and detail found in the original source, especially in the high frequency range. Parameters for origin patch weight tuning and pre-filtering further improve on the original algorithm. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6216 b64f7644-9d1e-0410-96f1-a4d463321fa5