Commit graph

82 commits

Author SHA1 Message Date
Thomas Goyne
a1d44cafc1 Redesign VideoFrame
Eliminate the manual memory management and shuffle around where the
copies are made to eliminate the need for non-owning video frames.
2013-07-01 18:35:09 -07:00
Thomas Goyne
b67a0538ff Drop support for non-little-endian platforms
Aegisub doesn't actually currently run on any.
2013-06-11 20:54:07 -07: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
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
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
a7b254e95f Use the user's ffms2 error handling mode when indexing video files to avoid reindexing when opening the audio
Originally committed to SVN as r6925.
2012-06-30 15:27:11 +00:00
Thomas Goyne
9f7bdd8d17 Don't force ffms2 threads to 1 if it's recent enough
Originally committed to SVN as r6909.
2012-06-16 04:10:32 +00:00
Thomas Goyne
77821c10b7 Don't also force TV range when Force BT.601 is enabled
Originally committed to SVN as r6908.
2012-06-15 13:09:15 +00:00
Thomas Goyne
2addf40b31 Fix typo (204M -> 240M)
Originally committed to SVN as r6763.
2012-05-11 14:42:30 +00:00
Thomas Goyne
bc74dfc33b Update the video matrix tagging scheme
Write the color range and color space used to convert video to RGB to
the YCbCr Matrix field, or None if no non-RGB video was opened. See
http://code.google.com/p/xy-vsfilter/issues/detail?id=91 for related
discussion.

Originally committed to SVN as r6762.
2012-05-11 14:38:44 +00:00
Thomas Goyne
baacea6ab0 Force threads to 1 when opening video via lavf since the ffms2 bug that makes multithreaded decoding sometimes break still hasn't been fixed
Originally committed to SVN as r6761.
2012-05-11 02:58:34 +00:00
Thomas Goyne
3253ccdb90 Move the "Force BT.601" option out of the FFmpegSource category as it's no longer FFMS2-specific, and make it on by default
Originally committed to SVN as r6708.
2012-04-16 23:55:21 +00:00
Thomas Goyne
bd0f6a4c2b Extract the cache cleaning logic from FFmpegSourceProvider
Originally committed to SVN as r6653.
2012-04-03 22:44:40 +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
30d7a18e97 Add missing spaces after colons in error messages
Originally committed to SVN as r6568.
2012-03-11 23:51:10 +00:00
Thomas Goyne
175443d7a6 Fix int overflow in DAR calculation
Originally committed to SVN as r6567.
2012-03-11 23:51:04 +00:00
Thomas Goyne
366baff2f8 Add option to force all video opened with FFMS2 to BT.601 for VSFilter compatibility
Originally committed to SVN as r6535.
2012-03-07 04:25:46 +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
c4cba875b4 Always index all tracks when "Video/Open Audio" is enabled, as it'll always double-index otherwise
Originally committed to SVN as r6518.
2012-02-28 01:22:29 +00:00
Thomas Goyne
ea130d9af2 Automatically set the aspect ratio when opening anamorphic video with ffms
Originally committed to SVN as r6506.
2012-02-23 01:30:59 +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
3b5bc88285 Write the video's colorspace to the script info section
Originally committed to SVN as r6347.
2012-01-23 23:07:35 +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
cc9cc6d713 Use FFMS_SetOutputFormatV2 with sufficiently recent FFMS2 rather than the deprecated FFMS_SetOutputFormatV
Originally committed to SVN as r5740.
2011-10-17 17:52:11 +00:00
Thomas Goyne
62181365b9 Default to 25 FPS if there are too few frames in a video to compute the FPS
Originally committed to SVN as r5683.
2011-09-29 20:27:23 +00:00
Thomas Goyne
d990bbbb99 Eliminate all unnecessary uses of L and _T
Originally committed to SVN as r5611.
2011-09-28 19:43:11 +00:00
Thomas Goyne
0cc902487d Remove a now-bogus sanity check on thread count in the ffms video provider
Originally committed to SVN as r5522.
2011-07-27 05:36:36 +00:00
Thomas Goyne
824294078f Move YUV -> RGB conversion to VideoProviderYUV4MPEG and remove support for formats other than RGB32 from AegiVideoFrame
Originally committed to SVN as r5079.
2010-12-31 21:03:11 +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
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
Thomas Goyne
acba2c6b63 Rewrite VFR handling in Aegisub.
Kill vfr.h and vfr.cpp and use the libaegisub versions of them instead.

Rather than the globals VFR_Input and VFR_Output, everything related to
frame rate is now part of the video context. Most things which used to
use VFR_Output now call VideoContext::TimeAtFrame etc.; video providers,
rather than modifying VFR_Input directly, now have getters for their
frame rates which VideoContext calls. Read-only public access to
VFR_Input and VFR_Output are still provided (hopefully temporarily) for
a few things which were awkward to do through VideoContext.

The Avisynth provider now might correctly handle VFR MKVs which can be
opened with DirectShowSource but not DSS2.

Rework keyframe handling as well, so that it continues to match the vfr
handling in design and implementation.

Originally committed to SVN as r4662.
2010-07-08 04:29:04 +00:00
Thomas Goyne
c290b6b811 Silence some prefast warnings
Originally committed to SVN as r4472.
2010-06-11 02:24:59 +00:00
Thomas Goyne
90893f1048 Make the capitalization of FFmpegSource in options consistent, as option names are now case-sensitive.
Originally committed to SVN as r4414.
2010-06-03 05:07:10 +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
653427fbad Update ffms2 to r234, part 2. Compilation fixed again.
Originally committed to SVN as r3815.
2009-11-21 21:15:02 +00:00
Thomas Goyne
4fc2b90399 Add support for externally controlled frame data to AegiVideoFrame, and take advantage of this in the FFMS2 video provider to eliminate a copy of the frame data. Net speedup for seeking from beginning to end of several test files is 10-20%.
Originally committed to SVN as r3729.
2009-10-24 02:07:56 +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
7a8c5229fd * Remove wxprec.h from all files other than agi_pre.h. Including this in various headers is useless as it includes wx.h which includes dozens of 'common' wx headers. With this we're unable to tell which files rely on which interfaces. This commit removes them and manually places in required headers as-needed.
* Update agi_pre.h to include some missing headers, also move required windowsheaders to the top of the list
 * Use <> versus "" for the wx header in avisynth_wrap.cpp
 * Remove xx/wx.h from agi_pre.h as it's included by wxprec.h.

Originally committed to SVN as r3513.
2009-09-10 10:26:50 +00:00
Amar Takhar
77e2eaef04 Comment two unused variables to silence warnings.
Originally committed to SVN as r3452.
2009-09-02 08:04:45 +00:00
Karl Blomster
65fb2e7efa Remove a pointless attempt to reindex a file in the ffms2 video provider. It didn't help anything, in fact it just caused crashes since the source object was free'd after the first attempt. Fixes #976.
Originally committed to SVN as r3377.
2009-08-07 20:16:13 +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