]> granicus.if.org Git - libass/log
libass
10 years agoSimplify storage size handling
Oleg Oshmyan [Fri, 24 Jan 2014 19:30:58 +0000 (19:30 +0000)]
Simplify storage size handling

No functional changes.

10 years agoBuild: Remove references to unimplemented ARM ASM
11rcombs [Sun, 26 Jan 2014 02:48:10 +0000 (20:48 -0600)]
Build: Remove references to unimplemented ARM ASM

10 years agoParser: don't increment render_priv->state.bm_run_id (unnecessary)
11rcombs [Sat, 25 Jan 2014 23:48:24 +0000 (17:48 -0600)]
Parser: don't increment render_priv->state.bm_run_id (unnecessary)

10 years agoAdded x86 ASM functions
11rcombs [Sat, 25 Jan 2014 22:55:21 +0000 (16:55 -0600)]
Added x86 ASM functions

10 years agoCombine bitmaps before applying blur and shadow
11rcombs [Sun, 26 Jan 2014 01:06:12 +0000 (19:06 -0600)]
Combine bitmaps before applying blur and shadow

10 years agoTest/Profile: Support out-of-tree builds
11rcombs [Sat, 25 Jan 2014 22:46:10 +0000 (16:46 -0600)]
Test/Profile: Support out-of-tree builds

10 years agoTest: Render at 1280x720
11rcombs [Sat, 25 Jan 2014 22:33:00 +0000 (16:33 -0600)]
Test: Render at 1280x720

10 years agoAdded profile program and corresponding configure options
11rcombs [Tue, 31 Dec 2013 17:49:30 +0000 (11:49 -0600)]
Added profile program and corresponding configure options

10 years agoRemove configure from autogen.sh
11rcombs [Sun, 19 Jan 2014 00:12:27 +0000 (18:12 -0600)]
Remove configure from autogen.sh

10 years agoMerge pull request #26 from wm4/warnings
Grigori Goronzy [Sat, 25 Jan 2014 01:27:03 +0000 (17:27 -0800)]
Merge pull request #26 from wm4/warnings

Use more warning flags

10 years agoAttempt to make code more readable
wm4 [Fri, 24 Jan 2014 01:27:26 +0000 (02:27 +0100)]
Attempt to make code more readable

No more double pointer dereferencing.

10 years agoAppend new cache items at the start of the collision list
11rcombs [Fri, 24 Jan 2014 01:23:30 +0000 (02:23 +0100)]
Append new cache items at the start of the collision list

The idea is that more recently-added cache items are more likely to
get hits.

Signed-off-by: wm4 <wm4@nowhere>
10 years agoSimplify hash function
11rcombs [Fri, 24 Jan 2014 01:09:46 +0000 (02:09 +0100)]
Simplify hash function

We can rely on fast multiplication and good compilers.

v2: use default FNV-1a prime

Signed-off-by: wm4 <wm4@nowhere>
Signed-off-by: Grigori Goronzy <greg@chown.ath.cx>
10 years agoMerge pull request #28 from astiob/compat
Grigori Goronzy [Sat, 25 Jan 2014 00:38:11 +0000 (16:38 -0800)]
Merge pull request #28 from astiob/compat

Fix \k starting time and incorrectly skipped fonts

10 years agofontconfig: don't compact the sorted font list
Oleg Oshmyan [Thu, 23 Jan 2014 20:21:58 +0000 (20:21 +0000)]
fontconfig: don't compact the sorted font list

Some broken fonts are dropped by Fontconfig during compacting.

10 years agoStart \k, \ko at exact start time, not right after it
Oleg Oshmyan [Sun, 19 Jan 2014 00:18:19 +0000 (00:18 +0000)]
Start \k, \ko at exact start time, not right after it

10 years agobuild: add more warnings
wm4 [Fri, 24 Jan 2014 00:37:41 +0000 (01:37 +0100)]
build: add more warnings

10 years agoass_strtod: use modern C
wm4 [Fri, 24 Jan 2014 00:37:07 +0000 (01:37 +0100)]
ass_strtod: use modern C

10 years agoRemove some ass_msg() calls
wm4 [Mon, 20 Jan 2014 23:32:28 +0000 (00:32 +0100)]
Remove some ass_msg() calls

These aren't very useful for debugging due to the high volume of the log
output in problem cases. In fact, all they do is making the code slower
(the message callback can easily appear in the profiler output, even if
the callback doesn't actually print the messages).

10 years agoAllocate track array exponentially
wm4 [Thu, 23 Jan 2014 17:38:51 +0000 (18:38 +0100)]
Allocate track array exponentially

This reduces the frequency of reallocations.

10 years agoFix \fade corner cases
Oleg Oshmyan [Wed, 15 Jan 2014 02:38:54 +0000 (02:38 +0000)]
Fix \fade corner cases

Times in \fade(,,,-1,fadein,fadeout,-1)
are interpreted as in \fad(fadein,fadeout).

Make sure we check the times in the same
order as VSFilter in case they are not sorted.

10 years agoFix \t corner cases
Oleg Oshmyan [Wed, 15 Jan 2014 02:16:58 +0000 (02:16 +0000)]
Fix \t corner cases

The end time is reset to line duration if and only if it is zero.
Negative accelerations are allowed (and can cause overflow later).

10 years agoDon't ignore trailing empty line
Oleg Oshmyan [Wed, 15 Jan 2014 01:07:26 +0000 (01:07 +0000)]
Don't ignore trailing empty line

Trailing \N is effectively ignored, but
\N\N should still yield an empty line.

10 years agoFix missing pointer dereference in 1636a551
Oleg Oshmyan [Tue, 14 Jan 2014 13:11:01 +0000 (13:11 +0000)]
Fix missing pointer dereference in 1636a551

10 years agoMerge pull request #17 from astiob/compat
Grigori Goronzy [Wed, 8 Jan 2014 20:30:42 +0000 (12:30 -0800)]
Merge pull request #17 from astiob/compat

Various compatibility fixes + fix @font advance with HarfBuzz

10 years agoDo not reset \pbo and \p values after each drawing
Oleg Oshmyan [Wed, 8 Jan 2014 02:18:56 +0000 (04:18 +0200)]
Do not reset \pbo and \p values after each drawing

Confirmed with VSFilter. This complements the previous commit.

10 years agoTerminate drawings on {
Oleg Oshmyan [Wed, 8 Jan 2014 01:39:36 +0000 (03:39 +0200)]
Terminate drawings on {

This brings us in line with VSFilter
and also fixes Google Code issue #101.

10 years agoshaper: disable ligatures for non-zero \fsp
Oleg Oshmyan [Tue, 7 Jan 2014 23:28:49 +0000 (01:28 +0200)]
shaper: disable ligatures for non-zero \fsp

10 years agoDistinguish cached glyphs with different hspacing when border_style == 3
Oleg Oshmyan [Tue, 7 Jan 2014 22:48:36 +0000 (00:48 +0200)]
Distinguish cached glyphs with different hspacing when border_style == 3

hspacing affects opaque box borders.

10 years agoFix \fsp: use orig_scale_x, not post-fix_glyph_scaling scale_x
Oleg Oshmyan [Tue, 7 Jan 2014 21:49:53 +0000 (23:49 +0200)]
Fix \fsp: use orig_scale_x, not post-fix_glyph_scaling scale_x

10 years agoDon't try to remove end-of-line \fsp
Oleg Oshmyan [Tue, 7 Jan 2014 21:41:43 +0000 (23:41 +0200)]
Don't try to remove end-of-line \fsp

VSFilter does not do this.

The code being removed was already buggy: i > 0 should
have been "got any non-skipped glyphs since last_break?",
and hspacing should have been taken from glyphs[i-1].

10 years agoFix \pbo
Oleg Oshmyan [Tue, 7 Jan 2014 13:32:05 +0000 (15:32 +0200)]
Fix \pbo

b61d260b attempted to add support for \p scaling to \pbo.
However, while it fixed the exact sample originally reported,
it broke \pbo with other \p values, including \p1, by confusing
the direction of scaling and the units in which \pbo is measured.

In addition, the descenders assigned to drawings have always
had a wrong sign, causing lines that contain drawings with \pbo
to be shifted in the wrong direction: negative \pbo raised bottom-
aligned lines, while positive \pbo lowered top-aligned lines.

All errors and fixes have been confirmed with VSFilter.

10 years agoScale distance to screen plane like blur radius
Oleg Oshmyan [Fri, 27 Dec 2013 01:12:46 +0000 (03:12 +0200)]
Scale distance to screen plane like blur radius

VSFilter forgets to scale this distance,
just like it forgets to scale blur radius.

10 years agoAccept colors with arbitrary sequences of leading & and H
Oleg Oshmyan [Thu, 26 Dec 2013 02:50:19 +0000 (04:50 +0200)]
Accept colors with arbitrary sequences of leading & and H

10 years agoA whole bunch of parsing and default value fixes
Oleg Oshmyan [Thu, 26 Dec 2013 02:26:43 +0000 (04:26 +0200)]
A whole bunch of parsing and default value fixes

Obtained by reading the xy-VSFilter source code.

10 years agoFix \fs+ and \fs-
Oleg Oshmyan [Thu, 26 Dec 2013 00:33:57 +0000 (02:33 +0200)]
Fix \fs+ and \fs-

The argument is a relative amount. The unit is: \fs+1 = +10%.

10 years agoStop animating \b and \i
Oleg Oshmyan [Wed, 25 Dec 2013 23:00:05 +0000 (01:00 +0200)]
Stop animating \b and \i

Unlike what the cc635086 message says, VSFilter does not animate them.

10 years agoStop misparsing and add support for \fsc
Oleg Oshmyan [Wed, 25 Dec 2013 22:17:06 +0000 (00:17 +0200)]
Stop misparsing and add support for \fsc

10 years agoSupport fractional \org arguments
Oleg Oshmyan [Wed, 25 Dec 2013 22:09:38 +0000 (00:09 +0200)]
Support fractional \org arguments

10 years agoParse Angle overrides as floating-point numbers
Oleg Oshmyan [Tue, 3 Dec 2013 02:19:05 +0000 (02:19 +0000)]
Parse Angle overrides as floating-point numbers

This complements 5903771e.

10 years agoshaper: actually correctly handle @font advance
Oleg Oshmyan [Fri, 3 Jan 2014 17:27:34 +0000 (19:27 +0200)]
shaper: actually correctly handle @font advance

The code was confusing glyph index and Unicode codepoint.
256df617 attempted a fix but merely moved the wrong code.

Fixes Google Code issue #94.

Vertical ligatures are possibly still broken, but
horizontal ligatures and non-ligatures are correct now.

10 years agoMerge pull request #10 from astiob/blur
Grigori Goronzy [Tue, 7 Jan 2014 19:12:46 +0000 (11:12 -0800)]
Merge pull request #10 from astiob/blur

Blur fixes

10 years agoDon't forget to apply \be to the last row/column
Oleg Oshmyan [Tue, 17 Dec 2013 19:44:06 +0000 (21:44 +0200)]
Don't forget to apply \be to the last row/column

10 years agoFix mismatched/out-of-bounds accesses in vertical \blur
Oleg Oshmyan [Tue, 17 Dec 2013 19:39:23 +0000 (21:39 +0200)]
Fix mismatched/out-of-bounds accesses in vertical \blur

10 years agoSpeed up \blur table generation
Oleg Oshmyan [Sun, 10 Nov 2013 22:11:18 +0000 (22:11 +0000)]
Speed up \blur table generation

Based on xy-VSFilter commit 54391d3a.

10 years agoImprove blur quality: use volume 65536 and initialize left column
Oleg Oshmyan [Fri, 8 Nov 2013 19:25:20 +0000 (19:25 +0000)]
Improve blur quality: use volume 65536 and initialize left column

10 years agoFix compilation with VC++ 2013
Thomas Goyne [Wed, 11 Dec 2013 00:21:53 +0000 (16:21 -0800)]
Fix compilation with VC++ 2013

For whatever reason FT_Vector points[4] = { ... }; needs to come at the
beginning of a scope. Since that block was duplicated, just extract it
to a function.

This does not include buildsystem support, so actually compiling with
VC++ requires creating a project and supplying a config.h file.

Signed-off-by: wm4 <wm4@nowhere>
10 years agoMerge pull request #6 from 11rcombs/ms-symbol-fix
Grigori Goronzy [Fri, 6 Dec 2013 22:52:32 +0000 (14:52 -0800)]
Merge pull request #6 from 11rcombs/ms-symbol-fix

Hack to fix MS Symbol-encoded fonts

10 years agoAdded ass_font_index_magic to fix char indexes in weird encodings
11rcombs [Fri, 6 Dec 2013 14:02:56 +0000 (08:02 -0600)]
Added ass_font_index_magic to fix char indexes in weird encodings

10 years agoTry to make really weird looking macro mess more understandable
wm4 [Mon, 25 Nov 2013 23:13:57 +0000 (00:13 +0100)]
Try to make really weird looking macro mess more understandable

The "if (0) {  // cool ;)" is just mindblowing.

10 years agoAdd ass_library_version()
wm4 [Mon, 25 Nov 2013 22:59:04 +0000 (23:59 +0100)]
Add ass_library_version()

Based on the patch by chadr123.

See google code issue #113.

10 years agoReset text origin on \fay changes for VSFilter compatibility
wm4 [Thu, 24 Oct 2013 11:04:48 +0000 (13:04 +0200)]
Reset text origin on \fay changes for VSFilter compatibility

Comparing this rendering of this line:

{\fnTahoma\c&H000000&\fs100\an7\fay0.115\pos(240,250)}——————–>{\fay0.0}——>

To this line:

{\fnTahoma\c&H000000&\fs100\an7\fay0.0\pos(240,250)}——————–>{\fay0.0}——>

The second arrow is in the same place for both lines when using
VSFilter, but the origin of the second shear is different when using
libass.

After every change in \fay or a newline, the vertical offset resets
to 0.

Fixes issue #80. Bug report and patch by BwackNinja (BwackNi...@gmail.com)
(this commit corresponds to the patch issue_80_3.patch)

10 years agoUpdate changelog 0.10.2 0.10.2
Grigori Goronzy [Mon, 14 Oct 2013 09:32:06 +0000 (11:32 +0200)]
Update changelog

10 years agoUpdate version info
Grigori Goronzy [Mon, 14 Oct 2013 09:31:35 +0000 (11:31 +0200)]
Update version info

10 years agoDon't rely on events being sorted in ass_step_sub()
wm4 [Mon, 7 Oct 2013 11:59:08 +0000 (13:59 +0200)]
Don't rely on events being sorted in ass_step_sub()

ass_step_sub() assumed that the subtitle event list was sorted by event
start time, but that is not guaranteed. Making the list sorted is not
an option. (At least for now - too many issues are in the way to get
such a change being done.) Fix this function so that it works with an
unsorted event list.

Semantics regarding corner cases might be slightly different, such as
what happens if the now parameter coincides with event start/end, or
behavior with overlapping subtitles.

10 years agoass_shaper: changing scale_x/y starts a new glyph run
wm4 [Wed, 25 Sep 2013 21:28:38 +0000 (23:28 +0200)]
ass_shaper: changing scale_x/y starts a new glyph run

Since font_size is usually normalized to 256, scale_x/y has to be used
for this purpose.

10 years agoCosmetics: remove repetition
wm4 [Wed, 25 Sep 2013 18:00:14 +0000 (20:00 +0200)]
Cosmetics: remove repetition

10 years agoFix Hinting again
wm4 [Wed, 25 Sep 2013 17:23:52 +0000 (19:23 +0200)]
Fix Hinting again

Commit 05eb520 missed some duplicated bits in ass_shaper.c.

<wm4> oh crap
<zgreg> oh crap indeed

Instead of duplicating the logic in ass_shaper.c, just change the
glyphs before they even get into processing. This way, all code
reading the font size etc. is affected. This essentially reverts
commit c207000c, because it's not needed anymore.

10 years agoSkip both newline and carriage return.
Reimar Döffinger [Tue, 24 Sep 2013 20:28:15 +0000 (22:28 +0200)]
Skip both newline and carriage return.

'\r' characters weren't skipped correctly.

SKIP_SYMBOL from original patch renamed to IS_SKIP_SYMBOL.

Signed-off-by: wm4 <wm4@nowhere>
10 years agoRestore hinting
wm4 [Tue, 24 Sep 2013 20:28:35 +0000 (22:28 +0200)]
Restore hinting

This was broken since commit f780146. For reasons why, read the commit
message of that commit. To make it short, we set the font size to
something large and constant (256), and scale the font outlines returned
by freetype to the size we need in order to get smooth animation and
accurate positioning.

Of course, this obviously breaks hinting. Fix hinting by not using the
hack mentioned above if hinting enabled.

To mitigate the issues caused by freetype grid fitting and extremely
bad ASS scripts (such as setting font size to very small values and
scaling them up with \fscx/y), we still adjust the font size such that
the font is never scaled in Y direction (only in X direction, because
the \fscx/y tags can change aspect ratio).

Also see google code issue #46.

10 years agoenca: fix memory leak
wangkun [Tue, 6 Aug 2013 03:28:47 +0000 (11:28 +0800)]
enca: fix memory leak

10 years agoFix fribidi include path
wm4 [Wed, 17 Jul 2013 16:32:26 +0000 (18:32 +0200)]
Fix fribidi include path

The old include statement works only by coincidence, and will actually
break the build on certain setups.

10 years agoDocument insane (xy-)vsfilter color semantics
wm4 [Fri, 28 Jun 2013 16:28:18 +0000 (18:28 +0200)]
Document insane (xy-)vsfilter color semantics

10 years agoFix OS/2 usWinDescent/usWinAscent for quirky fonts
Grigori Goronzy [Fri, 5 Jul 2013 23:14:39 +0000 (01:14 +0200)]
Fix OS/2 usWinDescent/usWinAscent for quirky fonts

Some fonts stuff a signed, negative value into this unsigned
field. This usually causes very small and wrongly positioned
rendering. Also handle usWinAscent similarly, just in case.

Fixes issue #106.

11 years agoDon't mutate input buffer for ass_read_memory()
wm4 [Sat, 22 Jun 2013 17:36:42 +0000 (19:36 +0200)]
Don't mutate input buffer for ass_read_memory()

Fixes google code issue #88.

process_text() garbles the memory as the text is parsed.

This also fixes that the user provided buffer implicitly had to
be null terminated. This wasn't obvious, because the caller
passes in the buffer length. libass ignored the buffer length
(unless a codepage was provided and iconv was enabled), and
happily read past the end of the buffer.

It would be much nicer if the parsing code would be fixed,
instead of just copying the input buffer. Maybe one day.

11 years agoRemove unused variables
wm4 [Sat, 22 Jun 2013 17:28:35 +0000 (19:28 +0200)]
Remove unused variables

11 years agoAllow different ASS_Library for ASS_Track and ASS_Renderer
wm4 [Sat, 22 Jun 2013 17:22:53 +0000 (19:22 +0200)]
Allow different ASS_Library for ASS_Track and ASS_Renderer

Remove the explicit check whether the ASS_Track and ASS_Renderer were
created from the same ASS_Library object. Logging will not be entirely
consistent (some log messages go to the ASS_Track library when
rendering), but otherwise it works.

ASS_Library also contains embedded fonts added with ass_add_font().
It looks like the renderer will use the fonts from the ASS_Renderer
library object.

11 years agoParse style names like VSFilter does
Oleg Oshmyan [Sat, 15 Jun 2013 21:24:45 +0000 (22:24 +0100)]
Parse style names like VSFilter does

Trim '*' from the start of style name fields of Style
and Dialogue lines and normalize the case of "Default"
in the style name field of Dialogue lines.

11 years agoFix \r style lookup
Oleg Oshmyan [Sat, 15 Jun 2013 21:02:54 +0000 (22:02 +0100)]
Fix \r style lookup

Make \rSTYLENAME with an invalid STYLENAME fall back to
line style rather than to Default. This fixes issue #104.

11 years agoFix blur scaling
wm4 [Tue, 18 Jun 2013 00:14:14 +0000 (02:14 +0200)]
Fix blur scaling

Commit 0e1702ad7a6a827d "Add ass_set_storage_size and fix related scaling issues"
attempted to fix blur scaling. This breaks blur scaling for players
which don't call ass_set_storage_size().

This commit reverts the default behavior to the old behavior. The
behavior when ass_set_storage_size() is called should be unchanged.

11 years agoImprove font mismatch message
wm4 [Mon, 17 Jun 2013 21:52:49 +0000 (23:52 +0200)]
Improve font mismatch message

Example for an old message:

 [ass] fontconfig: Selected font is not the requested one: 'DejaVu Sans' != 'Wingdings'

it was hard to tell which was the selected and the requested font.
Also, it's not really clear what's the problem at all. Why would it
select a different font? Obviously, the issue is that it can't find
the font in the first place.

Now it prints:

 [ass] fontconfig: cannot find glyph U+006C in font 'Wingdings', falling back to 'DejaVu Sans'

Or if the code parameter for select_font() is 0:

 [ass] fontconfig: cannot find font 'Wingdings', falling back to 'DejaVu Sans'

I'm not sure if this message is really accurate in all cases. It's
possible that there are more reasons for failure. But all things
considered, this should be easier to understand.

11 years agoAllow building as DLL on Windows
wm4 [Tue, 11 Jun 2013 11:55:07 +0000 (13:55 +0200)]
Allow building as DLL on Windows

Patch by jon_y on IRC.

11 years agofontconfig: remove default "lang" setting from patterns
Uoti Urpala [Mon, 6 May 2013 14:35:17 +0000 (17:35 +0300)]
fontconfig: remove default "lang" setting from patterns

Fontconfig defaults set the "lang" value in patterns, and it then
prefers fonts which are listed as supporting this language. The
default value may not match actual script language, and even a setting
of "en" for English subtitle can cause problems. Remove the "lang"
setting from patterns used to find fonts.

A file had a normal and an oblique version of the same font attached,
with different character set coverage: the normal version lacked some
non-ascii characters that fontconfig includes in its list of
characters required for English support. As a result, the oblique
version was picked for what was supposed to be normal text.

11 years agoClip tag arguments are not optional
wm4 [Fri, 12 Apr 2013 16:34:30 +0000 (18:34 +0200)]
Clip tag arguments are not optional

This fixes: {\clip(1,1,20,20)\clip\alpha&H1E&\c&HC7E5C0&}X

libass tries to interpret the second \clip, which has no arguments.
Since the parsing code doesn't require a starting '(', the parser will
skip over the other tags (treating them as junk) and interpret the
numbers that happen to be in the rest of the string. The result is a
bogus drawing command, which happens to rasterize an extremely wide
glyph, which takes several seconds to finish.

Make the '('  required. Neither the aegisub manual nor the vsfilter
source code have any indication that \clip without starting '(' is
allowed, so this should not break anything.

11 years agoBump LIBASS_VERSION
wm4 [Fri, 12 Apr 2013 16:10:22 +0000 (18:10 +0200)]
Bump LIBASS_VERSION

The ABI was broken and a new API function were introduced.

11 years agoIgnore junk in nested \t tags
wm4 [Fri, 22 Mar 2013 09:04:57 +0000 (10:04 +0100)]
Ignore junk in nested \t tags

Normally, junk between tags is ignored. But unlike vsfilter, libass
doesn't do that inside \t tags. So the following fails and will never
actually switch the color: {\t(1000,1000,(\c&HFF0000&))} (The '(' and
')' are junk, and are not covered by any ASS documentation.)

Instead expecting that the last parameter to \t (the parameter that
takes nested tags) starts with '\', turn it around and assume that the
first parameter that's not a number is the last parameter. (This
parsing is kind of awkward because we don't do any lookahead.)
Likewise, let the nested tag parsing terminate on ')' instead of
checking whether a tag is started with '\'. This allows skipping
junk in the middle of the nested tag, without terminating too early.
(Check '}' and '\0' in case the tag is not properly terminated.)

11 years agoAdd ass_set_pixel_aspect(), deprecate ass_set_aspect_ratio()
wm4 [Wed, 20 Mar 2013 00:09:12 +0000 (01:09 +0100)]
Add ass_set_pixel_aspect(), deprecate ass_set_aspect_ratio()

ass_set_aspect_ratio() is confusing, because it takes a DAR and SAR
value, while libass just needs a single pixel aspect ratio. Introduce
ass_set_pixel_aspect(), which sets the pixel aspect ratio directly.

ass_set_aspect_ratio() is considered deprecated. There's no reason to
remove it, but hopefully directing users to ass_set_pixel_aspect() will
make for a simpler API.

Improve the doxygen and document what ass_set_margins() actually does.

11 years agoDon't overwrite user-defined aspect ratio settings
wm4 [Mon, 18 Mar 2013 23:15:17 +0000 (00:15 +0100)]
Don't overwrite user-defined aspect ratio settings

ass_set_storage_size() overwrote the user-defined aspect ratio set with
ass_set_aspect_ratio(). Change it so that if ass_set_aspect_ratio() is
used, the ass_set_storage_size() parameters are not used for any aspect
ratio calculations. (The storage size is still used for calculating the
blur scale.) This simplifies the code as well, because the aspect ratio
is now centrally calculated in ass_start_frame().

Update the doxygen. Make it clear that ass_set_storage_size() will be
used for aspect ratio calculation, unless ass_set_aspect_ratio() is
used. Also mention what libass actually does with the dar and sar
parameters: it uses them to calculate a pixel aspect ratio, nothing
else.

Explicitly allow resetting the storage size with w=h=0. Document that
it's allowed to remove the user defined aspect ratio by setting a pixel
aspedct ratio of 0.

See issue 6.

11 years agoFix crazy VSFilter behavior for \move tag
wm4 [Wed, 20 Mar 2013 01:10:32 +0000 (02:10 +0100)]
Fix crazy VSFilter behavior for \move tag

Fixes issue 90 (both cases).

11 years agoAdd type field to ASS_Image struct
wm4 [Wed, 20 Mar 2013 00:19:13 +0000 (01:19 +0100)]
Add type field to ASS_Image struct

Patch by chrisburel, posted on Google code issue 31.

11 years agoshaper: proper script/language handling
Grigori Goronzy [Mon, 4 Mar 2013 19:24:35 +0000 (20:24 +0100)]
shaper: proper script/language handling

Determine script for each character and use this as an additional
property for splitting up the text into runs. Characters of Common
or Inherited script assume the script of the preceding character. If
that is not possible (First character(s) in a run are Common/Inherited,
for instance), a backwards scan is done so they can assume the script
of the following character.

Additionally, determine default language in case no override is
set. This simply maps a language to a script, if a language exists
that is mostly representative for a given script. Pango's mapping
has been adapted.

This helps with fonts that don't have OpenType features set up
for default script/language pairs. It's also considered to be right
approach by most people, and might help with correct OpenType rendering
in some other cases.

Fixes issue 85.

11 years agoshaper: correctly handle @font advance
Grigori Goronzy [Sun, 3 Mar 2013 22:45:26 +0000 (23:45 +0100)]
shaper: correctly handle @font advance

The code was confusing glyph index and unicode codepoint index.

Fixes issue 94.

11 years agoSupport reading the YCbCr Matrix header
Oleg Oshmyan [Fri, 1 Feb 2013 23:35:02 +0000 (23:35 +0000)]
Support reading the YCbCr Matrix header

The value is parsed and stored as an enum constant that the consumer
can read from ASS_Track. All output images are still plain RGB,
and the consumer is expected to perform its own color correction.

Supported header values: (TV|PC).(601|709|240M|FCC) and None.
If the header is missing, a special compatibility value is used
that should be treated as TV.601 if the accompanying video stream
is YCbCr and as None otherwise. If the header is present but has
an invalid/unknown value, a different special value is substituted.

11 years agoAdd ass_set_storage_size and fix related scaling issues
Oleg Oshmyan [Wed, 22 Aug 2012 21:59:46 +0000 (00:59 +0300)]
Add ass_set_storage_size and fix related scaling issues

\blur radius is not scaled from script to storage resolution
but is scaled from storage to display resolution. The same
applies to borders and shadows if ScaledBorderAndShadow is "no".
(If it is "yes", borders and shadows are scaled from script
to display resolution just like before.)

11 years agoMake closing ')' optional for some ASS tags
wm4 [Thu, 10 Jan 2013 23:27:55 +0000 (00:27 +0100)]
Make closing ')' optional for some ASS tags

It appears VSFilter generally accepts the tag anyway if closing ')' are
missing in tags like \pos(1,2). Since they're not strictly needed
anyway, make the last ')' optional in order to make parsing more
tolerant against broken subs.

Fixes issue #79.

11 years agoScale border size with user font size coefficient
wm4 [Thu, 10 Jan 2013 23:58:42 +0000 (00:58 +0100)]
Scale border size with user font size coefficient

11 years agoAdd Blur field to ASS_Style
wm4 [Thu, 10 Jan 2013 23:47:32 +0000 (00:47 +0100)]
Add Blur field to ASS_Style

Useful when applications specify the style manually for non-ASS
subtitles.

11 years agoFix fallback event formats
Grigori Goronzy [Wed, 9 Jan 2013 22:30:19 +0000 (23:30 +0100)]
Fix fallback event formats

Fixes issue 83.

11 years agoParse angle in styles as double number
Grigori Goronzy [Mon, 7 Jan 2013 19:16:25 +0000 (20:16 +0100)]
Parse angle in styles as double number

Similar to VSFilter. Thanks to Iroha for reporting this issue.

Note: this breaks the ABI!

11 years agoUse glyph properties instead of renderer state in draw_opaque_box
Oleg Oshmyan [Sun, 16 Dec 2012 21:54:57 +0000 (23:54 +0200)]
Use glyph properties instead of renderer state in draw_opaque_box

scale_x, scale_y and hspacing should be read from the GlyphInfo
of the glyph the box is based on, not from render_priv->state.
The values in the renderer state are affected by override tags
specified after this glyph, so they are irrelevant.

11 years agoProperly render opaque box shadows even when there is no border
Oleg Oshmyan [Sun, 16 Dec 2012 17:02:32 +0000 (19:02 +0200)]
Properly render opaque box shadows even when there is no border

Even if the border size is zero, the shadow is supposed to be
a copy of a hypothetical border: when border_style is 1, this
coincides with the borderless glyph, but when border_style is 3,
the shadow must be an opaque box.

Opaque box borders are now generated regardless of border size
being non-zero, and outline_to_bitmap3 gets a new flag indicating
whether it should discard the border (after generating a shadow
from it).

11 years agoApply blur to both glyph and border when using opaque box borders
Oleg Oshmyan [Sun, 16 Dec 2012 16:08:23 +0000 (18:08 +0200)]
Apply blur to both glyph and border when using opaque box borders

11 years agoFix fix_freetype_stroker
Oleg Oshmyan [Thu, 22 Nov 2012 02:19:17 +0000 (02:19 +0000)]
Fix fix_freetype_stroker

The first point in a countour is not allowed to be a cubic control
point, which is sometimes violated by blindly reversing a countour,
producing the following errors:

    [ass] FT_Stroker_ParseOutline failed, error: 20
    [ass] Failed to rasterize glyph: 1

To avoid this, let the first point remain the first
and only reverse the order of the remaining points.

11 years agoFix leaks when error occurs.
Xidorn Quan [Sun, 2 Dec 2012 07:42:31 +0000 (15:42 +0800)]
Fix leaks when error occurs.

11 years agoFix a wrong condition.
Xidorn Quan [Wed, 21 Nov 2012 12:26:17 +0000 (20:26 +0800)]
Fix a wrong condition.

11 years agoRemoves an useless warning message.
Xidorn Quan [Wed, 21 Nov 2012 12:24:24 +0000 (20:24 +0800)]
Removes an useless warning message.

Function "outline_to_bitmap" gives a warning itself when it returns
NULL, so it is useless to print an addition warning for checking its
return value.

11 years agoFix generation of libass.pc 0.10.1
Grigori Goronzy [Tue, 16 Oct 2012 17:59:59 +0000 (19:59 +0200)]
Fix generation of libass.pc

11 years agoBump minimum Harfbuzz version to 0.9.5
Grigori Goronzy [Tue, 16 Oct 2012 17:57:37 +0000 (19:57 +0200)]
Bump minimum Harfbuzz version to 0.9.5

11 years agoshaper: add hack to workaround grid-fitting
Grigori Goronzy [Tue, 16 Oct 2012 17:55:55 +0000 (19:55 +0200)]
shaper: add hack to workaround grid-fitting

This complements commit 7af780, which didn't correctly apply the hack
to the advance/position as calculated by the shaper.

11 years agoUpdate changelog
Grigori Goronzy [Mon, 15 Oct 2012 15:46:37 +0000 (17:46 +0200)]
Update changelog