pax_global_header00006660000000000000000000000064152166170000014510gustar00rootroot0000000000000052 comment=4a05d8127f525943ebf45fdc6497c9e665947f0d libass-libass-64ebcac/000077500000000000000000000000001521661700000150115ustar00rootroot00000000000000libass-libass-64ebcac/.github/000077500000000000000000000000001521661700000163515ustar00rootroot00000000000000libass-libass-64ebcac/.github/ISSUE_TEMPLATE/000077500000000000000000000000001521661700000205345ustar00rootroot00000000000000libass-libass-64ebcac/.github/ISSUE_TEMPLATE/build.yml000066400000000000000000000066321521661700000223650ustar00rootroot00000000000000name: Build problem description: Report an issue building libass title: 'build: ' labels: build assignees: [] body: - type: markdown attributes: value: > Thanks for filing an issue! To help us determine what's causing your issue, please take your time to read and fill out everything with as much detail as you can. If you're encountering the issue with an old version of libass, please retest with current git master or the latest release if possible. - type: input id: libass-version validations: required: true attributes: label: libass version description: > What version of libass are you encountering this issue on? Ideally the full git commit hash is referenced or the exact release number if building from a release tarball. - type: input id: libass-regression attributes: label: Is it a regression? description: > If known: Did previous libass versions also have the same issue? Or is this a recent change (since when)? - type: input id: config-cmd validations: required: true attributes: label: How did you invoke configure? description: > Please show the full invocation with all arguments and set environment variables. - type: textarea id: system validations: required: true attributes: label: System Information description: > Tell us what system you were building on and what system you were building for if different. Include the CPU architecture, OS version, update level if applicable and other relevant information. placeholder: | examples: - building on and for MacOS 10.5 with a 64bit PowerPC CPU - cross-building on Debian 10 Buster with a big-endian 32bit MIPS CPU for 32bit x86 MS Windows XP SP3 using mingw-w64 - ... - type: textarea id: toolchain validations: required: true attributes: label: Toolchain description: > What compiler and linker did you use? Which versions of those *(run e.g. `gcc --version` and `ld -V`)*? - type: textarea id: error-log validations: required: true attributes: label: Log of the error description: > Copy the log of the error messages you encountered and make sure to include also plenty of the surrounding log lines. Also tell us what exact command resulted in the error. placeholder: | ``` ``` # Uploads are only possible in textareas not inputs - type: textarea id: config-log attributes: label: Configuration log description: > Sometimes the above information may not be enough to determine what went wrong and we may ask you to upload the `config.log` file which was generated after `configure` was run. It contains verbose information about the configuration process and determined system information. You can also already upload this file now to save some time later. Do **not** copy paste the contents into the below field! Instead rename `config.log` to `config.log.txt` and upload the renamed file. - type: textarea id: additional-info attributes: label: Additional info description: > Feel free to add anything else that may be useful. libass-libass-64ebcac/.github/ISSUE_TEMPLATE/crash.yml000066400000000000000000000074211521661700000223630ustar00rootroot00000000000000name: Crash Report description: Report a crash title: 'Crash: ' labels: bug assignees: [] body: - type: markdown attributes: value: > Thanks for filing an issue! To help us determine what's causing your issue, please take your time to read and fill out everything with as much detail as you can. If you're encountering the crash with an old version of libass, please retest with current git master or the latest release if possible. - type: input id: libass-version validations: required: true attributes: label: libass version description: > What version of libass are you encountering this issue on? If you aren't sure how to find this out, give precise information on your player, its version and where you got the player binary from. If you uploaded a correct screenshot for comparison and haven't told us already, please also specify what renderer and which version of it gave you the correct result. - type: input id: libass-regression attributes: label: Is it a regression? description: > Did previous libass samples render the sample better? Or is this a recent change (since when)? - type: textarea id: issue-sample validations: required: true attributes: label: ASS Sample description: > Please provide a sufficient sample to reproduce the crash. At minimum this will be an excerpt of an ASS file; don't forget to include the relevant Dialogue and Style lines. The excerpt should basically be a fully functional ASS file in itself. If you can’t make an excerpt, we can work with a full ASS file if you tell us the time at which the problem occurs. If you see the problem only with a particular video file that contains subtitles, try to upload a short cut from the video file that we can play to see the problem. You can use tools such as MKVToolNix to make a smaller cut from a large file. placeholder: | If it isn't too long paste the ASS excerpt enclosed in triple backticks as below, or upload a sample file ``` [Script Info] ``` - type: dropdown id: issue-sample-font validations: required: true attributes: label: Special Fonts description: > If a particular font is needed to see the wrong rendering, upload it as a zipped file inside the previous textarea if you have permission to do so. If it is a font freely available on the Web, you can instead give a link to it. options: - I uploaded or linked to the required font - The issue doesn't depend on a specific font - type: textarea id: system attributes: label: System Information description: > Tell us what system you're seeing the issue on (including the OS update level if applicable). If VSFilter and libass screenshots were taken on different systems, give the info for both. placeholder: | OS: *(\*Linux, MacOS, Windows, …)* CPU: *(32 or 64Bit AMD/Intel x86, ARM, POWER, …)* e.g. MacOS 10.5 with a 64bit x86 (Intel) CPU - type: textarea id: log attributes: label: Log and Stacktrace description: > A complete log and a stacktrace with debugging symbols is very helpful to find out what's going wrong. If you have logs regarding the issue please include them. Eg for [mpv](https://github.com/mpv-player/mpv), you can obtain a log by adding `--log-file=output.txt` when playing the affected file. - type: textarea id: additional-info attributes: label: Additional info description: > Feel free to add anything else that may be useful. libass-libass-64ebcac/.github/ISSUE_TEMPLATE/question.md000066400000000000000000000001601521661700000227220ustar00rootroot00000000000000--- name: Question about: Question about libass or libass usage title: '' labels: question assignees: '' --- libass-libass-64ebcac/.github/ISSUE_TEMPLATE/wrong-rendering-report.yml000066400000000000000000000116601521661700000257030ustar00rootroot00000000000000name: Wrong rendering report description: Report subtitles that look wrong (different from VSFilter) title: 'Rendering: ' labels: compatibility assignees: [] body: - type: markdown attributes: value: > Thanks for filing an issue! To help us determine what's causing your issue, please take your time to read and fill out everything with as much detail as you can. If you're encountering the problem with an old version of libass, please retest with current git master or the latest release if possible. Also, if you have the chance to: **Compare to VSFilter** Before reporting an issue, if possible, check what your file looks like in a video player that uses VSFilter to render subtitles (for example, MPC-HC). If it looks the same, even if it still feels wrong, this is probably intentional and not an issue with libass. Note, that “xy-VSFilter with libass” is not a VSFilter-based ASS renderer and should thus **not** be used as a comparison. - type: textarea id: issue-screenshots attributes: label: Screenshots description: > If possible, add a screenshot of the file in libass (mpv, VLC, Kodi, MPlayer) that shows the wrong rendering, and a screenshot of the same file in a different renderer/video player (for example, MPC-HC) that shows the correct rendering. - type: textarea id: issue-description validations: required: true attributes: label: Description of the issue description: > Tell us clearly and concisely what you think looks wrong. Even if you show a screenshot, it is not always obvious to another person what you think is the problem. - type: input id: libass-version validations: required: true attributes: label: libass version description: > What version of libass are you encountering this issue on? If you aren't sure how to find this out, give precise information on your player, its version and where you got the player binary from. If you uploaded a correct screenshot for comparison and haven't told us already, please also specify what renderer and which version of it gave you the correct result. - type: input id: libass-regression attributes: label: Is it a regression? description: > Did previous libass samples render the sample better? Or is this a recent change (since when)? - type: textarea id: issue-sample attributes: label: ASS Sample description: > If possible, show an excerpt of the ASS script that looks wrong. Include the relevant Dialogue and Style lines. The excerpt should basically be a fully functional ASS file in itself. If you can’t make an excerpt, we can work with a full ASS file if you tell us the time at which the problem occurs. If you see the problem only with a particular video file that contains subtitles, try to upload a short cut from the video file that we can play to see the problem. You can use tools such as MKVToolNix to make a smaller cut from a large file. placeholder: | If it isn't too long paste the ASS excerpt enclosed in triple backticks as below, or upload a sample file ``` [Script Info] ``` - type: dropdown id: issue-sample-font validations: required: true attributes: label: Special Fonts description: > Many issues only manifest with specific fonts. If a particular font is needed to see the wrong rendering, upload it as a zipped file inside the previous textarea if you have permission to do so. If it is a font freely available on the Web, you can instead give a link to it. options: - I uploaded or linked to the required font - The issue doesn't depend on a specific font - type: textarea id: system attributes: label: System Information description: > Tell us what system you're seeing the issue on (including the OS update level if applicable). If VSFilter and libass screenshots were taken on different systems, give the info for both. placeholder: | OS: *(\*Linux, MacOS, Windows, …)* CPU: *(32 or 64Bit AMD/Intel x86, ARM, POWER, …)* e.g. MacOS 10.5 with a 64bit x86 (Intel) CPU - type: textarea id: log attributes: label: Log description: > A complete log is very helpful to find out what's going wrong. If you have logs regarding the issue please include them. Eg for [mpv](https://github.com/mpv-player/mpv), you can obtain a log by adding `--log-file=output.txt` when playing the affected file. - type: textarea id: additional-info attributes: label: Additional info description: > Feel free to add anything else that may be useful. libass-libass-64ebcac/.github/workflows/000077500000000000000000000000001521661700000204065ustar00rootroot00000000000000libass-libass-64ebcac/.github/workflows/ghci.yml000066400000000000000000000313701521661700000220470ustar00rootroot00000000000000name: GitHub CI on: push: branches: [master, ci, coverity_scan] pull_request: jobs: build: runs-on: ${{ matrix.os }} name: build(${{ matrix.msystem || matrix.docker_image || matrix.os }}, ${{ matrix.cc }}${{ matrix.jobname_suffix && ', ' }}${{ matrix.jobname_suffix }}) strategy: fail-fast: false matrix: include: # Enable distcheck for one build - os: ubuntu-latest cc: gcc do_distc: yes # Run Coverity on a clang build; Coverity's gcc causes issues - os: ubuntu-latest cc: clang do_coverity: yes # Add a tcc build - os: ubuntu-latest cc: tcc ld: tcc # Add docker-build on Alpine - os: ubuntu-latest cc: gcc docker_image: alpine:latest shell: '/tmp/docker_shell {0}' art_reg_skip: 'font_nonunicode' # ARM linux builds - os: ubuntu-24.04-arm cc: gcc - os: ubuntu-24.04-arm cc: clang # Add docker-build with minimum version of dependencies - os: ubuntu-latest cc: gcc docker_image: oldlibs docker_pullprefix: 'ghcr.io/theoneric/libass-containers/' shell: '/tmp/docker_shell {0}' # Crash Tests detect (false?) leaks in Fontconfig, and # various regression test fail, assumed due to older deps skip_tests: yes # MacOS Intel - os: macos-15-intel cc: clang # MacOS arm64 - os: macos-14 cc: clang omit_asan: no - os: macos-latest cc: clang omit_asan: yes art_binwrap: 'leaks --atExit --' jobname_suffix: leaks # Add a Windows build (MinGW-gcc via MSYS2) with no extras - os: windows-latest msystem: MINGW32 cc: gcc shell: 'msys2 {0}' - os: windows-latest msystem: UCRT64 cc: gcc shell: 'msys2 {0}' defaults: run: shell: ${{ matrix.shell || 'bash' }} env: ART_SAMPLES: ext_art-samples ART_BINWRAP: ${{ matrix.art_binwrap }} steps: # Available core count changes on runner type and over time, but GHA # doesn’t easily expose this, so we’ll have to query this ourselves. Based on: # https://github.com/orgs/community/discussions/25057#discussioncomment-5957241 - name: determine logical cpu core count id: cpus shell: python run: | import os import multiprocessing try: num_cpus = len(os.sched_getaffinity(0)) except AttributeError: num_cpus = multiprocessing.cpu_count() print(f"num_cpus={num_cpus}") output_file = os.environ["GITHUB_OUTPUT"] with open(output_file, "a", encoding="utf-8") as output_stream: output_stream.write(f"count={num_cpus}\n") - name: checkout code uses: actions/checkout@v6 - name: download test samples uses: actions/checkout@v6 with: repository: libass/libass-tests path: ${{ env.ART_SAMPLES }} - name: Start Docker if: matrix.docker_image shell: bash run: | # Note: Many containers default to the root user docker pull "${{ matrix.docker_pullprefix }}${{ matrix.docker_image }}" docker create --name dockerciimage \ -v "/home/runner/work:/home/runner/work" --workdir "$PWD" \ --entrypoint "tail" \ "${{ matrix.docker_pullprefix }}${{ matrix.docker_image }}" \ "-f" "/dev/null" docker start dockerciimage # Create a proxy-shell for Docker containers # Scripts for each step and the output file are inside the mounted # directories, but some environment variable must be forwarded. echo '#!/bin/sh set -eu if [ "$#" -ne 1 ] ; then echo "Usage: $0