The branch, release/8.0 has been updated
via dc8af5879d98f922281ced1a7067caa35267e8f5 (commit)
via 2b061b58f9e53e5070411a0c47c74fa78bfe995e (commit)
via 0fc28b271c81a39e7efb3256f78d7c6adc99869a (commit)
via bd4660ed92b2ce245f36ac264c1c052077550930 (commit)
via 92c8e0c201b06ef17ca19b08e2383514577f4d1a (commit)
from 27a297f1866d13c51a18648469f347177124d3ac (commit)
- Log -----------------------------------------------------------------
commit dc8af5879d98f922281ced1a7067caa35267e8f5
Author: Kacper MichajÅow <[email protected]>
AuthorDate: Sat Aug 9 02:48:35 2025 +0200
Commit: Timo Rothenpieler <[email protected]>
CommitDate: Sun Nov 30 17:39:10 2025 +0100
avcodec/prores_raw: add missing includes
Signed-off-by: Kacper MichajÅow <[email protected]>
(cherry picked from commit eec391993e447aaa9b8da38c5daaa4c31849d10f)
diff --git a/libavcodec/prores_raw.h b/libavcodec/prores_raw.h
index 9f370303d4..3ac8068dd5 100644
--- a/libavcodec/prores_raw.h
+++ b/libavcodec/prores_raw.h
@@ -22,7 +22,9 @@
#ifndef AVCODEC_PRORES_RAW_H
#define AVCODEC_PRORES_RAW_H
+#include "libavutil/frame.h"
#include "libavutil/mem_internal.h"
+#include "libavutil/pixfmt.h"
#include "bytestream.h"
#include "blockdsp.h"
commit 2b061b58f9e53e5070411a0c47c74fa78bfe995e
Author: Kacper MichajÅow <[email protected]>
AuthorDate: Sat Aug 9 05:38:20 2025 +0200
Commit: Timo Rothenpieler <[email protected]>
CommitDate: Sun Nov 30 17:37:28 2025 +0100
avfilter/stack_internal: fix checkheaders test
Signed-off-by: Kacper MichajÅow <[email protected]>
(cherry picked from commit 1a1377c53decf1264ca255910124caae82fd63a0)
diff --git a/libavfilter/stack_internal.h b/libavfilter/stack_internal.h
index ace8886152..b4f9b92223 100644
--- a/libavfilter/stack_internal.h
+++ b/libavfilter/stack_internal.h
@@ -19,6 +19,10 @@
#ifndef AVFILTER_STACK_INTERNAL_H
#define AVFILTER_STACK_INTERNAL_H
+#ifdef HWContext
+
+#include "libavfilter/framesync.h"
+
enum {
STACK_H = 0,
STACK_V = 1,
@@ -57,4 +61,6 @@ static int stack_init(AVFilterContext *avctx);
static av_cold void stack_uninit(AVFilterContext *avctx);
static int stack_activate(AVFilterContext *avctx);
+#endif
+
#endif /* AVFILTER_STACK_INTERNAL_H */
commit 0fc28b271c81a39e7efb3256f78d7c6adc99869a
Author: Timo Rothenpieler <[email protected]>
AuthorDate: Sun Nov 30 16:59:37 2025 +0100
Commit: Timo Rothenpieler <[email protected]>
CommitDate: Sun Nov 30 16:59:37 2025 +0100
forgejo: apply needed CI changes for 8.0
diff --git a/.forgejo/workflows/test.yml b/.forgejo/workflows/test.yml
index f203b17a56..e3876dc899 100644
--- a/.forgejo/workflows/test.yml
+++ b/.forgejo/workflows/test.yml
@@ -58,7 +58,7 @@ jobs:
strategy:
fail-fast: false
matrix:
- image: ["ghcr.io/btbn/ffmpeg-builds/win64-gpl:latest"]
+ image: ["ghcr.io/btbn/ffmpeg-builds/win64-gpl-8.0:latest"]
runs-on: linux-amd64
container: ${{ matrix.image }}
steps:
commit bd4660ed92b2ce245f36ac264c1c052077550930
Author: Timo Rothenpieler <[email protected]>
AuthorDate: Sun Nov 30 16:44:36 2025 +0100
Commit: Timo Rothenpieler <[email protected]>
CommitDate: Sun Nov 30 16:44:36 2025 +0100
forgejo/workflows: run tests on correct release branch
diff --git a/.forgejo/workflows/lint.yml b/.forgejo/workflows/lint.yml
index 42e925ad8b..c2ea5050f1 100644
--- a/.forgejo/workflows/lint.yml
+++ b/.forgejo/workflows/lint.yml
@@ -1,7 +1,7 @@
on:
push:
branches:
- - master
+ - release/8.0
pull_request:
jobs:
diff --git a/.forgejo/workflows/test.yml b/.forgejo/workflows/test.yml
index 799d2c356a..f203b17a56 100644
--- a/.forgejo/workflows/test.yml
+++ b/.forgejo/workflows/test.yml
@@ -1,7 +1,7 @@
on:
push:
branches:
- - master
+ - release/8.0
pull_request:
jobs:
commit 92c8e0c201b06ef17ca19b08e2383514577f4d1a
Author: Timo Rothenpieler <[email protected]>
AuthorDate: Sun Nov 30 16:42:51 2025 +0100
Commit: Timo Rothenpieler <[email protected]>
CommitDate: Sun Nov 30 16:42:51 2025 +0100
forgejo: backport CI changes to release/8.0
diff --git a/.forgejo/pre-commit/config.yaml b/.forgejo/pre-commit/config.yaml
index 9a7041543f..f1ab7765ef 100644
--- a/.forgejo/pre-commit/config.yaml
+++ b/.forgejo/pre-commit/config.yaml
@@ -18,6 +18,14 @@ repos:
- id: fix-byte-order-marker
- id: mixed-line-ending
- id: trailing-whitespace
+- repo: local
+ hooks:
+ - id: aarch64-asm-indent
+ name: fix aarch64 assembly indentation
+ files: ^.*/aarch64/.*\.S$
+ language: script
+ entry: ./tools/check_arm_indent.sh --apply
+ pass_filenames: false
- repo: https://github.com/codespell-project/codespell
rev: v2.4.1
hooks:
diff --git a/.forgejo/workflows/test.yml b/.forgejo/workflows/test.yml
index 56e844ff4b..799d2c356a 100644
--- a/.forgejo/workflows/test.yml
+++ b/.forgejo/workflows/test.yml
@@ -9,13 +9,28 @@ jobs:
strategy:
fail-fast: false
matrix:
- runner: [linux-amd64,linux-aarch64]
+ runner: [linux-aarch64]
+ shared: ['static']
+ bits: ['64']
+ include:
+ - runner: linux-amd64
+ shared: 'static'
+ bits: '32'
+ - runner: linux-amd64
+ shared: 'shared'
+ bits: '64'
runs-on: ${{ matrix.runner }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Configure
- run: ./configure --enable-gpl --enable-nonfree
--enable-memory-poisoning --assert-level=2
+ run: |
+ ./configure --enable-gpl --enable-nonfree --enable-memory-poisoning
--assert-level=2 \
+ $([ "${{ matrix.bits }}" != "32" ] || echo --arch=x86_32
--extra-cflags=-m32 --extra-cxxflags=-m32 --extra-ldflags=-m32) \
+ $([ "${{ matrix.shared }}" != "shared" ] || echo --enable-shared
--disable-static) \
+ || CFGRES=$? && CFGRES=$?
+ cat ffbuild/config.log
+ exit $CFGRES
- name: Build
run: make -j$(nproc)
- name: Restore Cached Fate-Suite
@@ -30,7 +45,7 @@ jobs:
id: fate
run: |
make fate-rsync SAMPLES=$PWD/fate-suite
- echo "hash=$(find fate-suite -type f | sort | sha256sum | cut -d' '
-f1)" >> $FORGEJO_OUTPUT
+ echo "hash=$(find fate-suite -type f -printf "%P %s %T@\n" | sort |
sha256sum | cut -d' ' -f1)" >> $FORGEJO_OUTPUT
- name: Cache Fate-Suite
uses: actions/cache/save@v4
if: ${{ format('fate-suite-{0}', steps.fate.outputs.hash) !=
steps.cache.outputs.cache-matched-key }}
@@ -38,7 +53,7 @@ jobs:
path: fate-suite
key: fate-suite-${{ steps.fate.outputs.hash }}
- name: Run Fate
- run: make fate SAMPLES=$PWD/fate-suite -j$(nproc)
+ run: LD_LIBRARY_PATH="$(printf "%s:" "$PWD"/lib*)$PWD" make fate
fate-build SAMPLES=$PWD/fate-suite -j$(nproc)
compile_only:
strategy:
fail-fast: false
@@ -57,3 +72,5 @@ jobs:
--extra-libs="$FF_LIBS" --extra-ldflags="$FF_LDFLAGS"
--extra-ldexeflags="$FF_LDEXEFLAGS"
- name: Build
run: make -j$(nproc)
+ - name: Run Fate
+ run: make -j$(nproc) fate-build
diff --git a/tools/check_arm_indent.sh b/tools/check_arm_indent.sh
new file mode 100755
index 0000000000..5becfe0aec
--- /dev/null
+++ b/tools/check_arm_indent.sh
@@ -0,0 +1,55 @@
+#!/bin/sh
+#
+# Copyright (c) 2025 Martin Storsjo
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
this
+# list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+cd $(dirname $0)/..
+
+if [ "$1" = "--apply" ]; then
+ apply=1
+fi
+
+ret=0
+
+for i in */aarch64/*.S */aarch64/*/*.S; do
+ case $i in
+
libavcodec/aarch64/h264idct_neon.S|libavcodec/aarch64/h26x/epel_neon.S|libavcodec/aarch64/h26x/qpel_neon.S|libavcodec/aarch64/vc1dsp_neon.S)
+ # Skip files with known (and tolerated) deviations from the tool.
+ continue
+ esac
+ ./tools/indent_arm_assembly.pl < "$i" > tmp.S || ret=$?
+ if ! git diff --quiet --no-index "$i" tmp.S; then
+ if [ -n "$apply" ]; then
+ mv tmp.S "$i"
+ else
+ git --no-pager diff --no-index "$i" tmp.S
+ fi
+ ret=1
+ fi
+done
+
+rm -f tmp.S
+
+exit $ret
diff --git a/tools/indent_arm_assembly.pl b/tools/indent_arm_assembly.pl
new file mode 100755
index 0000000000..359c2bcf4f
--- /dev/null
+++ b/tools/indent_arm_assembly.pl
@@ -0,0 +1,243 @@
+#!/usr/bin/env perl
+#
+# Copyright (c) 2025 Martin Storsjo
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#
+# 1. Redistributions of source code must retain the above copyright notice,
this
+# list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
+# and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
FOR
+# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+# A script for reformatting ARM/AArch64 assembly according to the following
+# style:
+# - Instructions start after 8 columns, operands start after 24 columns
+# - Vector register layouts and modifiers like "uxtw" are written in lowercase
+# - Optionally align operand columns vertically according to their
+# maximum width (accommodating for e.g. x0 vs x10, or v0.8b vs v16.16b).
+#
+# The script can be executed as "indent_arm_assembly.pl file [outfile]".
+# If no outfile is specified, the given file is overwritten in place.
+#
+# Alternatively, the if no file parameters are given, the script reads input
+# code on stdin, and outputs the reformatted code on stdout.
+
+use strict;
+
+my $indent_operands = 0;
+my $instr_indent = 8;
+my $operand_indent = 24;
+my $match_indent = 0;
+my $file;
+my $outfile;
+
+while (@ARGV) {
+ my $opt = shift;
+
+ if ($opt eq "-operands") {
+ $indent_operands = 1;
+ } elsif ($opt eq "-indent") {
+ $instr_indent = shift;
+ } elsif ($opt eq "-operand-indent") {
+ $operand_indent = shift;
+ } elsif ($opt eq "-match-indent") {
+ $match_indent = 1;
+ } else {
+ if (!$file) {
+ $file = $opt;
+ } elsif (!$outfile) {
+ $outfile = $opt;
+ } else {
+ die "Unrecognized parameter $opt\n";
+ }
+ }
+}
+
+if ($operand_indent < $instr_indent) {
+ die "Can't indent operands to $operand_indent while indenting " .
+ "instructions to $instr_indent\n";
+}
+
+# Return a string consisting of n spaces
+sub spaces {
+ my $n = $_[0];
+ return " " x $n;
+}
+
+sub indentcolumns {
+ my $input = $_[0];
+ my $chars = $_[1];
+ my @operands = split(/,/, $input);
+ my $num = @operands;
+ my $ret = "";
+ for (my $i = 0; $i < $num; $i++) {
+ my $cur = $operands[$i];
+ # Trim out leading/trailing whitespace
+ $cur =~ s/^\s+|\s+$//g;
+ $ret .= $cur;
+ if ($i + 1 < $num) {
+ # If we have a following operand, add a comma and whitespace to
+ # align the next operand.
+ my $next = $operands[$i+1];
+ my $len = length($cur);
+ if ($len > $chars) {
+ # If this operand was too wide for the intended column width,
+ # don't try to realign the line at all, just return the input
+ # untouched.
+ return $input;
+ }
+ my $pad = $chars - $len;
+ if ($next =~ /[su]xt[bhw]|[la]s[lr]/) {
+ # If the next item isn't a regular operand, but a modifier,
+ # don't try to align that. E.g. "add x0, x0, w1, uxtw #1".
+ $pad = 0;
+ }
+ $ret .= "," . spaces(1 + $pad);
+ }
+ }
+ return $ret;
+}
+
+# Realign the operands part of an instruction line, making each operand
+# take up the maximum width for that kind of operand.
+sub columns {
+ my $rest = $_[0];
+ if ($rest !~ /,/) {
+ # No commas, no operands to split and align
+ return $rest;
+ }
+ if ($rest =~ /{|[^\w]\[/) {
+ # Check for instructions that use register ranges, like {v0.8b,v1.8b}
+ # or mem address operands, like "ldr x0, [sp]" - we skip trying to
+ # realign these.
+ return $rest;
+ }
+ if ($rest =~ /v[0-9]+\.[0-9]+[bhsd]/) {
+ # If we have references to aarch64 style vector registers, like
+ # v0.8b, then align all operands to the maximum width of such
+ # operands - v16.16b.
+ #
+ # TODO: Ideally, we'd handle mixed operand types individually.
+ return indentcolumns($rest, 7);
+ }
+ # Indent operands according to the maximum width of regular registers,
+ # like x10.
+ return indentcolumns($rest, 3);
+}
+
+my $in;
+my $out;
+my $tempfile;
+
+if ($file) {
+ open(INPUT, "$file") or die "Unable to open $file: $!";
+ $in = *INPUT;
+ if ($outfile) {
+ open(OUTPUT, ">$outfile") or die "Unable to open $outfile: $!";
+ } else {
+ $tempfile = "$file.tmp";
+ open(OUTPUT, ">$tempfile") or die "Unable to open $tempfile: $!";
+ }
+ $out = *OUTPUT;
+} else {
+ $in = *STDIN;
+ $out = *STDOUT;
+}
+
+while (<$in>) {
+ # Trim off trailing whitespace.
+ chomp;
+ if (/^([\.\w\d]+:)?(\s+)([\w\\][\w\\\.]*)(?:(\s+)(.*)|$)/) {
+ my $label = $1;
+ my $indent = $2;
+ my $instr = $3;
+ my $origspace = $4;
+ my $rest = $5;
+
+ my $orig_operand_indent = length($label) + length($indent) +
+ length($instr) + length($origspace);
+
+ if ($indent_operands) {
+ $rest = columns($rest);
+ }
+
+ my $size = $instr_indent;
+ if ($match_indent) {
+ # Try to check the current attempted indent size and normalize
+ # to it; match existing ident sizes of 4, 8, 10 and 12 columns.
+ my $cur_indent = length($label) + length($indent);
+ if ($cur_indent >= 3 && $cur_indent <= 5) {
+ $size = 4;
+ } elsif ($cur_indent >= 7 && $cur_indent <= 9) {
+ $size = 8;
+ } elsif ($cur_indent == 10 || $cur_indent == 12) {
+ $size = $cur_indent;
+ }
+ }
+ if (length($label) >= $size) {
+ # Not enough space for the label; just add a space between the
label
+ # and the instruction.
+ $indent = " ";
+ } else {
+ $indent = spaces($size - length($label));
+ }
+
+ my $instr_end = length($label) + length($indent) + length($instr);
+ $size = $operand_indent - $instr_end;
+ if ($match_indent) {
+ # Check how the operands currently seem to be indented.
+ my $cur_indent = $orig_operand_indent;
+ if ($cur_indent >= 11 && $cur_indent <= 13) {
+ $size = 12;
+ } elsif ($cur_indent >= 14 && $cur_indent <= 17) {
+ $size = 16;
+ } elsif ($cur_indent >= 18 && $cur_indent <= 22) {
+ $size = 20;
+ } elsif ($cur_indent >= 23 && $cur_indent <= 27) {
+ $size = 24;
+ }
+ $size -= $instr_end;
+ }
+ my $operand_space = " ";
+ if ($size > 0) {
+ $operand_space = spaces($size);
+ }
+
+ # Lowercase the aarch64 vector layout description, .8B -> .8b
+ $rest =~ s/(\.[84216]*[BHSD])/lc($1)/ge;
+ # Lowercase modifiers like "uxtw" or "lsl"
+ $rest =~ s/([SU]XT[BWH]|[LA]S[LR])/lc($1)/ge;
+
+ # Reassemble the line
+ if ($rest eq "") {
+ $_ = $label . $indent . $instr;
+ } else {
+ $_ = $label . $indent . $instr . $operand_space . $rest;
+ }
+ }
+ print $out $_ . "\n";
+}
+
+if ($file) {
+ close(INPUT);
+ close(OUTPUT);
+}
+if ($tempfile) {
+ rename($tempfile, $file);
+}
-----------------------------------------------------------------------
Summary of changes:
.forgejo/pre-commit/config.yaml | 8 ++
.forgejo/workflows/lint.yml | 2 +-
.forgejo/workflows/test.yml | 29 ++++-
libavcodec/prores_raw.h | 2 +
libavfilter/stack_internal.h | 6 +
tools/check_arm_indent.sh | 55 +++++++++
tools/indent_arm_assembly.pl | 243 ++++++++++++++++++++++++++++++++++++++++
7 files changed, 338 insertions(+), 7 deletions(-)
create mode 100755 tools/check_arm_indent.sh
create mode 100755 tools/indent_arm_assembly.pl
hooks/post-receive
--
_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]