summaryrefslogtreecommitdiffstats
path: root/libhb/render.c
Commit message (Collapse)AuthorAgeFilesLines
* Reduce the amount of buffering used and eliminate hb_snooze in the encoding ↵jstebbins2009-12-051-2/+2
| | | | | | | | | | | | | | | | | | | | | | pipeline For HD sources on an 8 core system with hyperthreading, we were using 1.5GB of ram. Add to that the 600MB x264 uses for rc-lookahead, pushes it north of 2GB. To reduce our memory usage, the fifo depths have been reduced are are no longer a multiple of cpu count. Use of hb_snooze has been eliminated in the encoding pipeline so that performance doesn't fall as a result of the reduced fifo depths. In sync, each audio and video were given separate threads so that each can wait on it's respective input fifo without blocking the others. In muxcommon, each stream being muxed was given a separate thread so that each can wait on it's respective fifo. This allows the removal of hb_snooze in the sync and muxer work loops. In both sync and muxer, there is common data that is shared by all threads, so special init routines allocate this shared data and initialize the threads. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@3007 b64f7644-9d1e-0410-96f1-a4d463321fa5
* When caching frame durations for the delay_queue, store the times of the ↵jbrjake2009-07-081-1/+1
| | | | | | frames coming out of the filters, not the frames entering the render pipeline from sync. This way times don't get assigned to incorrect frames when filters delay output. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2671 b64f7644-9d1e-0410-96f1-a4d463321fa5
* - cleanup gcc format warnings showing up on linux 64-bitkonablend2009-06-251-3/+3
| | | | git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2619 b64f7644-9d1e-0410-96f1-a4d463321fa5
* - nasty bug: at eof, dropping a delay queue frame for CFR could link the ↵van2009-06-071-0/+1
| | | | | | | | | | render video output to the free list causing hangs and/or garbage output. - since frame rate conversion moved from sync to render, sync has to use input (title) frame rate, not output (job) frame rate. - get rid of 'too many frames' check in sync. it can't be done here because it causes reader to deadlock and it belongs in the dvd reader anyway (only dvd input can loop). git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2496 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Adds an interjob structure to preserve some encode data across jobs within ↵jbrjake2009-06-041-0/+5
| | | | | | an instance of libhb. This allows correcting the estimated bitrate/filesize of 2-pass encodes of variable framerate content, as the actual frame count is known after the first pass. Thanks for putting the idea into code, Shaya. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2482 b64f7644-9d1e-0410-96f1-a4d463321fa5
* - Move frame rate code from sync to the end of render so it can account for ↵van2009-05-021-36/+172
| | | | | | | | | | | | frame timing changes made by filters. - Fix a bug that would make CFR alternate between massive drops and massive dups on some titles. - If we're not doing CFR add a factor-of-two fudge factor to init_delay to account f or the awful clock resolution of some mkvs and mp4s. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2368 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Flush frames from the delay queue in render. This should add an extra couple ↵jbrjake2009-03-311-4/+36
| | | | | | of frames to the end of output when using same as source fps or vfr detelecine. Thanks, eddyg! git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2285 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Re-enable libswscale accurate rounding on x86_64.saintdev2009-03-021-4/+1
| | | | | | The libswscale bug causing crashes was fixed a while ago. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2191 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Consolidate all the ffmpeg-related includes into libhb/hbffmpeg.h then ↵van2008-12-131-3/+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
* Correct chroma size for raw video frames - width & height need to be rounded ↵van2008-11-081-4/+4
| | | | | | up if they're odd before dividing by 2. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1905 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Wait until 4 frames are stashed in the delay_queue before outputting any ↵jbrjake2008-09-291-2/+1
| | | | | | frames from render when using VFR detelecine. With only 3, the array storing previous time stamp isn't full when the first frame's outputted, throwing off AV sync. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1787 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Fix subtitle scan to work with new stream eof logic.van2008-07-261-2/+3
| | | | git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1584 b64f7644-9d1e-0410-96f1-a4d463321fa5
* - support blu-ray, avchd & dvb x264van2008-05-311-2/+2
| | | | | | | - 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
* ...on the other hand, when we *are* using VFR we *do* want to break on ↵jbrjake2008-05-211-0/+1
| | | | | | drops, so we're not trying to filter null frames. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1468 b64f7644-9d1e-0410-96f1-a4d463321fa5
* When using detelecine but not dropping frames (non-VFR detelecine), continue ↵jbrjake2008-05-211-1/+0
| | | | | | looping through the filter chain if the detelecine filter says to drop a frame. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1467 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Saearch & Replace domain names to move from .m0k.org to handbrake.fr. Only ↵jbrjake2008-04-151-1/+1
| | | | | | covers trunk files, libhb, and test. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1418 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Fix the automatic subtitle scan that I broke with r1412.van2008-04-141-2/+2
| | | | git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1413 b64f7644-9d1e-0410-96f1-a4d463321fa5
* When dropping frames from pullup for VFR, deallocate the associated subtitle ↵jbrjake2008-04-131-1/+4
| | | | | | | | buffers instead of just hb_fifo_get-ing them into nowhere. This should plug the crash-inducing memory leak Cyander noticed. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1410 b64f7644-9d1e-0410-96f1-a4d463321fa5
* libswscale accurate rounding is now re-enabled for all arches except x86_64.saintdev2008-03-211-1/+7
| | | | git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1353 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Formatting: Remove a lot of trailing whitespace.saintdev2008-02-211-74/+74
| | | | git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1307 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Only store chapter markers separate from their buffers when doing VFR.jbrjake2008-02-181-1/+1
| | | | git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1285 b64f7644-9d1e-0410-96f1-a4d463321fa5
* You know what I said in r1271 about not using the delay_queue except when ↵jbrjake2008-02-181-5/+1
| | | | | | VFR is enabled? This time, I mean it. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1283 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Only futz with frame durations at render-time when using VFR.jbrjake2008-02-181-1/+1
| | | | git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1281 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Fixes crashes with 2-pass when b-frames are enabled, by only using the ↵jbrjake2008-02-161-2/+10
| | | | | | delay_queue in render.c to actually delay frames when VFR is enabled. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1271 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Variable frame rate improvements.jbrjake2008-02-041-34/+111
| | | | | | | | | - Makes it work better with the source's time stamps and avoids discontinuities, by removing its lazy assumption that all frames are 3003 ticks long. - Handles more than 1 frame being dropped out of 5. - Preserves chapter markers from being dropped along with frames they're attached to (thanks van!). - Also, since VFR no longer requires input at 29.97 fps, removes the hard-coding of that frame rate. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1249 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Maintains separate filter settings for each job. This prevents the MacGui ↵jbrjake2008-01-221-19/+0
| | | | | | from using the same filter settings for every job in the queue. Patch from travistex. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1228 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Prevents VFR from leaving PTS gaps at dropped frames, so it works properly ↵jbrjake2008-01-221-13/+17
| | | | | | with the new sync and MP4 muxing code in r1223 and r1224 that passes through the source's time stamps. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1227 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Change subtitle position to prevent displaying within a 2% margin of the ↵eddyg2008-01-211-10/+53
| | | | | | height of the screen, rather than using a 20px fixed margin. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1218 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Only drop frames when using VFR, not with regular detelecine.jbrjake2008-01-011-2/+6
| | | | | | *facepalm* git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1158 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Renumber start and stop timestamps for VFR, so they are continuous despite ↵jbrjake2007-12-181-2/+30
| | | | | | | | dropped frames. This fixes issues with jerky video when using VFR together with B-frames. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1133 b64f7644-9d1e-0410-96f1-a4d463321fa5
* First attempt at variable frame rate detelecining for NTSC video sources.jbrjake2007-11-101-1/+70
| | | | | | | This check-in includes the library code as well as the CLI implementation. Only works with MP4 and MKV, untested with high profile, results may vary with mixed content, consult a physician if condition persists for longer than four hours. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@1051 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Cast the flags passed to sws_getContext to a 16-bit int.saintdev2007-09-131-1/+1
| | | | | | Otherwise I get segfaults on 64-bit linux. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@958 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Added buffer management and changed fifo sizes. Changed job->subtitle_scan ↵eddyg2007-09-111-0/+10
| | | | | | to job->indepth_scan, and fixed memory init bug in denoise.c. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@945 b64f7644-9d1e-0410-96f1-a4d463321fa5
* - Add the accurate rounding flag for software scaling to avoid scaling ↵superdump2007-09-051-1/+1
| | | | | | artifacts that were especially noticable on flat colour or slight gradients. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@924 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Add Subtitle scanning for forced subtitles and normal subtitles from the CLIeddyg2007-08-211-1/+1
| | | | | | | and the MacOS GUI. See the new subtitle language options in the GUI. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@844 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Add colour/chroma to subtitles where they are not transparent.eddyg2007-08-201-1/+50
| | | | git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@842 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Implements libswscale in HandBrake, giving it Lanczos scaling! This major ↵jbrjake2007-08-011-14/+21
| | | | | | | | | | enhancement comes to us courtesy of superdump, who deserves much praise and glory. To make this work, ffmpeg's been updated to a recent revision. Darwin contrib binary pack ++ to 0016. Includes fresh ffmpeg and libswscale as well as the recently-patched libmp4v2. I've also added the configure option --disable-sdl to libmpeg2 in the contrib/Jamfile, because without it jam always fails for me and I'm sick of adding it in every time. Hopefully this doesn't break anything for anyone, but if it does it's just a one-word change. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@778 b64f7644-9d1e-0410-96f1-a4d463321fa5
* This huge patch from huevos_rancheros ports a number of video filters from ↵jbrjake2007-07-271-60/+174
| | | | | | | | | | mencoder to HandBrake: yadif+mcdeint, hqdn3d, pp7, and pullup+softskip+harddup. What this means is that HB now has stateless inverse telecine, temporal denoising, and motion-adaptive deinterlacing! HandBrake is growing up =) Thank you, huevos_rancheros! git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@749 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Much better B-frame muxing frame-reordering. This will preserve the sps/pps ↵jbrjake2007-04-161-0/+7
| | | | | | | | info, properly offset the first frame, and flush any remaining frames at the end of the encode. Patch by: Nyx git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@513 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Oops, got a little to unalloc-happy. Fixes a crash.saintdev2007-04-021-1/+0
| | | | git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@471 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Fix about 156,199 bytes of leaked memory.saintdev2007-03-311-0/+5
| | | | git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@469 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Merge the 5.1 branch into the trunk.prigaux2007-03-061-0/+186
| | | | git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@422 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Merge the 0.8.0_mpeg4ip branch into the trunkprigaux2007-02-111-186/+0
| | | | git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@285 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Structural changes, in order to eventually be able to compile HBtiter2006-03-161-32/+39
| | | | | | | without certain encoders git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@34 b64f7644-9d1e-0410-96f1-a4d463321fa5
* Fix for missing subtitlestiter2006-02-221-21/+33
| | | | git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@28 b64f7644-9d1e-0410-96f1-a4d463321fa5
* HandBrake 0.7.0handbrake2006-01-141-0/+167
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@16 b64f7644-9d1e-0410-96f1-a4d463321fa5