path: root/libass/
Commit message (Collapse)AuthorAgeFilesLines
* Release Oshmyan2020-10-271-1/+1
* Add missing file to MakefileOleg Oshmyan2020-10-271-1/+1
* Fix libtool versionOleg Oshmyan2020-03-301-2/+2
* api: add ass_track_set_feature()wm42020-03-291-1/+1
| | | | | | | | Since C does not allow empty enums, there is an "example", which doesn't do anything. I think we might be able to make this change the default bidi direction or so. As if this commit, the flag set by it is also not available outside of ass.c, which should be solved by moving parser_priv to an internal header.
* Release Oshmyan2017-10-311-1/+1
* Silence missing-field-initializers warningRodger Combs2017-10-271-1/+2
| | | | | | | Clang gives this warning for the universal initializer `={0}`: Signed-off-by: Oleg Oshmyan <>
* Completely exclude ass_fontconfig.c from build when it is disabledOleg Oshmyan2017-10-271-1/+6
* x86: fix out-of-root builds after 8bddaa2a7Ricardo Constantino2017-09-161-1/+1
| | | | | nasm always uses %include paths starting from the directory from where it's started.
* build: switch from yasm to nasmRodger Combs2017-09-051-4/+4
* Makefile: silence warning when x86/utils has no symbolsRodger Combs2017-09-051-2/+2
* renderer: remove legacy FreeType rasterizerDr.Smile2017-07-311-19/+10
* cosmetic: extract most of the outline-related functions into separate fileDr.Smile2017-07-311-2/+2
* Release Goronzy2017-06-031-1/+1
* Bump ABI version and release Oshmyan2017-01-031-3/+3
| | | | | | 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.
* Release Oshmyan2016-12-291-1/+1
* Release Goronzy2016-10-051-1/+1
* Release Goronzy2016-09-241-1/+1
* Release Oshmyan2016-02-201-3/+3
* ass: use a bitmap for checking duplicate eventswm42015-10-121-1/+1
| | | | | | | | | | | | | 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.
* Release
* build: add missing new source fileswm42015-10-031-2/+3
| | | | | The ass_func_template.h entry was removed with commit c22a4ff9. utils.asm is really new.
* Fully fix compilation with MSVC/ICLOleg Oshmyan2015-09-171-1/+1
| | | | | | | | | 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 <> Signed-off-by: Oleg Oshmyan <>
* NIH: add locale-independent string functionsGrigori Goronzy2015-09-111-1/+2
| | | | | | | | OS or platform-specific locale independent functions are painful to use and/or not available, so roll our own. Not great but the least painful and least intrusive. v2: fix indexing, use static inline
* configure: proper configure switches for DirectWrite and CoreTextwm42015-08-281-2/+6
| | | | | Also, remove the ass_coretext.c conditional compilation hack, and fix instead.
* Rename dwrite.h, minor cleanupswm42015-08-051-1/+1
| | | | | | | Rename dwrite.h to dwrite_c.h to make the difference between the official header and ours clearer. Also apply minor cleanups to it. Remove the patch against upstream MinGW; it's pointless now.
* directwrite: convert to Cwm42015-07-111-1/+1
| | | | | | | | | | | | | | | | | | | | | Unfortunately, nobody ever tested the MinGW dwrite.h header in C. There are multiple glaring mistakes, and the header doesn't even compile by itself. The main issues are overloaded functions (which doesn't work in C), and broken COBJMACROS defines. dwrite.diff contains changes to dwrite.h which make libass work. Warning: the patch lacks a required change to the DrawInlineObject method of IDWriteTextRenderer (missing THIS_). Additionally, these definitions would ideally be provided by dwrite.h: DEFINE_GUID(IID_IDWriteFactory, 0xb859ee5a,0xd838,0x4b5b,0xa2,0xe8,0x1a,0xdc,0x7d,0x93,0xdb,0x48); DEFINE_GUID(IID_IDWritePixelSnapping, 0xeaf3a2da,0xecf4,0x4d24,0xb6,0x44,0xb3,0x4f,0x68,0x42,0x02,0x4b); DEFINE_GUID(IID_IDWriteTextRenderer, 0xef8a8135,0x5cc6,0x45fe,0x88,0x25,0xc5,0xa0,0x72,0x4e,0xb8,0x19); Also, in order to make libass compile out of the box with current MinGW/msys installations, a very stripped down in-tree copy of dwrite.h is provided.
* directwrite: compile only on Windowswm42015-07-111-1/+7
* Changed to work with c++ filesfeliwir2015-07-101-2/+2
* fontselect: implement a coretext font providerStefano Pigozzi2015-07-101-1/+3
| | | | | | | | | | | | | | | Fontconfig is known to be very slow on OS X and Windows, this has to do with the extremely prohibitive cache times (which are getting even longer with latest versions of Fontconfig). This commits starts to address the problem by using CoreText on OS X to load the font data. The commit uses the simplest possible approach to load all of the data in memory and then use it to match. This causes a somewhat slow startup time (around ~400ms on my i7) but it is already better than waiting *minutes* for Fontconfig to cache the fonts data. A later commit will improve the speed of the match by using a hybrid approach that lazy loads in the libass database only the necessary fonts.
* Custom font matching and font sourcesGrigori Goronzy2015-07-101-4/+3
| | | | | | | Implement a simple font sorter (FontSelector) and an interface to deal with multiple font sources (FontProvider). Unfinished business, but works for the most part. Currently the only implemented FontProvider uses fontconfig.
* Implement cascade gaussian blurDr.Smile2015-07-041-2/+2
| | | | | | | | | | That's complete version with SSE2/AVX2 assembly. Should be much faster than old algorithm even in pure C. Algorithm description can be found in this article (PDF): Close #9
* Release
* add missing ass_func_template.h to list of sourceswm42015-06-301-1/+1
* Switch to virtual function tableDr.Smile2015-06-261-3/+3
| | | | | | | | | | Use one pointer to table of functions instead of scattered bunch of function pointers. Different versions of these tables can be constructed in compile time. Also, bitmap memory alignment now depends only on SSE2/AVX2 support and is constant for every width. That simplifies code without noticeable performance penalty.
* Release
* Define _GNU_SOURCERodger Combs2015-02-171-1/+1
| | | | Fixes #161
* Update version and changelog0.12.0Grigori Goronzy2014-10-231-2/+2
* Implement fast quad-tree rasterizer in C and x86/SSE2/AVX2Dr.Smile2014-04-291-0/+10
| | | | Signed-off-by: Rodger Combs <>
* Redesigned configure/Makefile setup11rcombs2014-02-241-27/+5
| | | | | | Adds yasm version check and handles Free/OpenBSD/win32 correctly. Signed-off-by: Grigori Goronzy <>
* Add missing distfilesGrigori Goronzy2014-02-191-3/+3
* We have aligned stack on Win6411rcombs2014-02-171-1/+1
* Define HAVE_ALIGNED_STACK; should wrap up #4811rcombs2014-02-171-6/+6
* Build: Remove references to unimplemented ARM ASM11rcombs2014-01-251-4/+0
* Added x86 ASM functions11rcombs2014-01-251-0/+46
* build: add more warningswm42014-01-241-1/+3
* Update version infoGrigori Goronzy2013-10-141-1/+1
* Allow building as DLL on Windowswm42013-06-111-1/+1
| | | | Patch by jon_y on IRC.
* Revert "shaper: add UCDN support"Grigori Goronzy2012-10-151-1/+1
| | | | | | | | This reverts commit 840ce4c2d9381e340c3239d104933fea85fff3e5. Harfbuzz added UCDN support much quicker than I thought and the latest release 0.9.5 contains UCDN already, so we don't need it in libass anymore.
* shaper: add UCDN supportGrigori Goronzy2012-10-011-1/+1
| | | | | | Add explicit support for UCDN, without relying on any HarfBuzz integration. This finally allows easy usage of HarfBuzz without glib, ICU, or some other big bloated library!
* Provisional bidi and shaping supportGrigori Goronzy2011-07-061-1/+2
| | | | | | | | | | | | | | Adds fully working bidirectional text and simple shaping support. The following works: - bidirectional text according to the Unicode Bidirectional Algorithm - simple shaper for mirrored forms (brackets, etc.) according to rule L4 of the Unicode Bidirectional Algorithm - reordering into visual order with correct line wrapping However, the implementation certainly needs efficiency improvements (caching, less malloc'ing), a proper shaper (HarfBuzz) needs to be hooked up and various bugs with karaoke and positioning need to be fixed.
* Set AM_CFLAGS instead of CFLAGS directlyGrigori Goronzy2010-08-091-0/+2
* Version bump0.9.10Grigori Goronzy2010-08-061-2/+2
| | | | | Increment shared library revision (due to API additions) and autoconf version.
* refactor: move ASS_Renderer getters/setters/etc into separate fileGrigori Goronzy2010-08-011-1/+1
* Replace strtod with locale-independent strtodGrigori Goronzy2010-01-051-1/+1
| | | | | | | | | strtod respects the locale and in some locales, the decimal separator is not a point, leading to parsing errors in tags like \pos(23.4,5), which are perfectly valid. As there isn't a really portable way to use a particular locale just for one call to strtod, reimplement it. The implementation was taken from the 1.8 branch of Ruby.
* Refactor: move event parsing code into separate fileGrigori Goronzy2009-09-011-1/+2
| | | | | Move all code related to parsing event lines and processing override tags into a separate file (ass_parse.c).
* Factor out renderer types into separate fileGrigori Goronzy2009-08-071-1/+1
* Bump shared library version0.9.7Grigori Goronzy2009-08-071-1/+1
* Updates for autotools' make distGrigori Goronzy2009-07-121-1/+2
| | | | | Rename ass_cache_template.c to ass_cache_template.h; add libass.sym to EXTRA_DIST.
* Replace string defines with real stringsGrigori Goronzy2009-07-111-1/+1
| | | | | | Instead of referencing string defines from help_mp.h, use the strings directly in ass_msg. Consequently, help_mp.h is useless and can be deleted.
* Implement drawing mode (\p)Grigori Goronzy2009-07-061-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Finally implement the drawing mode, which allows drawing of custom vector graphics. Drawings are intercepted in ass_render_event; a hash of the drawing string is generated which is then used for looking up drawings and bitmaps of drawings in the cache. The drawings itself are "fake" glyphs. They are created by parsing the simple drawing description language, evaluating the curves described (lines, cubic beziers and/or a special kind of b-splines) and creating vector outlines. Afterwards, these drawings are (with a few exceptions, e.g. ascender/descender) exactly handled like regular glyphs. Support for vector clippings is still missing, but otherwise the implementation should be complete and compatible with VSFilter. The libass integration of the drawing parsing/processing code is still a bit sketchy and should be refactored. History: WIP: Drawing mode infrastructure WIP: Drawing tokenizer WIP: Parse drawing tokens, call evaluators WIP: Bezier/b-spline evaluator WIP: Final pieces for the drawing mode WIP: Heavy modifications to the drawing parser/tokenizer WIP: Dynamic outline memory allocation WIP: Drawing position fixes WIP: more drawing position fixup (similar to VSFilter now) WIP: Lots of cleanup and fixes for drawings. WIP: Drawing mode integration into ass_render_event
* Restrict symbols exported in the DSOGrigori Goronzy2009-06-291-0/+1
| | | | | | Only export those symbols into the shared object which are defined in the API (ass.h). A file libass.sym which contains a list of symbols was added and libtool configured to use it.
* Incorporate mputils.c into ass_utils.cGrigori Goronzy2009-06-271-3/+3
| | | | | | Move helper functions originating from MPlayer into ass_utils.c. Remove some debugging code that is #if 0'ed for ages now. Delete mputils.c and mputils.h and remove them from the build system.
* Add autotools infrastructure.greg2009-06-181-0/+14