Commit Graph

54 Commits

Author SHA1 Message Date
Thomas Goyne a7f4fb5b87 Run clang-modernize on things 2013-11-23 09:57:22 -08:00
Thomas Goyne 1e0f08c0ed Mostly purge wxWidgets from non-UI stuff
Use boost::filesystem::path for all paths, and std::string for all other
strings, converting to/from wxString as close to the actual uses of wx
as possible.

Where possible, replace the uses of non-UI wxWidgets functionality with
the additions to the standard library in C++11, or the equivalents in
boost.

Move the path token management logic to libaegisub (and rewrite it in
the process).

Add a basic thread pool based on asio and std::thread to libaegisub.

This touches nearly every file in the project and a nontrivial amount of
code had to be rewritten entirely, so there's probably a lot of broken
stuff.
2013-02-06 13:22:15 -08:00
Thomas Goyne a99428c49d Extract options and MRU stuff from main.h
Nearly all of the files including main.h are doing so only for OPT_GET
and friends, which are rather unrelated to the main things that main.h
declares.
2013-01-09 16:48:31 -08:00
Thomas Goyne 572a58cd90 Have FFMS2 do the audio downmixing when possible
Aegisub's downmixer is terrible for anything with more than two channels
(averaging all the channels together is not even vaguely close to the
correct thing to do for 5.1), so libavresample should be far better.
2012-12-27 08:42:00 -08:00
Thomas Goyne d0f4d9df99 Replace all uses of lagi_wxString with to_wx 2012-12-22 15:18:38 -08:00
Thomas Goyne a2c14e9c5f Check the error code when FFMS2 can't create an indexer
Creating an indexer can fail for reasons other than the file not
existing. This check is still not completely correct, since FFMS2 uses
the wrong error codes in a bunch of places.
2012-12-17 10:14:08 -08:00
Thomas Goyne 96cf5ea7ed Kill the #ifndef AGI_PRE guards
They don't actually improve compilation performance and make it more
annoying to modify what things are in the precompiled header.
2012-12-02 06:33:29 -08:00
Thomas Goyne 06aaaff16b NULL -> nullptr 2012-11-13 08:51:01 -08:00
Thomas Goyne e44c47c863 Remove $Id$ markers since git doesn't support them 2012-10-25 17:39:49 -07:00
Thomas Goyne 79684d5ad6 Factor out bounds-checking for GetAudio to a single place
It was being done in inconsistent ways in several places, which did not
include all of the places it needed to be done.

Closes #1509.

Originally committed to SVN as r6960.
2012-08-19 14:11:29 -07:00
Thomas Goyne b2fb39b67f Fix leak of the Indexer when an audio/video file has already been indexed
Originally committed to SVN as r6940.
2012-07-23 00:44:47 +00:00
Thomas Goyne b8c6a41ac4 Add support for floating-point audio. Closes #1490.
Originally committed to SVN as r6904.
2012-06-13 15:58:28 +00:00
Thomas Goyne a51de67d68 ffms2: Reindex and reload audio when the error handling mode is changed
Originally committed to SVN as r6891.
2012-06-07 21:03:11 +00:00
Thomas Goyne b32515da80 Strip trailing whitespace from all cpp and h files
Originally committed to SVN as r6600.
2012-03-25 04:05:06 +00:00
Thomas Goyne af58db5b9e Fix reindexing of files on every open
FFMS_IndexBelongsToFile returns 0 when the index belongs to the file,
not 1.

Originally committed to SVN as r6526.
2012-02-29 01:24:16 +00:00
Thomas Goyne f79e933ac9 Bump required version of ffms2 to 2.16
Originally committed to SVN as r6493.
2012-02-20 18:22:20 +00:00
Thomas Goyne 17b0d83831 Use scoped_holder in a handful of places
Originally committed to SVN as r6492.
2012-02-20 18:22:12 +00:00
Thomas Goyne df9c6b627f Improve audio open error reporting and remove a pile of unused stuff in AudioPlayer
Originally committed to SVN as r6223.
2012-01-08 01:33:39 +00:00
Thomas Goyne f2c62dad3d Factor out a bunch of duplicated code in the configure script for pkg-config based optional dependencies and use the pkg-config name for all WITH_* defines
Originally committed to SVN as r6104.
2011-12-22 21:25:49 +00:00
Thomas Goyne bd7ac88f6b Apply container audio delay when the FFMS2 version used supports it. Closes #1251.
Originally committed to SVN as r5058.
2010-12-29 06:27:02 +00:00
Thomas Goyne ce2adcea79 Revert r4828 as I decided to fix it in FFMS2 instead.
Originally committed to SVN as r5057.
2010-12-29 06:26:56 +00:00
Amar Takhar c15777f844 Merge audio_display_rewrite branch to trunk. This is not a complete work, don't expect to time anything for a while.
Originally committed to SVN as r4903.
2010-12-08 03:36:10 +00:00
Karl Blomster d6dde4ec73 update ffms2 to r354
Originally committed to SVN as r4835.
2010-11-09 19:55:23 +00:00
Thomas Goyne 50f8389615 Add support for delay in FFmpegSourceAudioProvider as FFMS2 only handles it automatically in the avisynth plugin
Originally committed to SVN as r4828.
2010-11-04 04:58:27 +00:00
Thomas Goyne c10e9e3a5b Make video and audio providers throw typed exceptions.
Don't display error messages and try other providers when the user
cancels loading a file.

Remove files from the MRU lists if they can't be found.

Closes #717.

Originally committed to SVN as r4717.
2010-08-02 06:32:01 +00:00
Thomas Goyne 4a8abae3a3 Kill options.h and options.cpp, which have been empty for a while
Originally committed to SVN as r4676.
2010-07-12 21:49:48 +00:00
Amar Takhar 40e12403d5 Merge all changes from the libaegisub branch into trunk, the effective range is r4175:4330. All options have been re-done and now use Cajun to support a json-backed format.
Initial support for low-level access and file I/O methods are included as well.

Originally committed to SVN as r4331.
2010-05-21 01:13:36 +00:00
Karl Blomster 85d645b44a Allow user to set behavior of audio decoding errors during indexing with the FFMS2 providers.
Originally committed to SVN as r3822.
2009-11-28 21:13:47 +00:00
Karl Blomster e720bba41c Fix a bug that would occasionally cause opening audio using the ffms2 audio provider to fail with error "out of bounds track number selected".
Originally committed to SVN as r3818.
2009-11-21 22:08:03 +00:00
Karl Blomster 9d80eb066f Updating ffms2 to r221 (2.12), step 3/3: Aegisub interface
Originally committed to SVN as r3576.
2009-09-26 21:58:00 +00:00
Amar Takhar d348b4e33e Fix all the headers in *.cpp, this includes:
* Wrapping all headers that are in agi_pre.h with AGI_PRE.
 * Sorting alphabetically.

Originally committed to SVN as r3515.
2009-09-10 13:06:40 +00:00
Amar Takhar 2fcd872218 Kill the ffms2 group and make it all 'ffms'
Originally committed to SVN as r3335.
2009-07-30 06:40:25 +00:00
Amar Takhar 6ee2f98349 Note: This was done using a script! it's far from perfect but 95% of the work has been done already formatting-wise.
Document all functions, class, struct, union, enum, macro, variable, typedefs.  This isn't the actual document in itself but empty documentation using any old documentation if it was there.

This was done using exuberant ctags to get tag info, then a TCL script to parse/remove old comments and convert them into Doxygen-style.

Some notes:
 * Anything labeled 'DOCME' needs to be documented, @param and @return have been left blank as it would be annoying to delete the 'DOCME' from every one of those.
 * Some multiline comments may have been munged into single line comments
 * Leave the /// comments above global variables with a space, if they're harder to read then we'll be less likey to use them.
 * Enum comments can go after the enumeration itself '[value] /// comment'
 * include/aegisub/*.h haven't been converted yet, this will be done in a later commit
 * Some documentation blocks are in the wrong place, in the .h when it should be in the .cpp, or vice versa.

See http://devel.aegisub.org/wiki/Doxygen for some details on Doxygen and a 'style guide'.

Originally committed to SVN as r3312.
2009-07-29 22:59:22 +00:00
Amar Takhar 12aa34088a Switch all headers to using Doxygen and cleanup contact info
* Swap old email + website address with 'Aegisub Project http://www.aegisub.org/'
 * Set categories for all files (jfs)
 * Add descriptions for each file (jfs)
 * Add $Id$ keyword

Originally committed to SVN as r3310.
2009-07-29 05:43:02 +00:00
Karl Blomster f066903d98 FFMS2 a/v providers should use UTF8 strings for the cache filenames, just like for every other file. Updates #955 but does not fix it since you still get bizarre popups that I have no idea where they're coming from if the write/touch operations fail.
This change should be merged into 2.1.8.

Originally committed to SVN as r3294.
2009-07-26 23:10:12 +00:00
Karl Blomster f59dcf19f6 Add option to set FFMS2 logging level (i.e. how much spam FFmpeg prints to STDERR).
Option is called "ffmpegsource log level" and possible values are (in order of increasing spam) quiet, panic, fatal, error, warning, info, verbose, debug. The default is quiet, and I strongly recommend avoiding anything above warning.

Originally committed to SVN as r3248.
2009-07-24 01:41:16 +00:00
Karl Blomster ab1993467a Remove a bunch of no longer needed (since we removed Aegisub::string) string conversions via c_str()/wc_str(), and replace mb_str(wxConvUTF8) with utf8_str() where appropriate.
Originally committed to SVN as r3224.
2009-07-23 19:57:57 +00:00
Amar Takhar a0370f9004 Remove Aegisub::String class as it's causing problems in wx2.9. The original plan was to have it so external modules wouldn't have to depend on wx. We'll think of a different solution when the time comes. closes #940
Originally committed to SVN as r3220.
2009-07-23 15:16:53 +00:00
Amar Takhar c170f7f096 c_str() -> wc_str() in preperation for wx2.9, these changes are required for Unix, should be harmless on Windows.
Originally committed to SVN as r3214.
2009-07-23 05:32:13 +00:00
Karl Blomster 58539b885d Replace FFMSTrackMask[All|None] with #defines instead. (Was causing linking problems with some compilers for some reason).
Originally committed to SVN as r3155.
2009-07-16 21:40:17 +00:00
Karl Blomster c33ed91b12 Implement support for multiple tracks in the FFMS2 audio and video providers. Files with more than one audio or video track will now let the user pick which one he/she wishes to load. Closes #905.
Originally committed to SVN as r3145.
2009-07-16 14:48:47 +00:00
Karl Blomster a45282bfbb Update the FFMS2 audio and video providers to use the new API features.
Originally committed to SVN as r3116.
2009-07-13 22:30:48 +00:00
Fredrik Mellbin ea80b6c130 Changes required to compile because of the previous commit
Originally committed to SVN as r2992.
2009-05-28 19:34:52 +00:00
Karl Blomster 379f15659a Do COM initialization more properly (I think) in the FFMS2 providers.
Originally committed to SVN as r2989.
2009-05-25 16:42:33 +00:00
Karl Blomster c8b125943c Update FFMS2 providers to initialize COM when running under Windows, as per the new FFMS2 init procedure.
Originally committed to SVN as r2986.
2009-05-25 15:52:42 +00:00
Fredrik Mellbin 3220a2301a FFMS2:
Simplify the avisynth filters
Small api change => you can now list a group of desired colorspace output formats for automatic selection, less functions can return errors
Less singnedness warnings

Originally committed to SVN as r2978.
2009-05-23 14:18:51 +00:00
Karl Blomster a3ad037940 Fix ffms2 providers to work with latest FFMS2 API changes.
Originally committed to SVN as r2974.
2009-05-22 21:44:02 +00:00
Karl Blomster 5717f81ef2 Update FFMS2 providers to account for FFMS2 API change in last commit.
Also update ffms2.lib to corresponding version.

Originally committed to SVN as r2948.
2009-05-17 22:12:46 +00:00
Niels Martin Hansen ef407b6e68 Make FFmpegSource video and audio providers build again after FFMS2 changes last night.
Originally committed to SVN as r2944.
2009-05-16 12:47:23 +00:00
Karl Blomster c84a79fb7f Implemented an automated cache cleaner that keeps the FFMS2 index cache at a manageable size. Cleaning is started when video is opened with the FFMS2 video provider and runs in its own thread. Removal is based on last access time, and the FFMS2 providers now explicitly touch the index files on reading to make sure access time is updated.
By default the cache is kept below 42MB and 20 files; to change the defaults change "FFmpegSource max cache size" and "FFmpegSource max cache files" in config.dat. Either or both may be set to 0, but the cleaner will not delete the last index file in the directory, regardless of cache settings and of the file's size.

Originally committed to SVN as r2893.
2009-05-03 18:05:30 +00:00