Commit Graph

59 Commits

Author SHA1 Message Date
8a64624ba4 Use the THROW macro instead of plain "throw" in the complete project. 2013-10-18 21:37:40 +02:00
e7872a52ae Small improvement in InitializationThread class. 2013-10-16 03:31:14 +02:00
9dbb317a5c Redesigned FileAnalyzer and Analyzer task. New design is much cleaner, resulting in simpler code and faster file import performance. Also, playlist files are now handled ahead of everything else, which makes sure the progress indicator increases monotonically. Preliminary tests show that file import performance has been more than doubled! For example, the time for importing ~1000 files decreased from 116 seconds to 46 seconds on the development machine, which corresponds to a 2.5x speed-up. 2013-10-06 19:26:08 +02:00
8f77ee3b5f Ignore case when sorting file names. 2013-08-23 19:16:40 +02:00
409117ec39 Implemented "natural ordering" for sorting the input files. Code is based on the strnatcmp() by Martin Pool, released under the "zlib" license. 2013-08-23 00:19:00 +02:00
bd0a370aee Welcome to year 2013 ;-) 2013-02-08 23:57:50 +01:00
2cd7fb1faf Updated MediaInfo binary to a current SVN/Trunk version with Opus support. Also removed the preliminary Opus detection hack. 2012-08-01 00:17:12 +02:00
fcceeeaaac Added support for Opus Audio Codec, based on Opus-Tools v0.1.3 (2012-07-10) by Xiph.org/Mozilla 2012-07-20 23:19:08 +02:00
a291771153 Now using a separate QSemaphore to limit the number of tasks in the queue of the QThreadPool. Instead of starting exactly as many task as there are threads in the pool and adding a new task only after a running one finished, we will now keep a fixed number of tasks in the queue (currently hardcoded to 32). Since there always will be more tasks left in the queue than there are threads in the pool, we ensure that no thread will ever become idle. Might be slightly faster than the "old" approach. 2012-05-25 02:24:44 +02:00
193488e26f Fix: In order to ensure the "correct" ordering, *all* threads need to wait for the previous threads to finish - not only the threads that will emit a file. If both, thread n and n+1, want to emit a file and thus n+1 has to wait for n, we additionally must allow thread n+2 to terminate before n and n+1, even if n+2 does *not* emit a file. That's because as soon as n+2 finishes, it unblocks all threads x with x < n+2, which includes n and n+1. If that happens and n+1 is still waiting for n, we effectively allow n+1 to emit its file *before* n. By blocking all threads x with x > n+1 until n+1 has finished (regardless of whether they want to emit a file or not) this problem is resolved. As long as we assume that most threads actually *do* emit a file, this commit shouldn't hurt the performance. 2012-05-12 02:51:24 +02:00
9175daae0d Some code refactoring regarding the QWaitCondition/QMutex in FileAnalyzer_Task. 2012-05-09 02:54:41 +02:00
814b725fe3 Slightly improved progress indicator for file analyzer: Additional files from playlists are now taken into account earlier. 2012-05-08 01:12:26 +02:00
e13b93f51b Implemented progress indicator for the working banner. 2012-05-06 04:57:00 +02:00
a7a776ed82 Implemented a method to disables update signals from the FileList model. This will significantly speed-up adding a lot files, but comes with the drawback that updates won't be visible immediately. 2012-05-05 21:56:14 +02:00
160b997c76 Now using a QWaitCondition to synchronize the FileAnalyzer threads. 2012-05-05 03:55:27 +02:00
7d36e9d82e Some minor tweaks to the multi-threaded FileAnalyzer class. 2012-05-04 16:40:02 +02:00
14492b9c49 Implemented multi-threading for file analyzer. Now multiple files can be analyzed in parallel. This should speed-up adding files quite a bit, especially when a huge number of files is added at once. 2012-05-04 04:01:10 +02:00
caf835dbf9 Better method to prevent MediaInfo from detecting playlist files. 2012-04-20 22:39:19 +02:00
9dccdbee57 Workaround for a recent change in MediaInfo's behavior for M3U playlist files. 2012-04-19 14:40:05 +02:00
326fd32ef6 Fixed detection of bit depth. 2012-03-08 01:34:00 +01:00
0fc8c5bae4 Updated MediaInfo binaries with latest fix to properly handle tags with a "\n" when the "--inform" mode is used. Also improved internal handling of multiple streams. 2012-01-14 20:28:43 +01:00
603d21545b Updated file analyzer to use the "--inform" parameter of MediaInfo with a template file. Much simplifies the parsing of MediaInfo's output. Also much improved cover art retrieval. 2012-01-14 01:11:58 +01:00
9b687fff9a Happy New Year 2012! 2012-01-02 00:52:27 +01:00
5cac3faa8b Make sure that the extracted "cover art" image file is valid. 2011-11-19 14:06:39 +01:00
84053a76f4 Use qMin() and qMax() instead of min() and max() macros. Also use qBound() where appropriate. 2011-11-08 15:12:31 +01:00
282528ea67 Set text codec to UTF-8, so qDebug/qWarning/qFatal don't destroy Unicode strings. Also remove qDebug64() and friends, as we don't need them any more. 2011-09-29 20:06:09 +02:00
85cc4daac3 Make the FileAnalyzer remember the recently analyzed files. This way the audio files won't be MediaInfo'ed twice, when adding a folder that contains audio files *and* a playlist references these audio files. 2011-09-06 00:51:00 +02:00
ff622e29c0 Fixed a bug that could files to be added twice. Files weren't actually added two times, because we have a check for duplicate files later, but the error message for unsupported/rejected files did pop up twice! 2011-07-28 13:37:00 +02:00
d452e92bd4 Detect and show audio bitrate + added an option to copy a file's meta info to the 'meta info' tab + do not jump to first tab on minimize/restore. 2011-05-31 19:04:45 +02:00
e83b2149f5 Once again updated 'avs2wav' tool. Should now create more correct Wave files that Nero AAC encoder will accept. 2011-05-22 20:35:17 +02:00
b0a6432b88 Make Avisynth analyzer check the exit code of avs2wav. 2011-05-21 23:51:28 +02:00
eece27de06 Much improved Avisynth input. Now actually detect Avisynth scripts and read meta-info. 2011-05-21 21:08:10 +02:00
773576b3a4 Added support for Avisynth input (audio only!) using the 'avs2wav' tool. This is a stripped-down and cleaned-up version of the tool by Jory Stone <jcsston@toughguy.net>. 2011-05-19 23:07:46 +02:00
db661fc50c Show a warning when the user tries to add a Cue Sheet like a normal file. 2011-05-17 01:14:50 +02:00
5cccd4de81 Implemented a better method to abort FileAnalyzer thread. 2011-05-16 21:02:24 +02:00
fe33e70247 Updated MediaInfo binaries to v0.7.45 Beta/Trunk (2011-05-02), compiled with ICL 12.0.3 and MSVC 10.0 + remove workaround for MediaInfo line-break bug. 2011-05-02 12:31:50 +02:00
837cc90840 Added workaround for MediaInfo's line break bug (regression in latest MediaInfo). 2011-04-25 21:13:52 +02:00
4bb7185a0f Added global exception handler routine. 2011-04-17 15:53:28 +02:00
fa2a5a3754 Make it possible to abort the operation when adding files or when scanning for directories. Press "ESC" key to abort! 2011-04-11 21:57:16 +02:00
431ed392e2 Rewrote initialization code: Instead of extracting all binaries at startup and later selecting the suitable binary for the detected CPU, we will now extract only the binaries that are suitable for the detected CPU. This way we need to extract fewer files at startup. Also CPU selection can be skipped later, as there will be only one registered binary for each tool (the one suitable for the CPU). 2011-04-11 02:53:29 +02:00
1115a33264 Added support for adding, editing and clearing cover artwork by the user. 2011-03-22 17:33:03 +01:00
bbf7e8f446 Refactored the handling of cover artwork files into a separate class. 2011-03-21 22:51:47 +01:00
157542f730 Initial support for cover artwork. 2011-03-20 23:32:11 +01:00
cf45f0391f Detect the .cda files that can be found in the root of the "dummy" file systems that Windows emulates for Audio-CD's. If such files are encountered, we tell the user gently to rip the audio tracks with EAC. 2011-03-19 15:35:17 +01:00
c4983e3a4c Added macros for a Unicode-safe version of qDebug(), qWarning() and qFatal(). These will pass the UFT-8 string with a Base64 encoding. 2011-03-12 21:58:46 +01:00
4973aeca68 Implemented a workaround to pass UTF-8 strings through qDebug(): As the argument of qDebug() is defined as char*, we cannot pass UTF-16 strings. And as qDebug() mangles UTF-8 strings, we cannot pass UTF-8 encoded strings directly either. Consequently we will now encode UTF-8 strings as Base64 before passing them to qDebug(). A special prefix ("@BASE64@") is used to indicate Base64 encoded strings. 2011-03-10 02:07:51 +01:00
b210b0e826 Refactor playlist importer into a separate class. 2011-01-31 21:02:47 +01:00
628bf3de25 Improve ASX/WPL parser. Should be more XML-conform now. 2011-01-31 16:55:24 +01:00
571625a032 Added support for playlist import (M3U, PLS, ASX and WPL). 2011-01-30 21:49:32 +01:00
96db5e86c2 Happy new year! 2011-01-01 17:04:25 +01:00