Commit graph

6282 commits

Author SHA1 Message Date
Thomas Goyne
e270dc9aec Use stable_vector for AudioProviderRam's cache
stable_vector allocates its elements non-contiguously (as is required
for stability), while still giving O(1) indexing.
2012-12-22 14:44:35 -08:00
Thomas Goyne
433368dc58 Fix some weirdness in the AVS audio provider 2012-12-22 12:14:32 -08:00
Thomas Goyne
46d2819312 Use lambdas for some of DialogProgress's stuff 2012-12-22 11:51:08 -08:00
Thomas Goyne
6e5b53d1a9 Move the logic for which AudioProvider to create out of AudioController
Audio providers should be responsible for determining whether or not
they can open a URI, since it's not really possible for anything else
to. As such move the (lack of) parsing of dummy audio URIs to
DummyAudioProvider, and try to create DummyAudioProviders in
AudioProvider::CreateProvider.
2012-12-22 09:30:47 -08:00
Thomas Goyne
a4607ff6be Clean up AudioProvider a bit
Factor out some duplicated code and clean up some cruft.
2012-12-22 07:49:59 -08:00
Thomas Goyne
31feab4a8b Rewrite the dummy video dialog
Use validators for transferring data to/from the controls and for
validating the values rather than a bunch of custom logic.
2012-12-21 17:01:13 -08:00
Thomas Goyne
0b5994e8eb Always update edit box styles when it's called directly 2012-12-21 16:56:27 -08:00
Thomas Goyne
e25fc4b334 Add Remove From Dictionary to the subs edit box context menu when applicable. Closes #1184. 2012-12-21 16:56:27 -08:00
Thomas Goyne
24aef1ffef Fix word-boundary checking for edit box spellchecking 2012-12-21 16:56:27 -08:00
Thomas Goyne
835f7c0f78 Only enable the Remove Word button when the word can be removed. Updates #1184. 2012-12-21 16:56:26 -08:00
Stjepan Henc
fe630e052b Add Remove Word button to the spellchecker dialog. Updates #1184. 2012-12-21 16:56:26 -08:00
Thomas Goyne
36012c3302 Delete the respack-generated files on Clean 2012-12-17 17:21:26 -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
eab11666a9 Remove some cruft from option.h 2012-12-17 09:32:42 -08:00
Thomas Goyne
4c6be1fe55 Fix y4m loading 2012-12-17 09:32:42 -08:00
Thomas Goyne
229e5d98c5 Avoid making a full copy of the file for ThreadedFrameSource when possible
When the set of changed lines is populated, only copy those lines rather
than the entire file. On large files, this makes amend commits roughly
twice as fast when video is open.
2012-12-17 09:32:42 -08:00
Thomas Goyne
fee60be5db Announce the set of lines changed in commits
Currently this is only populated when commits are amended, for the
simple reason that it's the only time that AssFile knows what lines
changed. It is probably worth expanding this in the future.
2012-12-17 09:32:42 -08:00
Thomas Goyne
4e72fff1d9 Check the right substrings in the spellchecker dialog. Closes #1560. 2012-12-12 18:08:07 -08:00
Thomas Goyne
72ae116196 Rename SubsEditBox's private members
Mostly to cut down on conflicts with the split-editbox branch.
2012-12-12 15:17:21 -08:00
Thomas Goyne
090905056b Remove spaces in > > in nested templates 2012-12-11 10:58:28 -08:00
Thomas Goyne
6e153ed7d9 Make OpenGLTextTexture moveable so that it doesn't need to be in a shared_ptr 2012-12-11 10:41:20 -08:00
Thomas Goyne
0b133de08f Remove pointless empty destructors
An explicit empty destructor is only needed when a class has a smart
pointer to an incomplete type.
2012-12-11 09:06:21 -08:00
Thomas Goyne
9a77d564e4 Cut down on the padding under the audio toolbar 2012-12-11 08:32:58 -08:00
Thomas Goyne
7c477f3cd1 Use a real toolbar for the video box's buttons 2012-12-11 08:25:24 -08:00
Thomas Goyne
534f574a87 Delete AssDialogue::StripTag
It is not actually used anywhere.
2012-12-10 17:43:29 -08:00
Thomas Goyne
8c2062f0c7 Store AssOverrideTags directly rather than a vector of pointers 2012-12-10 17:04:18 -08:00
Thomas Goyne
a0d3b8595f Redesign AssOverrideParameter
Always store the original string form and convert it to the desired type
on demand. In most cases this is significantly faster as typically only
a few of the parameters in a line are actually read. In addition, this
makes it so that parameters which did not actually change are always
reserialized in their original form.

Delete VariableData as it's no longer used by anything.

Closes #1513.
2012-12-10 14:41:11 -08:00
Thomas Goyne
f28f6ad5b3 Join lines copied to the clipboard with newlines rather than nothing 2012-12-10 14:03:03 -08:00
Thomas Goyne
fb3500b354 Make the configure check for lua more specific
Move the generic lua check to after the checks for lua 5.1 and check for
lua < 5.2.

Closes #1559.
2012-12-10 14:01:56 -08:00
Thomas Goyne
936598e9f5 Add include directory and log files to .gitignore 2012-12-10 07:43:23 -08:00
Thomas Goyne
681de8cf37 Fix order of VariableData's initializers 2012-12-09 17:19:01 -08:00
Thomas Goyne
a36011a9dd Don't insert [Script Info] entries for empty values 2012-12-09 17:07:05 -08:00
Thomas Goyne
c1409b5c25 Add a space after the colon in [Script Info] entries 2012-12-09 17:05:11 -08:00
Thomas Goyne
96b3656742 Stick to the standard order of sections when inserting lines 2012-12-09 15:44:03 -08:00
Thomas Goyne
205d408f3e Move tag/param proto declarations to the cpp file
It's purely an implementation detail of the parser that should not be
exposed to the outside world.
2012-12-09 15:40:29 -08:00
Thomas Goyne
8cf47c38b6 Drop AssOverrideParameter::omitted since it's equivalent to the type being VARDATA_NONE 2012-12-09 10:36:13 -08:00
Thomas Goyne
d2a0a76ca9 Store AssOverrideParameters directly rather than a vector of pointers to them 2012-12-09 10:12:50 -08:00
Thomas Goyne
851f7f40e6 Make VariableData uncopyable but moveable 2012-12-09 10:12:50 -08:00
Thomas Goyne
482d31299b Remove unused things from VariableData 2012-12-09 08:04:29 -08:00
Thomas Goyne
7e38ad6ec7 Don't add {} to the body of \t tags 2012-12-09 08:04:20 -08:00
Thomas Goyne
bd35d9308d Use unordered_set for the actor/effect values 2012-12-07 19:24:42 -08:00
Thomas Goyne
9b44f92235 Make AssEntry purely a base class and add AssInfo
Now that all the other junk is being dropped from the file, script info
lines are the only thing left which was a concrete AssEntry, and
AssEntry wasn't actually a very good way to store them.
2012-12-07 18:55:29 -08:00
Thomas Goyne
cccd95941d Fix syntax highlighting for multiple karaoke templater expression blocks 2012-12-07 18:20:09 -08:00
Thomas Goyne
28705000bb Use boost::join in a handful of places 2012-12-07 08:25:47 -08:00
Thomas Goyne
0ac8df140c Make the check for if an override tag needs parens less dumb 2012-12-07 08:12:45 -08:00
Thomas Goyne
422cfb153f Add a box with the character count of the longest line
Character counts are a pretty terrible measure of anything, but it's
still the main measure of length used in most subtitling standards
(because subtitling standards are written under the assumption that the
tools are terrible (which is generally an accurate assumption)).
2012-12-06 10:01:47 -08:00
Thomas Goyne
1b15a753a1 Add .m4v to the list of video file extensions
It would be nice if this didn't require adding it in five different places...
2012-12-05 20:23:32 -08:00
Thomas Goyne
222c09b58f Increase maximum undo levels to 10000 from 100 2012-12-05 19:12:34 -08:00
Thomas Goyne
f3122aca30 Make the precompiled header depend on the .h file 2012-12-05 18:46:25 -08:00
Thomas Goyne
d5aae26d83 Use boost::flyweight to intern the wxString members of AssDialogue
100 no-op non-amend commits on a subtitle file with 6689 dialogue lines,
with the undo limit set to 100:

Without flyweight:
	No video open:
		Initial memory usage: 30.6 MB
		Final memory usage: 498.0 MB
		Elapsed time: 6.3 seconds
	Video open, using libass:
		Initial memory usage: 54.3 MB
		Final memory usage: 653.3 MB
		Elapsed time: 23.7 seconds

With flyweight:
	No video open:
		Initial memory usage: 26.0 MB
		Final memory usage: 104.5 MB
		Elapsed time: 3.0 seconds
	Video open, using libass:
		Initial memory usage: 46.7 MB
		Final memory usage: 251.8 MB
		Elapsed time: 13.0 seconds

No video open:
	Memory usage: -79%
	Time: -52%
Video open:
	Memory usage: -61.5%
	Time: -45%

100 no-op amend commits on a line in the middle of a subtitle file with
6689 dialogue lines, with video open:

Without flyweight:
	Initial memory usage: 48.2 MB
	Final memory usage: 182.3 MB
	Elapsed time: 22.3 seconds

With flyweight:
	Initial memory usage: 39.8 MB
	Final memory usage: 165.8 MB
	Elapsed time: 13.8 seconds

Note: The large jump in memory usage here is due to that the benchmark
is blocking the main thread, so at the end there are ~100 video frames
waiting to be displayed.
2012-12-05 18:43:44 -08:00