]> granicus.if.org Git - libass/log
libass
7 years agoBump ABI version and release 0.13.6 0.13.6
Oleg Oshmyan [Tue, 3 Jan 2017 19:20:20 +0000 (21:20 +0200)]
Bump ABI version and release 0.13.6

sizeof(ASS_Style) is actually part of the ABI, so adding the Justify field
in commit e54c123d5a08b6212533ddcced2cb1a50fa3d2b2 broke the ABI even
though we tried to avoid it by placing the field at the end of the struct.

7 years agoRelease 0.13.5 0.13.5
Oleg Oshmyan [Wed, 28 Dec 2016 23:52:10 +0000 (01:52 +0200)]
Release 0.13.5

7 years agoapi: make ass_set_cache_limits() work on total bitmap cache sizes
Dr.Smile [Wed, 28 Dec 2016 22:42:38 +0000 (01:42 +0300)]
api: make ass_set_cache_limits() work on total bitmap cache sizes

Previously was possible to set only bitmap_max_size,
now requested memory amount is divided between
bitmap_max_size and composite_max_size.

7 years agoFix memory leak when Language header is defined more than once
Oleg Oshmyan [Wed, 28 Dec 2016 20:19:51 +0000 (22:19 +0200)]
Fix memory leak when Language header is defined more than once

Discovered by OSS-Fuzz.
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=229.

7 years agoparse_tag: don't consume *end == ')' when called recursively
Oleg Oshmyan [Wed, 28 Dec 2016 19:45:01 +0000 (21:45 +0200)]
parse_tag: don't consume *end == ')' when called recursively

This did not cause any problems, but it's nicer
to guarantee that the return value is <= end.

7 years agoFix buffer overread in parse_tag when end points to a space
Oleg Oshmyan [Wed, 28 Dec 2016 19:14:21 +0000 (21:14 +0200)]
Fix buffer overread in parse_tag when end points to a space

When parse_tag is invoked recursively to handle the animated tags inside
a \t tag, the `end` argument is taken from the `end` field of a struct arg
in the enclosing parse_tag. When struct arg is filled by push_arg, this
field is always right-trimmed using rskip_spaces. Ultimately, the inner
parse_tag invokation sees its `end` argument point not to the ')' or '}'
of the \t as it expects but rather to the spaces preceding the ')' or '}'.

At this point, when parse_tag calls skip_spaces, which is ignorant of the
end pointer, it happily skips over the spaces preceding the ')', moving the
pointer past `end`. Subsequent `pointer != end` comparisons in parse_tag
fail (as in fact `pointer > end`), and parse_tag thinks it is still inside
the substring to be parsed.

This is harmless in many cases, but given either of the following inputs,
parse_tag reads past the end of the actual buffer that stores the string:

    {\t(\ }
    {\t(\ )(}

After this commit, parse_tag knows that `end` can point to a sequence of
spaces and avoids calling skip_spaces on `end`, thus avoiding the overread.

Discovered by OSS-Fuzz.
Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=194.

7 years agodirectwrite: drop SAL annotations
Oleg Oshmyan [Wed, 7 Dec 2016 16:16:29 +0000 (18:16 +0200)]
directwrite: drop SAL annotations

MinGW and old versions of mingw-w64 don't define the SAL macros.
They don't serve any value to us, so just remove them from our code.

See https://github.com/libass/libass/pull/251.

7 years agoass_strtod: correctly convert large negative exponents
Oleg Oshmyan [Fri, 4 Nov 2016 14:27:44 +0000 (16:27 +0200)]
ass_strtod: correctly convert large negative exponents

Avoid overflow in dblExp that prevents subnormal numbers from being
generated (or small normal numbers if `double` supports many more
negative exponents than positive): if `10**abs(exp)` would overflow
and we actually want a negative exponent, switch to using precomputed
negative powers of 10 rather than positive.

Also avoid underflow for numbers with a large negative exponent where
the exponent alone underflows but the significand has enough digits to
cancel this out, e. g. in `10e-324` with IEEE 754 double.

7 years agoass_strtod: don't cast away const
Oleg Oshmyan [Sun, 30 Oct 2016 17:21:06 +0000 (19:21 +0200)]
ass_strtod: don't cast away const

7 years agoass_strtod: handle overflowing exponents
Oleg Oshmyan [Sun, 30 Oct 2016 14:36:14 +0000 (16:36 +0200)]
ass_strtod: handle overflowing exponents

The exponent may overflow an integer, e. g. in
`14e888888888888888888888888888880000000000000000000000000000`
on a 32-bit platform. Correctly handle this, including the case
when the exponent overflows but the whole string still describes
a valid floating-point number, e. g. in
`1[4294967200 zeros]e-4294967300`.

This fixes libass#244. Buffer overflow was fixed in 67f647e, and
this ensures that the string is converted to the correct number.

7 years agoass_strtod: skip leading zeros in mantissa
Oleg Oshmyan [Sun, 30 Oct 2016 00:26:00 +0000 (03:26 +0300)]
ass_strtod: skip leading zeros in mantissa

ass_strtod reads at most 18 leading digits of the mantissa.
This previously included zeros, even though they are not significant
digits, e. g. 0.000000000000000001e18 was converted to 0.0.
After this commit, leading zeros before and after the decimal point
will be skipped, so the above number will be correctly converted to 1.0.

7 years agoass_strtod: don't report overflow for 0.0e[huge exponent]
Oleg Oshmyan [Sat, 29 Oct 2016 23:57:24 +0000 (02:57 +0300)]
ass_strtod: don't report overflow for 0.0e[huge exponent]

7 years agoass_strtod: use size_t for substring lengths
Oleg Oshmyan [Sat, 29 Oct 2016 23:53:00 +0000 (02:53 +0300)]
ass_strtod: use size_t for substring lengths

This fixes overflow on extremely long input strings.
See libass#244.

7 years agoAdd text justification
Dan Oscarsson [Wed, 5 Oct 2016 11:52:47 +0000 (13:52 +0200)]
Add text justification

Subtitle recommendations often include that multi line
subtitles should be left justified as this is easier for
the eyes. This is also the standard used by several television
companies.

This add the possibility to define how subtitles are to
be justified, independently of where they are aligned.
The most common way could be to set justify to left, and have
alignment to center. But you can, for example, have alignment
to left and justify to center, giving subtitles to the left but
justifed on the center (instead of normal left justified).
Using justify right and alignment of center, might be good
choice for Arabic.

If justify is not defined, all works like before.
If justify is defined, subtitles are aligned as defined
by alignment and justified as defined by justify.

ASS is not extended by this, justify can only be defined
by setting Justify to wanted justification.

7 years agoAdd CVE identifiers of the fuzzing fixes.
Grigori Goronzy [Wed, 5 Oct 2016 09:10:04 +0000 (11:10 +0200)]
Add CVE identifiers of the fuzzing fixes.

As assigned by [1]. Unfortunately I only learned of the CVE assignments
after the release.

7 years agoRelease 0.13.4 0.13.4
Grigori Goronzy [Tue, 4 Oct 2016 23:10:25 +0000 (01:10 +0200)]
Release 0.13.4

7 years agoRemove unused variable
Grigori Goronzy [Tue, 4 Oct 2016 19:31:03 +0000 (21:31 +0200)]
Remove unused variable

7 years agoFix line wrapping mode 0/3 bugs
Grigori Goronzy [Tue, 4 Oct 2016 19:25:41 +0000 (21:25 +0200)]
Fix line wrapping mode 0/3 bugs

This fixes two separate bugs:

a) Don't move a linebreak into the first symbol. This results in a empty
   line at the front, which does not help to equalize line lengths at all.
   Instead, merge line with the second one.
b) When moving a linebreak into a symbol that already is a break, the
   number of lines must be decremented. Otherwise, uninitialized memory
   is possibly used for later layout operations.

Found by fuzzer test case
id:000085,sig:11,src:003377+003350,op:splice,rep:8.

This might also affect and hopefully fix libass#229.

v2: change semantics according to review

7 years agoFix blur coefficient calculation buffer overflow
Grigori Goronzy [Tue, 4 Oct 2016 00:47:36 +0000 (02:47 +0200)]
Fix blur coefficient calculation buffer overflow

Found by fuzzer test case id:000082,sig:11,src:002579,op:havoc,rep:8.
Correctness should be checked, but this fixes the overflow for good.

7 years agoFix memory leaks
Grigori Goronzy [Tue, 4 Oct 2016 00:41:45 +0000 (02:41 +0200)]
Fix memory leaks

Found by fuzzer test case id:000051,sig:11,sync:fuzzer3,src:004221.

7 years agoshaper: fix reallocation
Grigori Goronzy [Tue, 4 Oct 2016 00:35:26 +0000 (02:35 +0200)]
shaper: fix reallocation

Update the variable that tracks the allocated size. This potentially
improves performance and avoid some side effects, which lead to
undefined behavior in some cases.

Fixes fuzzer test case id:000051,sig:11,sync:fuzzer3,src:004221.

7 years agoCI: Don't fail on MacOS if brew cannot remove libtool.
torque [Sat, 24 Sep 2016 20:07:34 +0000 (13:07 -0700)]
CI: Don't fail on MacOS if brew cannot remove libtool.

This is the better option, as it won't break the CI script if travis
ends up removing the preinstalled libtool bundle for whatever reason.

7 years agoFix broken MacOS CI.
torque [Sat, 24 Sep 2016 19:50:51 +0000 (12:50 -0700)]
Fix broken MacOS CI.

At some point in the past Travis and homebrew colluded to break the
preinstalled libtool on travis MacOS instances. Forcing brew to
reinstall libtool seems to be the common solution that several other
projects on github have used.

7 years agoFix license title
Grigori Goronzy [Sat, 24 Sep 2016 19:20:42 +0000 (21:20 +0200)]
Fix license title

I'm a dummy. Of course it is the ISC license. I started to relicense
libass to ISC myself, after all.

7 years agoRelease 0.13.3 0.13.3
Grigori Goronzy [Sat, 24 Sep 2016 19:06:23 +0000 (21:06 +0200)]
Release 0.13.3

7 years agoImprove license file
Grigori Goronzy [Sat, 24 Sep 2016 18:52:40 +0000 (20:52 +0200)]
Improve license file

Fixes libass#234.

7 years agobitmap: use calloc instead of malloc/memset
Rodger Combs [Fri, 24 Jun 2016 04:39:06 +0000 (23:39 -0500)]
bitmap: use calloc instead of malloc/memset

This can improve perf somewhat with large bitmaps

7 years agocache: fix ownership tracking issues of ASS_Font
Dr.Smile [Sat, 16 Jul 2016 01:01:55 +0000 (04:01 +0300)]
cache: fix ownership tracking issues of ASS_Font

7 years agofont load from dir: use MSGL_INFO instead of MSGL_WARN
Avi Halachmi (:avih) [Sun, 10 Jul 2016 22:50:22 +0000 (01:50 +0300)]
font load from dir: use MSGL_INFO instead of MSGL_WARN

This is a normal course of action and should not generate a warning,
especially for applications which use libass and might notify the user
on such "warnings", while in fact it should be info or even verbose.

Fixes #231

7 years agorender: add refcounting functionality to image lists
Dr.Smile [Sun, 1 May 2016 19:29:35 +0000 (22:29 +0300)]
render: add refcounting functionality to image lists

7 years agocache: keep referenced cache values alive after ass_cache_empty()
Dr.Smile [Sun, 20 Sep 2015 23:57:42 +0000 (02:57 +0300)]
cache: keep referenced cache values alive after ass_cache_empty()

7 years agorender: keep track of any associated resources within ASS_Image
Dr.Smile [Sat, 19 Sep 2015 02:18:50 +0000 (05:18 +0300)]
render: keep track of any associated resources within ASS_Image

That resources can be cached composite bitmap or raw bitmap buffer.
Consequently, free lists are no longer needed.

7 years agocache: keep ref_count of all active objects nonzero
Dr.Smile [Sat, 19 Sep 2015 00:08:29 +0000 (03:08 +0300)]
cache: keep ref_count of all active objects nonzero

7 years agocache: replace size_func with parameter in ass_cache_commit()
Dr.Smile [Thu, 17 Sep 2015 22:15:16 +0000 (01:15 +0300)]
cache: replace size_func with parameter in ass_cache_commit()

7 years agocache: remove ass_cache_cancel(), cache failures instead
Dr.Smile [Thu, 17 Sep 2015 21:33:33 +0000 (00:33 +0300)]
cache: remove ass_cache_cancel(), cache failures instead

7 years agocache: switch to gradual cache clearing
Dr.Smile [Tue, 15 Sep 2015 17:18:17 +0000 (20:18 +0300)]
cache: switch to gradual cache clearing

Advantages over the old algorithm consist of the following.
 * There are no glitches due to full cache clearing.
   Items are arranged into linked list ordered by time of last use.
   Only the oldest items get deleted at the clearing event.
 * Each item now keeps track of number of references.
   Referenced cache values are immune to clearing.
 * Reduced amount of total cache memory for the same performance.
 * Reduced number of memory allocations per cache item.

7 years agoREADME: add QMPlay2 to list of projects using libass
Oleg Oshmyan [Fri, 17 Jun 2016 11:00:41 +0000 (14:00 +0300)]
README: add QMPlay2 to list of projects using libass

Closes #225.

7 years agoshaper: drop RTL base direction for RTL font encodings
Grigori Goronzy [Fri, 10 Jun 2016 11:35:28 +0000 (13:35 +0200)]
shaper: drop RTL base direction for RTL font encodings

VSFilter uses LTR base direction even if Arabic or Hebrew font
encodings are used, so do the same. This resolves some reordering
issues.

Fixes #224.

7 years agofont: fix NULL pointer dereference
Hannes Domani [Mon, 23 May 2016 17:04:32 +0000 (19:04 +0200)]
font: fix NULL pointer dereference

8 years agorasterizer: drop outlines with points at too large coordinates
Dr.Smile [Sat, 23 Apr 2016 16:44:05 +0000 (19:44 +0300)]
rasterizer: drop outlines with points at too large coordinates

Such points can overflow internal calculations and usually produced
as a result of NaN to integer conversion.

Should fix #210.

8 years agoMerge pull request #217 from ssbssa/master
Grigori Goronzy [Sun, 27 Mar 2016 14:04:11 +0000 (16:04 +0200)]
Merge pull request #217 from ssbssa/master

directwrite: fix leaks of IDWriteFontFamily/IDWriteFontCollection

8 years agodirectwrite: fix leaks of IDWriteFontFamily/IDWriteFontCollection
Hannes Domani [Sun, 27 Mar 2016 13:10:03 +0000 (15:10 +0200)]
directwrite: fix leaks of IDWriteFontFamily/IDWriteFontCollection

8 years agoconfigure: use proper quoting on iconv test
Sean McGovern [Sun, 13 Mar 2016 18:29:26 +0000 (14:29 -0400)]
configure: use proper quoting on iconv test

Unquoted strings cause an error when the test variable is empty.

8 years agoMerge pull request #214 from SeanMcG/upstream
Grigori Goronzy [Thu, 10 Mar 2016 09:48:18 +0000 (10:48 +0100)]
Merge pull request #214 from SeanMcG/upstream

Patches from VLC contrib collection

8 years agoconfigure: add libiconv only when it is both present and required
Sean McGovern [Thu, 10 Mar 2016 00:48:40 +0000 (19:48 -0500)]
configure: add libiconv only when it is both present and required

8 years agoconfigure: use correct ASFLAGS for yasm on Solaris
Sean McGovern [Thu, 10 Mar 2016 00:41:06 +0000 (19:41 -0500)]
configure: use correct ASFLAGS for yasm on Solaris

8 years agoconfigure.ac: add missing spaces to error message
wm4 [Wed, 9 Mar 2016 23:20:55 +0000 (00:20 +0100)]
configure.ac: add missing spaces to error message

8 years agoRelease 0.13.2 0.13.2
Oleg Oshmyan [Sat, 20 Feb 2016 19:33:37 +0000 (21:33 +0200)]
Release 0.13.2

8 years agoDocument default value for ass_set_check_readorder
Oleg Oshmyan [Sat, 20 Feb 2016 19:36:09 +0000 (21:36 +0200)]
Document default value for ass_set_check_readorder

8 years agoass: handle movement==0 in ass_step_sub()
wm4 [Thu, 4 Feb 2016 21:47:47 +0000 (22:47 +0100)]
ass: handle movement==0 in ass_step_sub()

Finds the start of the subtitle at "now".

8 years agofont: remove unused function
wm4 [Thu, 14 Jan 2016 13:18:35 +0000 (14:18 +0100)]
font: remove unused function

8 years agoass: add ass_set_check_readorder() API function
wm4 [Thu, 31 Dec 2015 16:26:46 +0000 (17:26 +0100)]
ass: add ass_set_check_readorder() API function

Not all API users will keep the event list on seeking. This also gives
the opportunity to API users to handle severely broken files with
duplicate ReadOrder entries. (It is not known whether this is really
needed, however VSFilter does not deduplicate using the ReadOrder
field.)

8 years agoass: declare mixing ass_flush_events() and ass_process_chunk() allowed
wm4 [Thu, 31 Dec 2015 15:28:00 +0000 (16:28 +0100)]
ass: declare mixing ass_flush_events() and ass_process_chunk() allowed

This was always the intention, but the wording could be read as if this
is not allowed. There was a bug that broke ass_flush_events() too, which
gives all the more reason to clarify this.

8 years agoChangelog: create entry for the next version
wm4 [Thu, 31 Dec 2015 15:23:44 +0000 (16:23 +0100)]
Changelog: create entry for the next version

It's always such a bother to write the changelog on release. And in
fact, there is no reason why the changelog should be written on release.
It's easier to edit it as we commit fixes or features.

I'm adding the changelog entries for the past two commits, and in the
future, we should add entries as we commit bug fixes or new features.

8 years agoass: reset the ReadOrder bitmap on ass_flush_events()
wm4 [Sun, 20 Dec 2015 09:08:28 +0000 (10:08 +0100)]
ass: reset the ReadOrder bitmap on ass_flush_events()

Otherwise, ass_process_chunk() will reject events that were previously
removed with ass_flush_events(), which is nonsense.

8 years agocoretext: fix NULL CFStringRef dereference
wm4 [Wed, 9 Dec 2015 16:19:42 +0000 (17:19 +0100)]
coretext: fix NULL CFStringRef dereference

8 years agoRelease 0.13.1 0.13.1
Oleg Oshmyan [Tue, 1 Dec 2015 17:33:46 +0000 (19:33 +0200)]
Release 0.13.1

8 years agocoretext: don't fetch character set when it isn't needed
Oleg Oshmyan [Tue, 1 Dec 2015 16:31:33 +0000 (18:31 +0200)]
coretext: don't fetch character set when it isn't needed

This avoids unnecessary work and fixes a memory leak:
the character set wasn't released when code == 0.

8 years agofontselect: destroy private data of fonts that fail to be added
Oleg Oshmyan [Tue, 1 Dec 2015 15:40:45 +0000 (17:40 +0200)]
fontselect: destroy private data of fonts that fail to be added

8 years agofontselect: fix bool return values
Oleg Oshmyan [Tue, 1 Dec 2015 15:18:43 +0000 (17:18 +0200)]
fontselect: fix bool return values

Return true on success and false on failure.

get_font_info was actually inconsistent, returning false both
on success and on failure due to the face not being scalable.

8 years agocoretext: don't forget to release font format attribute
Oleg Oshmyan [Sat, 7 Nov 2015 13:23:17 +0000 (15:23 +0200)]
coretext: don't forget to release font format attribute

8 years agofontselect: replace is_postscript flag with check_postscript function
Oleg Oshmyan [Wed, 4 Nov 2015 13:25:47 +0000 (15:25 +0200)]
fontselect: replace is_postscript flag with check_postscript function

DirectWrite does not provide fast access to the is_postscript flag,
requiring each font to be loaded before its format can be determined.
Eagerly doing this for every installed font can be quite slow,
on the order of seconds.

To improve performance, ask the font provider for this information
only when it is actually needed, i.e. when one of the font's full
names or its PostScript name matches a requested font name and we
need to know whether to accept this match.

The return value of check_postscript is not cached in this commit.
This makes repeated calls slower than accessing is_postscript was.
This should not be a problem, but if it is, the value can be cached
(or precomputed) by font providers in their font private data.

This commit also potentially increases the memory usage of some
font providers by retaining data structures needed to implement
check_postscript in their font private data. This should not be
a problem either, but if it is, the value of check_postscript
can be precomputed by all providers other than DirectWrite.

8 years agodirectwrite: improve error handling
Oleg Oshmyan [Thu, 29 Oct 2015 23:33:30 +0000 (01:33 +0200)]
directwrite: improve error handling

  * Check malloc and calloc return values.
  * Abort if a name can't be fetched, rather than supply a NULL
    string to fontselect causing it to crash.
  * Make sure to free all allocated memory.
  * Always check FAILED(hr) before using the value of any output
    argument returned by DirectWrite, because it is not clear whether
    they are guaranteed to have correct values in case of error.

8 years agodirectwrite: slightly clean up the code
Oleg Oshmyan [Thu, 29 Oct 2015 23:33:30 +0000 (01:33 +0200)]
directwrite: slightly clean up the code

  * Metrics are not used, so don't fetch them.
  * All variables except meta are always explicitly set before use,
    so don't initialize them.
  * Declare variables where they are used.
  * Use int loop variables when the loop bound is int.
  * Prefer post-increment to pre-increment.

8 years agodirectwrite: split out the inner loop of scan_fonts as a separate function
Oleg Oshmyan [Thu, 29 Oct 2015 23:13:59 +0000 (01:13 +0200)]
directwrite: split out the inner loop of scan_fonts as a separate function

This has the side effect that the ASS_FontProviderMetaData instance is now
cleared for every font rather than only once at the start of the search,
which fixes some use-after-free scenarios and prevents the creation of
chimeric fonts using names left over from other fonts processed earlier.

This lays the groundwork for further code simplification and error handling
improvements within this function, which will come in a separate commit.

This commit is transparent to `git blame -w` except for return statements.

8 years agoInterpret timestamps with negative components more obviously
Oleg Oshmyan [Thu, 29 Oct 2015 00:56:14 +0000 (02:56 +0200)]
Interpret timestamps with negative components more obviously

Keep all components signed, allowing for timestamps like 00:01:-05.00
to denote 55 seconds. This matches the behavior of VSFilter.

8 years agoFix several signedness bugs
Oleg Oshmyan [Thu, 29 Oct 2015 00:34:42 +0000 (02:34 +0200)]
Fix several signedness bugs

Reported by gcc -Wall -Wextra.

8 years agoFix Windows build
Grigori Goronzy [Wed, 28 Oct 2015 23:49:41 +0000 (00:49 +0100)]
Fix Windows build

Some parts used in fontselect weren't properly defined.

v2: RAW_CFF face type was added later, so it's at the end of the
enum list.

8 years agofontselect: silence warnings about discarding const
Oleg Oshmyan [Wed, 28 Oct 2015 22:19:20 +0000 (00:19 +0200)]
fontselect: silence warnings about discarding const

Fixing this properly involves constifying ASS_FontProviderMetaData
and refactoring code that allocates and frees strings stored in it.
This seems easy on the surface but turns out to be nontrivial when
you actually try to do it. This may still be done at a later date,
but for now, just add explicit casts.

8 years agoFix the Linux build on Travis CI
Oleg Oshmyan [Thu, 22 Oct 2015 23:38:59 +0000 (02:38 +0300)]
Fix the Linux build on Travis CI

We need a newer Fontconfig than the default Ubuntu
environment provides, so switch to a newer Ubuntu.

8 years agofontselect: don't trim font names
Oleg Oshmyan [Thu, 22 Oct 2015 23:20:19 +0000 (02:20 +0300)]
fontselect: don't trim font names

This matches the behavior of GDI and hence VSFilter.

Note that \fn arguments are trimmed during parsing.
However, none of the names inside fonts should be trimmed,
and @-prefixed fonts should keep whitespace following the @,
both of which this commit addresses.

Remove strdup_trimmed because it is no longer used. Also remove
the declaration of a function that was deleted a few months ago.

8 years agofontselect: don't find fonts with PostScript outlines by full name
Oleg Oshmyan [Thu, 22 Oct 2015 22:55:06 +0000 (01:55 +0300)]
fontselect: don't find fonts with PostScript outlines by full name

Related to commit e00691e8096cc69e5651480155ebc61d9e079290:
it turns out that GDI (and hence VSFilter) does not check full names of
fonts that have PostScript outlines when searching for a font by name.

To summarize the resulting behavior:
  * Fonts with PostScript outlines can be found by family name
    and by PostScript name.
  * Fonts without PostScript outlines can be found by family name
    and by full name.

8 years agofont: check FT_Get_Postscript_Name return value for NULL
Oleg Oshmyan [Wed, 21 Oct 2015 23:43:03 +0000 (02:43 +0300)]
font: check FT_Get_Postscript_Name return value for NULL

8 years agofontselect: use stdbool.h wherever appropriate
Oleg Oshmyan [Tue, 20 Oct 2015 22:14:13 +0000 (01:14 +0300)]
fontselect: use stdbool.h wherever appropriate

8 years agodirectwrite: fix broken return value check
Oleg Oshmyan [Tue, 20 Oct 2015 22:04:10 +0000 (01:04 +0300)]
directwrite: fix broken return value check

8 years agofontselect: find fonts with PostScript outlines by PostScript name
Oleg Oshmyan [Tue, 20 Oct 2015 21:51:34 +0000 (00:51 +0300)]
fontselect: find fonts with PostScript outlines by PostScript name

Fonts without PostScript outlines (such as TrueType fonts) are unaffected,
and their PostScript names continue to be ignored when searching for fonts.

This matches the behavior of GDI and hence VSFilter.

8 years agofontconfig: read PostScript names
Oleg Oshmyan [Mon, 19 Oct 2015 13:52:34 +0000 (16:52 +0300)]
fontconfig: read PostScript names

And fix two wrong comments.

Bump the Fontconfig version requirement to 2.10.92 (2.11 RC2), released
on 2013-03-29, to ensure Fontconfig caches and exposes PostScript names.

8 years agofontselect: read PostScript names for memory fonts
Oleg Oshmyan [Mon, 19 Oct 2015 13:28:33 +0000 (16:28 +0300)]
fontselect: read PostScript names for memory fonts

Currently this affects only the verbose output in
ass_font_select, but it will become more useful when we
start matching against PostScript names in the future.

8 years agofontselect: move PostScript name into ASS_FontProviderMetaData
Oleg Oshmyan [Mon, 19 Oct 2015 13:11:27 +0000 (16:11 +0300)]
fontselect: move PostScript name into ASS_FontProviderMetaData

8 years agofontselect: fix ass_font_provider_add_font signature and doxygen
Oleg Oshmyan [Mon, 19 Oct 2015 11:35:24 +0000 (14:35 +0300)]
fontselect: fix ass_font_provider_add_font signature and doxygen

index is signed, and psname only overrides it iff index < 0.

8 years agodrawing: remove unused field
wm4 [Wed, 14 Oct 2015 19:03:21 +0000 (21:03 +0200)]
drawing: remove unused field

8 years agoconfigure: don't add unnecessary libraries to PKG_LIBS_PRIVATE
Oleg Oshmyan [Wed, 14 Oct 2015 18:45:31 +0000 (21:45 +0300)]
configure: don't add unnecessary libraries to PKG_LIBS_PRIVATE

Library checks can succeed if the needed functions exist in libc
and don't need any extra linker flags. Avoid adding unnecessary
flags (which break static linking against libass) in this case.

8 years agoconfigure: include -liconv if that is found
wm4 [Tue, 13 Oct 2015 20:18:30 +0000 (22:18 +0200)]
configure: include -liconv if that is found

8 years agoass: use a bitmap for checking duplicate events
wm4 [Mon, 12 Oct 2015 19:56:44 +0000 (21:56 +0200)]
ass: use a bitmap for checking duplicate events

The loop in check_duplicate_event() essentially makes event processing
with ass_process_chunk() O(n^2). Using a bitmap instead of a loop brings
it back to O(n).

This could be interpreted as an API change: since the event list is
freely modifieable by the API user through ASS_Track public fields,
libass can't know if the internal bitmap went out of sync with the
public event list. We just redefine it so that calling
ass_process_chunk() means the API user agrees not to manipulate the
event list otherwise.

8 years agoconfigure: Set the correct x32 machine option for yasm
Luke Dashjr [Sat, 10 Oct 2015 08:11:38 +0000 (08:11 +0000)]
configure: Set the correct x32 machine option for yasm

8 years agoUse proper include statement for HarfBuzz
wm4 [Wed, 7 Oct 2015 16:24:33 +0000 (18:24 +0200)]
Use proper include statement for HarfBuzz

8 years agocache: remove unused BINSTRING field type
wm4 [Tue, 6 Oct 2015 12:56:50 +0000 (14:56 +0200)]
cache: remove unused BINSTRING field type

Its only use was removed in commit b63d8931.

8 years agoUpdate last release date in README
Oleg Oshmyan [Sat, 3 Oct 2015 19:28:55 +0000 (22:28 +0300)]
Update last release date in README

8 years agoRelease 0.13.0 0.13.0
wm4 [Sat, 3 Oct 2015 11:08:24 +0000 (13:08 +0200)]
Release 0.13.0

8 years agobuild: add missing new source files
wm4 [Sat, 3 Oct 2015 18:13:04 +0000 (20:13 +0200)]
build: add missing new source files

The ass_func_template.h entry was removed with commit c22a4ff9.
utils.asm is really new.

8 years agoconfigure: do not add -ldwrite to libass.pc
wm4 [Thu, 24 Sep 2015 13:55:04 +0000 (15:55 +0200)]
configure: do not add -ldwrite to libass.pc

This was forgotten. We always load dwrite.dll at runtime, so this isn't
needed.

8 years agoass_font: fix broken loop condition
wm4 [Thu, 24 Sep 2015 08:34:19 +0000 (10:34 +0200)]
ass_font: fix broken loop condition

As pointed out in #198. This is certainly just a typo.

Fixes #198.

8 years agoMerge pull request #197 from grigorig/remove-enca
Grigori Goronzy [Wed, 23 Sep 2015 10:28:46 +0000 (12:28 +0200)]
Merge pull request #197 from grigorig/remove-enca

Remove ENCA support

8 years agoRemove ENCA support
Grigori Goronzy [Wed, 23 Sep 2015 08:34:55 +0000 (10:34 +0200)]
Remove ENCA support

There is no real value in it. ENCA only works in some cases and I
can't find any information about software that integrates libass
which relies on it or users that rely on ENCA support in case the
interface is exposed directly (e.g. in MPlayer).

If there is still a wish to have charset detection integrated into
libass (it is out of scope, IMHO), a better library like uchardet
should be used for that.

8 years agoMerge pull request #84 from astiob/msvc
Grigori Goronzy [Tue, 22 Sep 2015 21:07:02 +0000 (23:07 +0200)]
Merge pull request #84 from astiob/msvc

MSVC/ICL and general header fixes

8 years agofontselect: make iconv optional again
wm4 [Sun, 20 Sep 2015 17:21:37 +0000 (19:21 +0200)]
fontselect: make iconv optional again

It was needed for UTF16BE -> UTF8 only, which is trivial to implement.

8 years agoFully fix compilation with MSVC/ICL
Oleg Oshmyan [Sun, 27 Apr 2014 05:55:42 +0000 (06:55 +0100)]
Fully fix compilation with MSVC/ICL

As before, this does not add any build system support:
a config.h file and a project must still be manually created
(or the compiler can be run manually instead of using a project).

Signed-off-by: Grigori Goronzy <greg@kinoho.net>
Signed-off-by: Oleg Oshmyan <chortos@inbox.lv>
8 years agoInclude config.h in all source files and in no headers
Oleg Oshmyan [Tue, 15 Sep 2015 14:10:58 +0000 (17:10 +0300)]
Include config.h in all source files and in no headers

This way, #include "config.h" is consistently the very
first thing the compiler sees when compiling any file.

Some source files currently don't use anything defined in config.h,
but it's easier and less error-prone to include it now to anticipate
possible future changes in those files, config.h or other headers.

8 years agoMove ASS_Shaper declaration to ass_shaper.h
Oleg Oshmyan [Sun, 27 Apr 2014 05:48:47 +0000 (06:48 +0100)]
Move ASS_Shaper declaration to ass_shaper.h

8 years agounistd.h is not needed
Oleg Oshmyan [Sun, 27 Apr 2014 04:06:05 +0000 (05:06 +0100)]
unistd.h is not needed