summaryrefslogtreecommitdiffstats
path: root/libhb/decomb.c
Commit message (Collapse)AuthorAgeFilesLines
* libhb: decomb and deinterlace improvementsjstebbins2012-08-271-1020/+1277
| | | | | | | | | | | | | | | | | | Use hb_buffer_t for reference buffers. This is what eliminates extra buffer copies. Simplified a lot of the code. This resulted in some minor speed improvements and easier to read code. Allow mcdeint+bob. Previously these could not be used together. Thread the erode-dilate-erode-check steps in decomb3. More speed improvement. Speed of default decomb went from 62fps to 76fps. Speed of fast decomb went from 90fps to 95fps. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4919 b64f7644-9d1e-0410-96f1-a4d463321fa5
* libhb: fix comb detection crash and decomb crashjstebbins2012-07-061-9/+8
| | | | | | | | | | | | | hb_detect_comb() could crash because the dimensions of the video buffer don't have to match the dimensions returned by work object info() method if the video has segments of differeing resolutions. decomb was allocating reference buffers that were too small. This bug appears to have always existed but doesn't usually get triggered because malloc usually rounds allocation sizes up. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4812 b64f7644-9d1e-0410-96f1-a4d463321fa5
* libhb: fix deinterlace fast problem with sources that have <mod8 alignmentjstebbins2012-06-251-19/+26
| | | | | | | | | | avpicture_deinterlace requires that both width and height of the input be 8 pixel aligned. Video buffers already have padding to align horizontally to 16 pixels, but they were not padded vertically. This adds vertical padding. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4776 b64f7644-9d1e-0410-96f1-a4d463321fa5
* last "fix" was flawed. try again :(jstebbins2012-06-221-3/+3
| | | | git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4771 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Fix second crash in denoisejstebbins2012-06-221-2/+2
| | | | | | | | Problem is actually in decomb. It was chaning the resolution of the image :O git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4768 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Updated file copyright / GPL headerssr552012-06-151-3/+5
| | | | git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4737 b64f7644-9d1e-0410-96f1-a4d463321fa5
* libhb: tasksets API provided by scsiguyjstebbins2012-05-171-282/+107
| | | | | | | | | | This is an easier to use API for launching multithreaded tasks. And it is more portable since it does not rely on undefined/implementation specific behavior of POSIX mutexes. That is, the ability for one thread to unlock a mutex owned by another thread. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4685 b64f7644-9d1e-0410-96f1-a4d463321fa5
* libhb: Fix problem with positions of burned-in subsjstebbins2012-05-051-1/+0
| | | | | | | | | | | | | | | | | When cropping and/or scaling, the position of burned-in SSA subs was broken. Also, when scaling, the position of all other burned-in subs was broken. Part of this fix is to revert a bit of filter initialization changes that were made in this commit https://trac.handbrake.fr/changeset/4605 The other part of the fix is to add cropping parameters to the initialization of the subtitle rendering filter. This filter needs the *original* title dimensions and the crop values in order to compute the positions properly. The changes that I am reverting gave it the scaled job dimensions and the crop values. This was wrong in so many ways it's embarassing :p git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4642 b64f7644-9d1e-0410-96f1-a4d463321fa5
* don't do combing check twice per frame when bobbingjstebbins2012-05-011-1/+13
| | | | | | | and fix saving bob setting in LinGui presets git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4626 b64f7644-9d1e-0410-96f1-a4d463321fa5
* libhb: bob deinterlacingjstebbins2012-05-011-80/+107
| | | | | | | | This is jbrjake's patch for bob deinterlacing applied to decomb and deinterlace filters. Thanks to yeasah's for refinements and testing of this patch. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4625 b64f7644-9d1e-0410-96f1-a4d463321fa5
* PGS (bluray) subtitle support \o/jstebbins2012-04-261-0/+1
| | | | | | | | | | | | Thanks to patches supplied by David Mitchell and Rob McMullen we finally have PGS support. I added a fix for libav pgs timestamp processing and detection of forced subtitles to their work, then made foreign audio search work with PGS subs. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4605 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Rework filter pipelinejstebbins2012-03-271-85/+73
| | | | | | | | | | | | | | | | | | | | This patch enhances the filter objects. The 2 key improvements are: 1. A filter can change the image dimensions as frames pass through it. 2. A filter can output more than one frame. In addition, I have: Moved cropping & scalling into a filter object Added 90 degree rotation to the rotate filter Moved subtitle burn-in rendering to a filter object. Moved VFR/CFR handling into a framerate shaping filter object. Removed render.c since all it's responsibilities got moved to filters. Improves VOBSUB and SSA subtitle handling. Allows subtitle animations. SSA karaoke support. My apologies in advance if anything breaks ;) git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4546 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Add new decomb modesjstebbins2011-10-221-132/+689
| | | | | | | | | | | | | | | This is jbrjakes decomb3 patch. New modes are gamma compensation and erode dialate filter. Gamma adjusting pixel values makes less visible differences count less in the metric that is calculated. Filtering removes isolated "hits" that are more likely noise. This all makes decomb more discerning and therefore the thresholds can be lowered. The filter's defaults use these new modes with lower thresholds. If you want the old behavior, use: 7:2:6:9:1:80 git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4308 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Extract common mcdeint code from decomb/deintjstebbins2011-09-261-198/+14
| | | | | | | | Extracts duplicated code from decomb.c and deinterlace.c and puts it in a shared module. Fixes a bug that existed in the decomb version of mcdeint_filter. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4257 b64f7644-9d1e-0410-96f1-a4d463321fa5
* libhb: Enable multi-threaded decode in ffmpegjstebbins2011-06-081-1/+1
| | | | | | | | Enable both slice and frame based mutli-threaded decode in ffmpeg. Uses cpu_count/2 + 1 threads. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4034 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Faster combing detection through slightly less stupid use of pointers. Also ↵jbrjake2009-12-081-68/+61
| | | | | | realigns boundary points for the combing mask checker to match what the code actually does. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3015 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Fixes a missing and misplace option in decomb's comments and in-line CLI ↵jbrjake2009-11-231-1/+1
| | | | | | help. Thanks, Rodeo\! git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2956 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Oops, CLI help was never updated for decomb's EEDI2 parameters or new mode ↵jbrjake2009-10-311-1/+4
| | | | | | structure. Thanks, Rodeo. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2904 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Adds a parity parameter to detelecine and rewires it in decomb, so that TFF ↵jbrjake2009-10-311-2/+3
| | | | | | can be set for non-MPEG-2 sources that don't include parity flags, which will be falsely autodetected as BFF. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2903 b64f7644-9d1e-0410-96f1-a4d463321fa5
* - Introduces a new mode structure for decomb, to make more flexible ↵jbrjake2009-07-121-97/+382
| | | | | | | | | | combinations of options possible, as well as a debug mode that overlays the combing mask on the output. A full explanation of the new modes can be found at the top of libhb/decomb.c. The new default parameter string is: 7:2:6:9:80:16:16:10:20:20:4:2:50:24:1 - Cleans up some compiler warnings for decomb. - Partially fixes mcdeint in decomb. I would not suggest using it yet, but it's getting piped the right data, it no longer outstrides its memory, and lavc finally fixed their Snow bug that broke iterative ME). Seems to work well on fully interlaced material, with the spatial metric (2nd paramter) set to -1. Output with hybrid material and when actually decombing is...poor, but these are, hopefully, surmountable problems. - Lays some groundwork for bobbing. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2685 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Ports tritical's EEDI2 deinterlacing interpolator from AviSynth and ↵jbrjake2009-03-191-69/+478
| | | | | | | | implements it in the decomb filter as an optional, non-default substitute for yadif's internal, lower quality spatial predictions. EEDI2 interpolation is enabled by setting mode (the first decomb parameter) to 5. Decomb now accepts -1 as a spatial metric (the second parameter), to bypass combing detection and force deinterlacing of all frames in the specified mode. Additional parameters have been appended to the end of the settings list for decomb, to specify various settings used by EEDI2. The default values for those should work well. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2264 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Consolidate all the ffmpeg-related includes into libhb/hbffmpeg.h then ↵van2008-12-131-1/+1
| | | | | | prototype hb_avcodec_{init,open,close} so that we don't get gcc warnings from a dozen modules. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2025 b64f7644-9d1e-0410-96f1-a4d463321fa5
* fix a threading issue with avcodec_open/closejstebbins2008-12-121-2/+2
| | | | | | | | these functions can not be called from 2 threads simultaneosly. made a wrapper function that holds a lock while making the call git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2023 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Correct chroma size for raw video frames - width & height need to be rounded ↵van2008-11-081-3/+2
| | | | | | up if they're odd before dividing by 2. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1905 b64f7644-9d1e-0410-96f1-a4d463321fa5
* This should fix the flickering line bugs with deinterlace and decomb. Yadif ↵jbrjake2008-10-231-10/+65
| | | | | | needs the edges mirrored, and decomb's cubic interpolation has to be disabled at the tops and bottoms of frames. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1862 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Zero out the mask bitmap properly in decomb. Thanks for finding this and ↵jbrjake2008-09-301-1/+1
| | | | | | providing the solution, j45! git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1791 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Threaded decomb filter. Folds in eddyg's threaded yadif from r1628 and also ↵jbrjake2008-09-191-37/+435
| | | | | | analyzes cpu-count segments of the frame in parallel when generating the combing mask used to decide which frames to send to yadif. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1720 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Code comment clean-up, mostly to clarify the difference between the prev and ↵jbrjake2008-08-141-8/+11
| | | | | | next frame buffers and yadif's prev2 and next2 field pointers. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1630 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Much improved decomb filter. Totally different algorithm, with a temporal ↵jbrjake2008-07-111-291/+352
| | | | | | | | element, a block window, and a simple weighting decision for which deinterlacer to use. See code comments. The code isn't well optimized yet, and would probably benefit from -O3 (as opposed to the -Os optimization level currently used in macosx builds). git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1566 b64f7644-9d1e-0410-96f1-a4d463321fa5
* - support blu-ray, avchd & dvb x264van2008-05-311-8/+10
| | | | | | | - support video files handled by ffmpeg (avi, mkv, mp4, etc.) git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1480 b64f7644-9d1e-0410-96f1-a4d463321fa5
* git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1471 ↵jbrjake2008-05-291-0/+992
b64f7644-9d1e-0410-96f1-a4d463321fa5