summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Release 0.13.20.13.2Oleg Oshmyan2016-02-204-6/+7
|
* Document default value for ass_set_check_readorderOleg Oshmyan2016-02-201-0/+1
|
* ass: handle movement==0 in ass_step_sub()wm42016-02-041-6/+12
| | | | Finds the start of the subtitle at "now".
* font: remove unused functionwm42016-01-142-27/+0
|
* ass: add ass_set_check_readorder() API functionwm42015-12-314-3/+24
| | | | | | | | 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.)
* ass: declare mixing ass_flush_events() and ass_process_chunk() allowedwm42015-12-311-1/+2
| | | | | | 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.
* Changelog: create entry for the next versionwm42015-12-311-0/+6
| | | | | | | | | 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.
* ass: reset the ReadOrder bitmap on ass_flush_events()wm42015-12-201-0/+3
| | | | | Otherwise, ass_process_chunk() will reject events that were previously removed with ass_flush_events(), which is nonsense.
* coretext: fix NULL CFStringRef dereferencewm42015-12-091-0/+2
|
* Release 0.13.10.13.1Oleg Oshmyan2015-12-014-3/+24
|
* coretext: don't fetch character set when it isn't neededOleg Oshmyan2015-12-011-3/+3
| | | | | This avoids unnecessary work and fixes a memory leak: the character set wasn't released when code == 0.
* fontselect: destroy private data of fonts that fail to be addedOleg Oshmyan2015-12-011-0/+4
|
* fontselect: fix bool return valuesOleg Oshmyan2015-12-011-6/+6
| | | | | | | 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.
* coretext: don't forget to release font format attributeOleg Oshmyan2015-11-071-0/+2
|
* fontselect: replace is_postscript flag with check_postscript functionOleg Oshmyan2015-11-045-86/+133
| | | | | | | | | | | | | | | | | | | | | | | 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.
* directwrite: improve error handlingOleg Oshmyan2015-10-301-23/+51
| | | | | | | | | | * 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.
* directwrite: slightly clean up the codeOleg Oshmyan2015-10-301-19/+17
| | | | | | | | | * 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.
* directwrite: split out the inner loop of scan_fonts as a separate functionOleg Oshmyan2015-10-301-109/+117
| | | | | | | | | | | | 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.
* Interpret timestamps with negative components more obviouslyOleg Oshmyan2015-10-291-2/+2
| | | | | Keep all components signed, allowing for timestamps like 00:01:-05.00 to denote 55 seconds. This matches the behavior of VSFilter.
* Fix several signedness bugsOleg Oshmyan2015-10-292-2/+2
| | | | Reported by gcc -Wall -Wextra.
* Fix Windows buildGrigori Goronzy2015-10-291-1/+3
| | | | | | | 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.
* fontselect: silence warnings about discarding constOleg Oshmyan2015-10-291-2/+2
| | | | | | | | 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.
* Fix the Linux build on Travis CIOleg Oshmyan2015-10-231-1/+6
| | | | | We need a newer Fontconfig than the default Ubuntu environment provides, so switch to a newer Ubuntu.
* fontselect: don't trim font namesOleg Oshmyan2015-10-233-39/+6
| | | | | | | | | | | | 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.
* fontselect: don't find fonts with PostScript outlines by full nameOleg Oshmyan2015-10-231-18/+13
| | | | | | | | | | | | 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.
* font: check FT_Get_Postscript_Name return value for NULLOleg Oshmyan2015-10-231-1/+3
|
* fontselect: use stdbool.h wherever appropriateOleg Oshmyan2015-10-235-27/+26
|
* directwrite: fix broken return value checkOleg Oshmyan2015-10-231-1/+1
|
* fontselect: find fonts with PostScript outlines by PostScript nameOleg Oshmyan2015-10-236-13/+88
| | | | | | | 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.
* fontconfig: read PostScript namesOleg Oshmyan2015-10-232-4/+9
| | | | | | | 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.
* fontselect: read PostScript names for memory fontsOleg Oshmyan2015-10-221-1/+9
| | | | | | 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.
* fontselect: move PostScript name into ASS_FontProviderMetaDataOleg Oshmyan2015-10-215-25/+28
|
* fontselect: fix ass_font_provider_add_font signature and doxygenOleg Oshmyan2015-10-212-5/+6
| | | | index is signed, and psname only overrides it iff index < 0.
* drawing: remove unused fieldwm42015-10-142-2/+0
|
* configure: don't add unnecessary libraries to PKG_LIBS_PRIVATEOleg Oshmyan2015-10-141-3/+6
| | | | | | 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.
* configure: include -liconv if that is foundwm42015-10-131-2/+7
|
* ass: use a bitmap for checking duplicate eventswm42015-10-123-4/+61
| | | | | | | | | | | | | 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.
* configure: Set the correct x32 machine option for yasmLuke Dashjr2015-10-101-0/+6
|
* Use proper include statement for HarfBuzzwm42015-10-071-1/+1
|
* cache: remove unused BINSTRING field typewm42015-10-061-9/+0
| | | | Its only use was removed in commit b63d8931.
* Update last release date in READMEOleg Oshmyan2015-10-031-1/+1
|
* Release 0.13.00.13.0wm42015-10-035-6/+36
|
* 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.
* configure: do not add -ldwrite to libass.pcwm42015-09-241-3/+0
| | | | | This was forgotten. We always load dwrite.dll at runtime, so this isn't needed.
* ass_font: fix broken loop conditionwm42015-09-241-1/+1
| | | | | | As pointed out in #198. This is certainly just a typo. Fixes #198.
* Merge pull request #197 from grigorig/remove-encaGrigori Goronzy2015-09-234-91/+5
|\ | | | | Remove ENCA support
| * Remove ENCA supportGrigori Goronzy2015-09-234-91/+5
|/ | | | | | | | | | | 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.
* Merge pull request #84 from astiob/msvcGrigori Goronzy2015-09-2230-17/+67
|\ | | | | MSVC/ICL and general header fixes
| * Fully fix compilation with MSVC/ICLOleg Oshmyan2015-09-1722-1/+51
| | | | | | | | | | | | | | | | | | 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>
| * Include config.h in all source files and in no headersOleg Oshmyan2015-09-1712-12/+12
| | | | | | | | | | | | | | | | | | 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.
| * Move ASS_Shaper declaration to ass_shaper.hOleg Oshmyan2015-09-172-3/+4
| |
| * unistd.h is not neededOleg Oshmyan2015-09-172-2/+1
| |
* | fontselect: make iconv optional againwm42015-09-213-22/+61
|/ | | | It was needed for UTF16BE -> UTF8 only, which is trivial to implement.
* directwrite: change WINBOOL to BOOL.torque2015-09-172-11/+11
| | | | WINBOOL is MingW-specific.
* directwrite: fix syntax error with MSVC.torque2015-09-171-1/+1
| | | | | MSVC requires the calling convention to be grouped with the identifier when defining a callback type.
* font: ignore bearing for strikesGrigori Goronzy2015-09-161-16/+11
| | | | | | | | | | This is more robust and simpler. The bearing calculations initially were bugged, but getting rid of them completely seems better. It is consistent with other text renderers as well. To simplify things, also move striking before the additional scale is applied and get rid of the half-pixel overlapping thing; it is not needed with additive blending. Fixes #193.
* ass_fontselect: do not use PATH_MAXwm42015-09-131-1/+1
| | | | | This seems to cause issues on MSVC. Considering that even most Unix OSes hate PATH_MAX and don't really honour it, using 4096 is just as good.
* Merge pull request #192 from grigorig/stringfuncsGrigori Goronzy2015-09-119-51/+162
|\ | | | | NIH: add locale-independent string functions
| * NIH: add locale-independent string functionsGrigori Goronzy2015-09-119-51/+162
|/ | | | | | | | 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
* fontselect: avoid undefined behaviorwm42015-09-091-3/+5
| | | | | | Passing NULL as argument to %s format specifiers when using the printf fasmily of functions is not allowed. While some libcs handle it, other libcs will simply crash.
* fontselect: raise font selection log messagewm42015-09-091-1/+1
|
* ass_fontselect: ignore ./.. and hidden fileswm42015-09-081-0/+2
|
* fontselect: handle additional malloc errorsGrigori Goronzy2015-09-081-2/+5
|
* ass_fontselect: uninline ass_map_font()wm42015-09-072-12/+15
| | | | | Also fixes the build on OSX under some circumstances (weird and inconsistent rules for the inline keyword in C).
* configure: make fontconfig optionalwm42015-09-071-1/+14
|
* ass_fontselect: log the selected font providerwm42015-09-071-5/+9
|
* ass_shaper: raise shaper info log levelwm42015-09-071-1/+1
| | | | | MSGL_V is usually for far noisier messages, such as those printed per subtitle event.
* ass_bitmap: fix potential NULL derefwm42015-09-071-3/+7
| | | | | | | | | | | | | Another consequence of the trickiness in this code. This codepath for opaque_box=1 assumes both bm_o and bm_g are set, but if memory allocation fails somewhere, bm_o could be non-NULL, but bm_g NULL, which then would result in a crash when accessing bm_g. Possibly this code could be cleaned up to look much nicer (and not have dozens of hidden, obscure bugs), but for now this fixes the potential crash found by Coverity. Fixes CID 146125.
* ass_render: fix potential NULL derefwm42015-09-071-1/+1
| | | | Fixes CID 146421.
* travis: run on OSX toowm42015-09-071-1/+2
|
* ass_drawing: make ass_drawing_new() fail properly on OOMwm42015-09-071-1/+4
| | | | Fixes CID 146124.
* ass_parse: add check against ass_drawing_new() failurewm42015-09-071-8/+9
| | | | | Also move the argument parsing part to the top of the function. IT's easier to read this way.
* ass_render: fix potential NULL derefwm42015-09-071-2/+2
| | | | | | | | | | The logic here is pretty complicated. The caller of this function guards it with "if(info->bm || info->bm_o){", and generally indeed only one of them is set. But in some cases, both are needed. fix_outline() definitely dereferences both. This is not necessarily guaranteed, e.g. on out of memory errors. Add the missing checks. Fixes CID 146125.
* fontselect: initialize postscript nameGrigori Goronzy2015-09-071-1/+1
| | | | Bad things can happen otherwise. Found by coverity scan.
* fontselect: fix memory leakGrigori Goronzy2015-09-071-1/+1
| | | | Introduced by commit d6bb9af6. Found by coverity scan.
* Merge branch 'fonts'Grigori Goronzy2015-09-0727-615/+3602
|\
| * Merge pull request #190 from grigorig/fontsGrigori Goronzy2015-09-077-44/+144
| |\ | | | | | | Substitutions and some fixes
| | * fontselect: get rid of strdup for display nameGrigori Goronzy2015-09-072-8/+3