Commit graph

58 commits

Author SHA1 Message Date
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
Thomas Goyne
c1ed667025 Add the curly braces in AssDialogueBlockOverride::GetText
All of the calling code added them, so there's no reason not to just do
it in one place.
2012-12-04 19:49:05 -08:00
Thomas Goyne
1c176e8568 Store parsed dialogue blocks in a ptr_vector
This eliminates the need to explicitly delete the parsed blocks.

Also go ahead and remove AssDialogue::Blocks since it's really not a
very good idea in general.
2012-12-02 12:29:33 -08:00
Thomas Goyne
b507f49cec Remove the pad argument from GetMarginString
It's no longer ever actually set to true.
2012-12-02 07:59:31 -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
4e8e5b597c Change AssEntry::group to an enum 2012-11-25 14:01:50 -08:00
Thomas Goyne
bdf7a0ca83 Parse unclosed override blocks as plain text as VSFilter does 2012-11-24 10:04:53 -08:00
Thomas Goyne
67df64e879 Use range-based for loops in a bunch of places 2012-11-12 18:35:25 -08:00
Thomas Goyne
99a20e4d1c Move InvalidMarginIdError to ass_dialogue.h 2012-10-26 17:26:53 -07:00
Thomas Goyne
e44c47c863 Remove $Id$ markers since git doesn't support them 2012-10-25 17:39:49 -07:00
Thomas Goyne
ff6394c95e Throw only real exceptions from subtitle io stuff 2012-10-25 17:39:49 -07:00
Thomas Goyne
c7fd04a739 Rename ASS -> Ass in symbol names
Most types and functions used Ass, but a decent number used ASS, so make
them consistent.
2012-10-16 09:52:19 -07:00
Thomas Goyne
53433426bb Fix some stuff from Coverity Scan
Mostly just bugs in unreachable code and stylistic things, but there's a
few incorrect reachable things that were working by coincidence and
gratuitous dynamic_casts.
2012-10-15 18:16:09 -07:00
Thomas Goyne
a1fad1f947 Drop support for ASS2
It is very unlikely that anyone has ever actually used ASS2 for
anything, and in practice it was not usable anyway as the bottom margin
was always either ignored or blindly overwritten.
2012-10-12 14:54:08 -07:00
Thomas Goyne
a0c92f83f9 Fix some PVS-Studio warnings 2012-10-12 14:51:30 -07:00
Thomas Goyne
d49e59653f Add a version of ParseASSTags that returns the blocks rather than mutating the line
Originally committed to SVN as r6626.
2012-03-28 23:58:50 +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
75ae053958 Make some stuff const
Originally committed to SVN as r6590.
2012-03-20 00:39:10 +00:00
Thomas Goyne
759b8433c1 Silence some clang warnings
Originally committed to SVN as r6558.
2012-03-10 02:16:08 +00:00
Thomas Goyne
fae7261bd0 Make AssTime::ParseASS a constructor overload instead
Originally committed to SVN as r6468.
2012-02-14 00:35:06 +00:00
Thomas Goyne
3af57cdbcd Copy the source line's group in AssDialogue's copy constructor as copying wxStrings is far faster than constructing new ones
Originally committed to SVN as r6409.
2012-02-01 00:47:49 +00:00
Thomas Goyne
c2d3c910c7 Replace some uses of "" with wxString()
Despite special-casing zero-length input, wxString("") takes over four
times as long as wxString() - and on a 10k line script, this change cuts
AssFile's copy constructor's runtime in half.

Originally committed to SVN as r6401.
2012-01-31 00:44:43 +00:00
Thomas Goyne
2bc43eb886 Fix use of uninitialized variable when setting margins to an empty string
Originally committed to SVN as r6322.
2012-01-20 05:14:56 +00:00
Thomas Goyne
9cfe230682 Remove unused 'parent' member from AssDialogueBlock and make 'text' protected
Originally committed to SVN as r6165.
2011-12-26 22:21:08 +00:00
Thomas Goyne
7b4759cc13 Parse {} as an empty override block rather than an empty comment
Originally committed to SVN as r6164.
2011-12-26 22:21:02 +00:00
Thomas Goyne
71345af81a Overload operator int() on AssTime and remove GetMS/SetMS
Originally committed to SVN as r6123.
2011-12-22 21:28:51 +00:00
Thomas Goyne
d28c4c4d8b Kill AssEntry::Valid, as there wasn't actually any way to get a fully-constructed entry with it set to false
Originally committed to SVN as r6034.
2011-12-22 21:14:51 +00:00
Thomas Goyne
56e6f7d5b2 Move ASS -> SRT tag conversion to the SRT subtitle format from AssDialogue
Originally committed to SVN as r5911.
2011-11-25 19:28:19 +00:00
Thomas Goyne
0992a839cc Port new SRT parser from 2.1.9. Updates #1301.
Originally committed to SVN as r5910.
2011-11-25 19:27:51 +00:00
Thomas Goyne
cc147d1660 Eliminate uses of c_str made unnecessary by changed to wxString::Format in wx 2.9
Originally committed to SVN as r5612.
2011-09-28 19:43:48 +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
2a51ad837e Fix non-precompiled header compilation
Originally committed to SVN as r4723.
2010-08-02 22:14:11 +00:00
Thomas Goyne
002aad0b29 Don't call CompressForStack on copied AssFiles as the parsed data isn't copied in the first place.
Originally committed to SVN as r4671.
2010-07-11 03:31:19 +00:00
Thomas Goyne
518e78ac6f SSA doesn't have a layer field
Originally committed to SVN as r4666.
2010-07-08 07:44:21 +00:00
Thomas Goyne
5c976dc0a0 Make AssDialogue::GetData ~50% faster
Originally committed to SVN as r4665.
2010-07-08 07:15:04 +00:00
Thomas Goyne
1da57a4be5 Make AssStyle::Clone ~15 times faster.
Originally committed to SVN as r4664.
2010-07-08 07:14:55 +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
e2f8e69612 Beat some semblance of sanity into ass_override and related files. Fixes a pile of crashes when tags are missing expected parameters.
Originally committed to SVN as r4581.
2010-06-24 01:24:43 +00:00
Thomas Goyne
a40b9c4b91 Simplify and speed up AssFile's copy constructor and assignment operator.
Originally committed to SVN as r4565.
2010-06-22 00:03:33 +00:00
Thomas Goyne
8756dc1800 Add copy constructor to AssDialogue and use it in Clone
Originally committed to SVN as r4561.
2010-06-22 00:03:11 +00:00
Thomas Goyne
392ce99083 Kill AssDialogue::UpdateData, which last had a non-empty body 3.5 years ago
Originally committed to SVN as r4525.
2010-06-16 06:20:19 +00:00
Thomas Goyne
166c95975b Templatize VariableData's getters and setters
Originally committed to SVN as r4523.
2010-06-16 06:20:06 +00:00
Thomas Goyne
38d922c57a Remove time-consuming reparsing of the line in VisualTool::SetOverride
Originally committed to SVN as r4430.
2010-06-04 03:08:04 +00:00
Thomas Goyne
f001651865 Replace AssDialogueBlock::GetAsOverride etc. with dynamic_cast
Originally committed to SVN as r4428.
2010-06-04 03:07:52 +00:00
Thomas Goyne
2124a1dbd3 Rework how sorting works and add sorting by style
Rather than going through a ton of work to ensure that every AssEvent
has a sensible start time that happens to leave it in the right place
after sorting, simply sort only consecutive blocks of AssDialogues and
leave everything else untouched. Note that this results in different
behavior when there are multiple [Events] sections in a file -- rather
than moving lines between sections and keeping the number of lines per
section constant, each section keeps the lines it had.

As it's now easy to do, also add sorting by style name and end time.

Closes #614.

Originally committed to SVN as r4307.
2010-05-19 00:44:44 +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
05ae13a8ab * Rename stdwx.h to agi_pre.h as it doesn't include wx headers only, it's confusing.
* Rename include guard to AGI_PRE.

Originally committed to SVN as r3509.
2009-09-10 04:14:28 +00:00
Amar Takhar
925fa88c0c * Remove #pragma once.
* Sort wx headers and wrap with #ifndef WX_PRE.
 * Add missing heade rto stdwx.h.
M    src/ass_attachment.h
M    src/subs_grid.cpp
M    src/ass_dialogue.cpp
M    src/ass_attachment.cpp
M    src/aegisub_endian.h
M    src/audio_display.cpp
M    src/audio_karaoke.cpp
M    src/dialog_kara_timing_copy.cpp
M    src/ass_dialogue.h
M    src/text_file_writer.cpp
M    src/stdwx.h

Originally committed to SVN as r3503.
2009-09-10 02:23:43 +00:00
Niels Martin Hansen
b6a63c15e6 Adjust throwing of exceptions to the new style documented in exception.h.
(Good thing nothing is catching these yet, and it's the only case of "new style" exceptions being used.)

Originally committed to SVN as r3365.
2009-08-05 20:52:44 +00:00
Niels Martin Hansen
51288bc06d Make a typedef of a function type, hoping to fix Doxygen warnings.
Originally committed to SVN as r3348.
2009-08-01 03:27:13 +00:00