summaryrefslogtreecommitdiffstats
path: root/libass/Makefile.am
Commit message (Collapse)AuthorAgeFilesLines
* Switch to non-recursive MakefileOneric2022-05-121-60/+0
| | | | | | | | | | | | | | Non-recursive Makefiles allow better and more robust automatic dependency resolution and higher parallelism for shorter build-times. This change keeps all locations of the non-installed targets unchanged for minimal firction. Calling make from subdirectories no longer works, but instead the specific build targets can be invoked directly from the toplevel. If we bumped the required Automake version to 1.13+, the library fragment could use %reldir% or %D% to be unaffected by potential future directory moves, but it is unlikely we'll ever change the location or name of the libass directory.
* Release 0.16.00.16.0Oneric2022-05-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This release brings a new `ASS_FEATURE_WHOLE_TEXT_LAYOUT` API toggle, brings an important API change on (only) Microsoft's Win32 platform to enable arbirtrary paths to be used rather than only ANSI ones, fixes an incompatibility with FreeType versions >= 2.11.1 on Win32 and brings many more bug and compatibility fixes as well as other improvements. API users are highly encouraged to pay special attention to the following points: * The documentation has been expanded and multiple errors in it have been fixed. It may be worthwhile to reread the documentation for all functions you are using (or all of it). If you still have questions afterwards or spot an error, please contact us so the docs can be further improved. * For those on Win32 only (other platforms do not require special handling of the path's encoding): The new support for arbitrary paths via the new dual encoding used in the majority of our API is mostly backward compatible, i.e. continuing to use `fopen` ANSI paths works mostly as well (or bad) as before except when there are actual on-disk name collisions. However, the other way around, using the new encoding with older libass binaries, will in general fail unless the paths happen to be pure 7bit US-ASCII. If you want to make use of arbitrary paths but also wish to continue to support older libass versions, you should continue to always use the `fopen` encoding if `ass_library_version() < 0x01502002`. Technically, this should be accompanied by an increase in the minor soname version, but there is none because the change is Win32-specific and the minor soname version is not even used by the dynamic linker in common MS Windows setups. Signed-off-by: Oleg Oshmyan <chortos@inbox.lv>
* Add partial unicode support for WindowsDr.Smile2022-03-311-1/+2
|
* build: use `X86` as the generic name for whole x86 familyOleg Oshmyan2022-02-121-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, we use `INTEL` to denote any supported x86 variant and `X64` to denote specifically x86-64 (and previously used `X86` to denote 32-bit x86). `INTEL` is a subpar name for two reasons: * Intel has produced notable non-x86 architectures (Itanium). * x86-64 was designed and patented not by Intel but by AMD. This is currently only used in configure.ac and Makefile.am, so it does not matter much. However, the next commit will expose a config.h macro flagging the whole x86 family, which non-Autotools users will have to set manually, so this will cease being a purely internal choice and will start confusing users. Instead, the most generic name for the whole family that is in common use and does not suffer from such problems is "x86", so use `X86`. The switch is slightly complicated by the fact our configure.ac and Makefile.am used to use `X86` as in Microsoft's naming scheme, where "x86" means "32-bit x86". Ideally, we would use another equally good name for the family that is free from this ambiguity; however, I know no such name. (Indeed, `X86` as a name for 32-bit x86 is problematic even if one disregards x86-64, because 16-bit x86 exists as well. This commit technically leaves configure.ac to lie about 16-bit x86 by setting `X86=false`, but we have no 16-bit assembler code, so the new use of `X86` should be viewed as a name for "any *supported* variant of x86".) To somewhat highlight that we're no longer using Microsoft's scheme, also switch the name for the x86-64 architecture from `X64` to `X86_64`. This should also make it more intuitively obvious that one (X86_64) is a subset of the other (X86). This is also a more standard name with a clearer etymology, and we already use this name in our `ASFLAGS`.
* build: move private_prefix define to Makefile.amrcombs2021-12-061-1/+1
|
* Add wyhash.hrcombs2021-10-151-1/+1
| | | | | | | This is a very fast hash function for the cache system The version of the header corresponds to https://github.com/wangyi-fudan/wyhash/commit/166f35228204b97ddd8ddead6b7a00467c91fdf6
* Use a wrapper script for NASMOneric2021-09-151-1/+1
| | | | | | | | | | libtool assumes NASM accepts the same flags as the C-compiler, which is not actually the case. Previously we used -prefer-no-pic to avoid any additional flags being appended by libtool, which worked well for all tested platforms, but as it turns out it doesn't for NetBSD and OpenBSD. Using this wrapper-script also enables us to automatically define the PIC macro as needed, which became relevant when we started supporting 32-bit x86 PIC-assembly in 026d65e707637b0f90902bca48654871e33575f3.
* Release 0.15.20.15.2Oleg Oshmyan2021-09-121-1/+1
| | | | | | | | | | | | | | | | | | | | | Another bug fix release without API or ABI changes, mainly to fix more known 0.15.0 and 0.15.1 regressions. But as a bonus, it is now possible to build the DirectWrite system font provider for Microsoft's Universal Windows Platform (UWP). Two known minor 0.15.x DirectWrite system font regressions remain: * when a font is attached/memory-loaded but a different (non-attached) style of the same font is used by the subtitles (only the attached style[s] will be used; this also affects Core Text since 0.13.0 but not Fontconfig); * in the unlikely case that the full name of a system font equals the _family_ name of another system font (only the family name matches will be found). Also please note that our IRC channel #libass has moved from freenode.net to Libera.Chat, and all presence on freenode.net has been fully retired.
* directwrite: read metadata from IDWriteFontFace3 if possibleOleg Oshmyan2021-07-101-1/+1
| | | | This avoids an extra trip to FreeType.
* Release 0.15.10.15.1Oleg Oshmyan2021-05-021-1/+1
|
* Rewrite be_blur() assemblyDr.Smile2021-04-211-5/+1
| | | | | | | | | | | | | Change list: - Fixed differences from C version introduced in f23b9ed64bd4ccf249c686616dd3f51a69d285dc. - Common macro for SSE2 and AVX2 versions. - Reduced register usage and efficient 32-bit version. - Full width memory operations instead of half-register. - Vectorized handling of width tails instead of byte/word loops. - Vectorized initial population of temporary buffer and final line fill. - Interleaved layout of temporary buffer. - Great speedup overall.
* Release 0.15.00.15.0Oleg 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 0.14.00.14.0Oleg Oshmyan2017-10-311-1/+1
|
* Silence missing-field-initializers warningRodger Combs2017-10-271-1/+2
| | | | | | | Clang gives this warning for the universal initializer `={0}`: https://bugs.llvm.org/show_bug.cgi?id=21689 Signed-off-by: Oleg Oshmyan <chortos@inbox.lv>
* 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 0.13.70.13.7Grigori Goronzy2017-06-031-1/+1
|
* Bump ABI version and release 0.13.60.13.6Oleg 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 0.13.50.13.5Oleg Oshmyan2016-12-291-1/+1
|
* Release 0.13.40.13.4Grigori Goronzy2016-10-051-1/+1
|
* Release 0.13.30.13.3Grigori Goronzy2016-09-241-1/+1
|
* Release 0.13.20.13.2Oleg 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 0.13.00.13.0wm42015-10-031-3/+3
|
* 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 <greg@kinoho.net> Signed-off-by: Oleg Oshmyan <chortos@inbox.lv>
* 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 Makefile.am 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 configure.ac 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): https://github.com/MrSmile/CascadeBlur/releases Close #9
* Release 0.12.30.12.3wm42015-06-301-1/+1
|
* Makefile.am: 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 0.12.20.12.2wm42015-05-071-1/+1
|
* 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 <rodger.combs@gmail.com>
* Redesigned configure/Makefile setup11rcombs2014-02-241-27/+5
| | | | | | Adds yasm version check and handles Free/OpenBSD/win32 correctly. Signed-off-by: Grigori Goronzy <greg@chown.ath.cx>
* 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
| | | | | | | | | | | | | | | | | | | |