MacGui and MacCli: Sets the Xcode project's Deployment target to use GCC optimization level 3 instead of S, optimizing for speed instead of speed and size.
Threaded decomb filter. Folds in eddyg's threaded yadif from r1628 and also analyzes cpu-count segments of the frame in parallel when generating the combing mask used to decide which frames to send to yadif.
MacGui: "Stop" command modifications
- Clicking on the "stop" icon in the toolbar now produces a different alert window with three choices
- " Continue Encoding " default, just dismisses the window and continues on its merry way.
- " Cancel Current and Stop " Cancels the current encode and stops the queue
- " Cancel Current and Continue " Cancels the current encode and moves to the next pending encode (if there is one).
- Also fixed an issue with deleting a canceled encode at the top of the queue list.
MacGui: Fix issue from 1703 where once done doing at least one encode, all subsequent jobs would require that you add to queue first, then hit start.
- Now, even after encoding a queue is finished, you can just hit "Start" to add the currently loaded job in the GUI to the queue and start encoding right away.
MacGui: fix turbo two pass (thanks beelsebob and jkint for help troubleshooting it )
- also added a few more debugging messages to prepareJob until things cool down a bit.
MacGui: Fix crash when selecting between target size and abr.
- calculateBitrate shouldn't need nor can it any longer use prepareJob
- should still verify proper calcs for target bitrate and abr, but better not to crash.
MacGui: fix chapter markers which were borked in 1703
-Note: this only fixed adding chapter markers. Custom chapter names are *not* fixed, if chapter markers checkbox is checked you will currently get 001, 002, etc. etc. for chapter names.
van [Tue, 16 Sep 2008 21:31:46 +0000 (21:31 +0000)]
Another bug fix in the per-stream timing code: If the clock reference changes on the first buffer of a stream we haven't seen before we don't have the history we need to compute a clock offset & need to wait for a stream we've been tracking.
MacGui: Resilient Queue: Initial Implementation
- Completely overhauls how encodes are setup by the MacGui
- All encodes are now stored in an NSMutableArray (QueueFileArray) and saved in a plist (~/Library/Application Support/HandBrake/Queue.plist)
- A separate instance of libhb (fQueueEncodeLibhb) is used for queue processing (includes single encodes)
- fHandle still takes care of all user intiated scans and encode parameters
- libhb now only stores multiple passes for a single encode instead of storing the entire queue
- If HB crashes, or if you stop encoding while there are still pending encodes in your queue, upon next launch you will be prompted to reload the previous queue from the Queue.plist
- Removed the current encoding information at the top of the queue window to make room for a larger list as I thought it to be redundant
- The queue list is now re-arrangeable via drag-n-drop (pending encodes only)
- Known issues and bugs:
-- If you delete a previously cancelled encode then try to restart with a new encode, nothing happens. Throw off the sync of the currently encoding job.
-- Probably alot more since its a total overhaul of how the MacGui has handled encoding since titer originally wrote it :)
WinGui:
- Fixed a number of incorrect tooltips and text labels.
- Moved the deblock control again, see if I can't completely avoid it overlapping another control.
van [Mon, 15 Sep 2008 06:51:18 +0000 (06:51 +0000)]
If we always sort timestamps we can't detect & correct misordering caused by an SCR discontinuity. So only sort timestamps on streams that could have been broken by Microsoft (ffmpeg avi, wmv, mkv & mp4) and leave mpeg PS, TS & M2TS steams alone.
van [Mon, 15 Sep 2008 06:44:56 +0000 (06:44 +0000)]
The difference of two timestamps referenced to different clocks is a random number & not useful input to the average frame size computation. This major brain-o would occasionally cause huge average frame times which, when later used to compute the SCR correction, would result in large gaps in the audio and/or video streams. Fixed by always computing the average frame size from the scr-corrected timestamps.
WinGui:
- Delete key can now be used to delete presets & queue items.
- Queued items now have job id's. this isn't used for anything yet, however will be useful for editing current queue items.
- Moved batch script code to Queue.cs
WinGui:
- Removed invalid tooltip text from Size -> Source label.
- Moved deblock slider up a few px. The control has a horrible amount of uncontrollable padding which may overlap the de interlace control in some cases.
van [Fri, 12 Sep 2008 05:37:56 +0000 (05:37 +0000)]
HD Home Run seems to strip the PCR from some streams (which makes HB refuse to process them) so use the video stream DTS as a substitute until the first real PCR appears.
van [Thu, 11 Sep 2008 04:05:04 +0000 (04:05 +0000)]
Various fixes for ffmpeg input files (mp4, avi, mkv, etc.):
- always use source time stamps (HB vfr mpeg4 files now handled correctly)
- handle Microsoft's braindead "VFW packed b-frames"
- compute average video frame rate from total duration & number of frames (ignore ffmpeg's frame rate which is closer to a max f.r. for vfr video).
- workaround an ffmpeg audio decode abort when it used SSE instructions on unaligned buffers.
LinGui: consolidate all resources into one stringified plist file that gets
compiled in. icons and everyting all rolled up into one ball-o-wax.
hehe, plists are cool
WinGui:
- Fix in CalculateDuration. Crash caused by end chapter dropdown menu not getting re-populated before calculate duration run. See:
http://forum.handbrake.fr/viewtopic.php?f=12&t=7050
LinGui: internalize the UI description xml file. That's the last external
file that was neccessary. The ghb binary can now stand on its own without
external resource files. The makefile still installs a couple extra files
that adds HandBrake to the users "Sound & Video" menu.
LinGui: Internalize all the icons so I don't have to install them in
a system directory. One step closer to being able to build a binary
that can stand on it's own without a bunch of additional resource files.
LinGui: Fix several strict-aliasing warnings and a null pointer dereference
that can happen if preferences don't yet exist and your running the app over
an ssh session.
LinGui: Add queue save/restore
- 2 instances of libhb are used. One for queue activities and one for scanning
new sources prior to adding to the queue.
- Improve chapter entry usability. In addition to "return" advancing to the
next chapter for editing, up and down arrows will advance to prev/next and
put the cell in edit mode.
- Add an accelerator key to jump to the destination entry box.
- Fix a queue window resize problem.
van [Fri, 5 Sep 2008 06:16:44 +0000 (06:16 +0000)]
- get rid of another deadlock: if there were more than 64 audio frames before the first video frame we'd lock up the reader.
- if we get a bogus timestamp at the end of some conversion just ignore it and don't try to generate minutes or hours of silence to fill the hole.
LinGui: Presets and preferences are now stored as plists
This will also make saving/restoring the queue much easier.
It's a scary big change. 1400 new lines of code. Due to efficiencies
of a better desing, 2400 lines of old code also gets refactored
down to 1600. Giving a final net +600 lines.
Along the way, I stumbled across a couple bugs and fixed them.
Chapter list entry would get wedged under certain circumstances.
Pausing encoding didn't display pause message in status bar.
sr55 [Sun, 24 Aug 2008 17:57:54 +0000 (17:57 +0000)]
WinGui:
- Adds checkbox to enable decomb.
- Program Options updated with an option to customize decomb values.
- Queue Recovery feature. If you close the GUI without letting a queue complete, the user will be prompted if they'd like to recover the queue on next launch.
- Small bugfix with the queue HandBrakeCLI monitor thread not stopping when the GUI is closed.
jstebbins [Fri, 22 Aug 2008 23:20:53 +0000 (23:20 +0000)]
LinGui: improve data entry method for deinterlace and denoise settings in
tweaks mode. replaces GtkComboBox with GtkComboBoxEntry.
add easter egg that gives access to hidden preferences
jstebbins [Thu, 21 Aug 2008 00:43:46 +0000 (00:43 +0000)]
LinGui: add a hidden feature to allow tweaking some settings. currently
tweaks are available for detelecine, decomb, deinterlace, deblock, and denoise
to enable, you must manually edit preferences file and add "allow_tweaks=1"
to tweak a setting, right click on the widget, an entry dialog will appear.
minimal validity checking is done on the tweak's value.
van [Mon, 18 Aug 2008 20:05:47 +0000 (20:05 +0000)]
The per-stream timing changes (r1570) make the overall timing depend on which media streams we process. So we can't ignore audio during pass 1 or the video timing will change between passes & make x264 abort. (Thanks to jbrjake for pointing out the problem.)
van [Mon, 18 Aug 2008 06:15:17 +0000 (06:15 +0000)]
- To reliably find audio in 720p or 1080i TS streams we need to search through first 50MB of file looking for the stream rather than first 18MB.
- When we're looking for a PES header for some PID, check both that the TS 'start' bit is set and that the first 3 data bytes are an MPEG start code (the start bit may get set by an error not caught by the CRC).
- Print the substream id when we reject a PID as "not audio" so we'll be able to debug TS streams using non-standard PES encapsulations.
van [Mon, 18 Aug 2008 06:07:19 +0000 (06:07 +0000)]
If we try to release old frames in the loop that searches for a free one we may free one that's in use & crash in avcodec_default_release_buffer. (Bug tracked down by eddyg).
van [Mon, 18 Aug 2008 01:54:15 +0000 (01:54 +0000)]
- patch a reference picture leak in ffmpeg/libavcodec/mpegvideo.c that caused aborts on h264 transport stream encodes.
- patch the log level of some h264 decoder error messages so we don't fill our log with messages about stuff that's a very likely & not terribly significant.
- don't let hb.c set the ffmpeg av_log level to AV_LOG_DEBUG -- it fills the HB activity log with junk.
- add a count of the decoder errors to decavcodec's final report.
- when we don't have any chapter text (i.e., during a typical cli encode) just print the chapter number rather than empty quote marks.
sr55 [Sat, 16 Aug 2008 19:42:44 +0000 (19:42 +0000)]
WinGui:
- One elusive cross-thread bug in the Activity window fix (hopefully) + some tweaks to the log display
- Nicer Exception Handling Message box errors for frmReadDVD.
- frmMain Minimize to taskbar no tooltip text exception fixed.
jstebbins [Fri, 15 Aug 2008 23:06:39 +0000 (23:06 +0000)]
LinGui: fix a couple problems with the preset translation tool
change my presets file to use the settings generated by the translation tool
also tidy up a display problem with x264 options
eddyg [Wed, 13 Aug 2008 20:48:52 +0000 (20:48 +0000)]
Threaded yadif deinterlacer. Will split the YUV frames up into horizontal segments based on the number of CPUs available. All these segments will be processed seperately in parallel in their own thread.
eddyg [Tue, 12 Aug 2008 01:55:30 +0000 (01:55 +0000)]
Don't crash HB when the video decoder (MPEG2 or ffmpeg) doesn't understand the format of the input and so therefore doesn't populate vid_info. Just skip that preview instead.