Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
efeddd1
forgejo/workflows: sort file list for cache hash
kasper93 Aug 4, 2025
96ab006
avformat/ffmetadec: don't compare undefined string
kasper93 Jul 26, 2025
4718974
avcodec/dsicinaudio: set missing sample rate
kasper93 Jul 26, 2025
8f0c146
avcodec/evrcdec: set missing sample rate
kasper93 Jul 26, 2025
7f5db34
avcodec/qcelpdec: set missing sample rate
kasper93 Jul 26, 2025
8b5db38
avcodec/qcelpdec: set missing sample rate
kasper93 Jul 26, 2025
c24b9b4
tools/target_fuzzer: don't spam stderr
kasper93 Jul 26, 2025
8be539b
avformat/iff: fix EOF check
jamrial Aug 4, 2025
7838648
tests/fate/hlsenc: add testcase of hls fragment mp4 named cmfa
T-bagwell Aug 5, 2025
d328801
vf_libplacebo: add support for specifying a LUT for the input
cyanreg Jul 10, 2025
53826f1
hwcontext_vulkan: temporarily disable host_image_copy
cyanreg Jul 10, 2025
50756b8
hwcontext_vulkan: enable uniformBufferStandardLayout
cyanreg Jul 11, 2025
2c3315b
lavc/vulkan/common: sign-ify lengths
cyanreg Jul 9, 2025
cc126af
vulkan_encode_h264/5: Fix uninitialized return value in write_extra_h…
nowrep Nov 14, 2024
e0440eb
hwcontext_vulkan: fix exporting multi-plane DRM modifiers
russelltg Jun 19, 2025
5b3d6c0
configure: don't use dangling temp file state
kasper93 Jul 21, 2025
50408c5
configure: filter link flags separately for MSVC
kasper93 Jul 20, 2025
bc012ac
configure: treat unrecognized flags as errors on MSVC
kasper93 Jul 20, 2025
3b0ab68
avcodec/motion_est: Remove double protection from init_ref()
michaelni Aug 4, 2025
1464930
configure: don't disable '-ftree-vectorize' on GCC >= 13 on major arc…
pz9115 Jul 14, 2025
31bad42
.forgejo/CODEOWNERS: add myself to a few things
michaelni Aug 5, 2025
399c766
forgejo/CODEOWNERS: add myself to docs
GyanD Aug 6, 2025
2681eed
avformat/mov: set primary extradata based on the first Sample only if…
jamrial Aug 3, 2025
df5199c
avformat/Makefile: fix error unresolved external symbol ff_dtls_protocol
QSXW Aug 5, 2025
ecd1e39
avcodec/vvc/ctu: should use the width and height of the start component
QSXW Jun 3, 2025
81c139d
avcodec/h274: fix hash verification on BE
QSXW Jun 3, 2025
c3680ee
avcodec/vvc/dec: fix typo and also output log when the checksum is co…
QSXW Jun 8, 2025
49a60c3
fate/vvc: add vvc-conformance-10b422_L_5
QSXW Jun 3, 2025
5f49b88
fate/vvc: add vvc-conformance-ACT_A_3
QSXW Jun 3, 2025
8517e9e
fate/vvc: add vvc-conformance-FIELD_A_4
QSXW Jun 3, 2025
ed06eda
add github workflow
nuomi2021 Feb 7, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 16 additions & 2 deletions .forgejo/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,14 @@ libavcodec/*ac3* @lynne
libavcodec/*atrac9* @lynne
libavcodec/*bitpacked* @lynne
libavcodec/*dirac* @lynne
libavcodec/*ffv1* @lynne
libavcodec/*ffv1* @lynne @michaelni
libavcodec/golomb* @michaelni
libavcodec/*jpegxl* @lynne
libavcodec/*jxl* @lynne
libavcodec/*opus* @lynne
libavcodec/*prores* @lynne
libavcodec/rangecoder* @michaelni
libavcodec/ratecontrol* @michaelni
libavcodec/*siren* @lynne
libavcodec/*vc2* @lynne

Expand All @@ -27,15 +30,21 @@ libavcodec/x86/* @lynne
# avfilter
# =======
libavfilter/aarch64/* @mstorsjo
libavfilter/vf_yadif* @michaelni
libavfilter/vsrc_mandelbrot* @michaelni

# avformat
# =======
libavformat/iamf* @jamrial

# avutil
# ======
libavutil/*crc* @lynne
libavutil/*crc* @lynne @michaelni
libavutil/eval* @michaelni
libavutil/iamf* @jamrial
libavutil/mathematics* @michaelni
libavutil/mem* @michaelni
libavutil/rational* @michaelni
libavutil/tx* @lynne

libavutil/aarch64/* @lynne @mstorsjo
Expand All @@ -46,12 +55,17 @@ libavutil/x86/* @lynne
# =======
libswresample/aarch64/* @mstorsjo
libswresample/arm/* @mstorsjo
libswresample/* @michaelni

# swscale
# =======
libswscale/aarch64/* @mstorsjo
libswscale/arm/* @mstorsjo

# doc
# ===
doc/* @GyanD

# Frameworks
# ==========
*vulkan* @lynne
2 changes: 1 addition & 1 deletion .forgejo/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
id: fate
run: |
make fate-rsync SAMPLES=$PWD/fate-suite
echo "hash=$(find fate-suite -type f | sha256sum | cut -d' ' -f1)" >> $FORGEJO_OUTPUT
echo "hash=$(find fate-suite -type f | 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 }}
Expand Down
111 changes: 111 additions & 0 deletions .github/workflows/makefile.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
name: test
run-name: ${{ github.workflow }} - ${{ github.sha }}
on:
push:
branches: [ main, up ]
pull_request:
branches: [ main, up ]
workflow_dispatch:


jobs:
ffvvc-test:
name: ffvvc-test / ${{ matrix.os.name }}/${{ matrix.compiler.name }}/${{ matrix.assembler.name }}
env:
configure_flags: --enable-ffmpeg --disable-everything --enable-decoder=vvc --enable-parser=vvc --enable-demuxer=vvc,mpegts --enable-protocol=file,pipe --enable-encoder=rawvideo,wrapped_avframe --enable-muxer=rawvideo,md5,null
strategy:
fail-fast: false
matrix:
os:
- { name: linux, runner: ubuntu-latest, shell: bash, runner_threads: 4 }
- { name: windows, runner: windows-latest, shell: 'msys2 {0}', runner_threads: 1 }
compiler:
- { name: gcc, flags: --cc=gcc }
- { name: clang, flags: --cc=clang }
- { name: msvc, flags: --toolchain=msvc }
- { name: clang-usan, flags: '--toolchain=clang-usan' }
- { name: clang-asan, flags: '--toolchain=clang-asan' }
assembler:
- { name: no asm, flags: --disable-asm }
- { name: nasm, flags: --as=nasm }
exclude:
# GitHub's Actions runners do not support AVX2.
- os: { name: linux, runner: ubuntu-latest, shell: bash, runner_threads: 4}
compiler: { name: msvc, flags: --toolchain=msvc }
- os: { name: linux, runner: ubuntu-latest, shell: bash, runner_threads: 4 }
assembler: { name: nasm, flags: --as=nasm }
# Address sanitizer cannot be run with handwritten assembly.
- compiler: { name: clang-asan, flags: '--toolchain=clang-asan' }
assembler: { name: nasm, flags: --as=nasm }
# Windows only supports MSVC.
- os: { name: windows, runner: windows-latest, shell: 'msys2 {0}', runner_threads: 1 }
compiler: { name: gcc, flags: --cc=gcc }
- os: { name: windows, runner: windows-latest, shell: 'msys2 {0}', runner_threads: 1 }
compiler: { name: clang, flags: --cc=clang }
- os: { name: windows, runner: windows-latest, shell: 'msys2 {0}', runner_threads: 1 }
compiler: { name: clang-usan, flags: '--toolchain=clang-usan' }
- os: { name: windows, runner: windows-latest, shell: 'msys2 {0}', runner_threads: 1 }
compiler: { name: clang-asan, flags: '--toolchain=clang-asan' }

runs-on: ${{ matrix.os.runner }}
defaults:
run:
shell: ${{ matrix.os.shell }}

steps:
- name: Get MSVC
if: ${{ matrix.compiler.name == 'msvc' && matrix.os.name == 'windows' }}
uses: ilammy/msvc-dev-cmd@v1

- name: Set up MSYS2
if: ${{ matrix.os.shell == 'msys2 {0}' }}
uses: msys2/setup-msys2@v2
with:
release: false
msystem: UCRT64
path-type: inherit
install: >-
make
diffutils

- name: Setup python package
run: python3 -m pip install tqdm pyyaml

- name: Get assembler
if: ${{ matrix.os.shell == 'msys2 {0}' && matrix.assembler.name != 'no asm' }}
run: pacman --noconfirm -S ${{ matrix.assembler.name }}

- name: Get source
uses: actions/checkout@v3
with:
path: FFmpeg

- name: Configure
run: cd FFmpeg && ./configure ${{ matrix.compiler.flags }} ${{ matrix.assembler.flags }} ${{ env.configure_flags }} || (tail ffbuild/config.log; false)

- name: Build
run: cd FFmpeg && make -j8

- name: Get tests
uses: actions/checkout@v3
with:
repository: ffvvc/tests
path: tests

- name: Unit test
run: python3 tests/tools/ffmpeg.py --threads ${{ matrix.os.runner_threads }} --ffmpeg-path=./FFmpeg/ffmpeg tests/conformance/passed

- name: DVB 40 frames test
run: python3 tests/tools/ffmpeg.py --threads 1 --ffmpeg-path=./FFmpeg/ffmpeg tests/conformance/dvb/40frames

- name: Check ASM
run: cd FFmpeg && make checkasm -j && ./tests/checkasm/checkasm

- name: Negative test
run: python3 tests/tools/ffmpeg.py --threads ${{ matrix.os.runner_threads }} --ffmpeg-path=./FFmpeg/ffmpeg tests/conformance/failed || true

- name: Check for fuzz regressions
run: python3 tests/tools/ffmpeg.py --threads ${{ matrix.os.runner_threads }} --ffmpeg-path=./FFmpeg/ffmpeg --fuzz tests/fuzz/passed

- name: Fuzz negative test
run: python3 tests/tools/ffmpeg.py --threads ${{ matrix.os.runner_threads }} --ffmpeg-path=./FFmpeg/ffmpeg --fuzz tests/fuzz/failed || tree
1 change: 1 addition & 0 deletions Changelog
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ version <next>:
- OpenHarmony hardware decoder/encoder
- Colordetect filter
- Add vf_scale_d3d11 filter
- No longer disabling GCC autovectorization, on X86, ARM and AArch64


version 7.1:
Expand Down
39 changes: 36 additions & 3 deletions configure
Original file line number Diff line number Diff line change
Expand Up @@ -4925,7 +4925,7 @@ msvc_common_flags(){
-lstdc++) ;;
-l*) echo ${flag#-l}.lib ;;
-LARGEADDRESSAWARE) echo $flag ;;
-L*) echo -libpath:${flag#-L} ;;
-L*) [ "$_flags_type" = "link" ] && echo -libpath:${flag#-L} ;;
-Wl,*) ;;
*) echo $flag ;;
esac
Expand All @@ -4947,6 +4947,12 @@ msvc_flags(){
done
}

msvc_flags_link(){
_flags_type=link
msvc_flags "$@"
unset _flags_type
}

icl_flags(){
msvc_common_flags "$@"
for flag; do
Expand Down Expand Up @@ -5173,12 +5179,13 @@ probe_cc(){
_cflags_noopt="-O1"
if $_cc -nologo- 2>&1 | grep -q Linker; then
_ld_o='-out:$@'
_flags_filter=msvc_flags_link
else
_ld_o='-Fe$@'
_flags_filter=msvc_flags
fi
_cc_o='-Fo$@'
_cc_e='-P -Fi$@'
_flags_filter=msvc_flags
_ld_lib='lib%.a'
_ld_path='-libpath:'
_flags='-nologo'
Expand Down Expand Up @@ -5277,6 +5284,12 @@ else
ar_o='$@'
fi

# Treat unrecognized flags as errors on MSVC
test_cpp_condition windows.h "_MSC_FULL_VER >= 193030705" &&
check_cflags -options:strict
test_host_cpp_condition windows.h "_MSC_FULL_VER >= 193030705" &&
check_host_cflags -options:strict

add_cflags $extra_cflags
add_cxxflags $extra_cxxflags
add_objcflags $extra_objcflags
Expand All @@ -5298,6 +5311,7 @@ if test "$cpu" = host; then
case "$cc_type" in
gcc|llvm_gcc)
check_native(){
: > $TMPC
$cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
sed -n "/cc1.*$1=/{
s/.*$1=\\([^ ]*\\).*/\\1/
Expand All @@ -5309,6 +5323,7 @@ if test "$cpu" = host; then
;;
clang)
check_native(){
: > $TMPC
$cc $1=native -v -c -o $TMPO $TMPC >$TMPE 2>&1 || return
sed -n "/cc1.*-target-cpu /{
s/.*-target-cpu \\([^ ]*\\).*/\\1/
Expand Down Expand Up @@ -7714,7 +7729,25 @@ if enabled icc; then
disable aligned_stack
fi
elif enabled gcc; then
check_optflags -fno-tree-vectorize
gcc_version=$($cc -dumpversion)
major_version=${gcc_version%%.*}
if [ $major_version -lt 13 ]; then
# Disable tree-vectorize for GCC <13 - it has historically been buggy.
check_optflags -fno-tree-vectorize
else
case $arch in
x86|arm|aarch64)
# Allow the default of having tree-vectorize enabled on well tested
# architectures.
;;
*)
# Disable tree-vectorize on potentially less tested
# architectures. Known issues:
# - https://gcc.gnu.org/PR121064 on Loongarch
check_optflags -fno-tree-vectorize
;;
esac
fi
check_cflags -Werror=format-security
check_cflags -Werror=implicit-function-declaration
check_cflags -Werror=missing-prototypes
Expand Down
30 changes: 30 additions & 0 deletions doc/filters.texi
Original file line number Diff line number Diff line change
Expand Up @@ -16348,6 +16348,36 @@ Render frames with rounded corners. The value, given as a float ranging from
square to fully circular. In other words, it gives the radius divided by half
the smaller side length. Defaults to @code{0.0}.

@item lut
Specifies a custom LUT (in Adobe .cube format) to apply to the colors
as part of color conversion. The exact interpretation depends on the value
of @option{lut_type}.

@item lut_type
Controls the interpretation of color values fed to and from the LUT
specified as @option{lut}. Valid values are:

@table @samp
@item auto
Chooses the interpretation of the LUT automatically from tagged
metadata, and otherwise falls back to @samp{native}. (Default)

@item native
Applied to raw image contents in its native RGB colorspace (non-linear
light), before conversion to the output color space.

@item normalized
Applied to the normalized RGB image contents, in linear light, before
conversion to the output color space.

@item conversion
Fully replaces the conversion from the image color space to the output
color space. If such a LUT is present, it has the highest priority, and
overrides any ICC profiles, as well as options related to tone mapping
and output colorimetry (@option{color_primaries}, @option{color_trc}).

@end table

@item extra_opts
Pass extra libplacebo internal configuration options. These can be specified
as a list of @var{key}=@var{value} pairs separated by ':'. The following example
Expand Down
2 changes: 2 additions & 0 deletions libavcodec/dsicinaudio.c
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,8 @@ static av_cold int cinaudio_decode_init(AVCodecContext *avctx)
cin->initial_decode_frame = 1;
cin->delta = 0;
avctx->sample_fmt = AV_SAMPLE_FMT_S16;
if (!avctx->sample_rate)
avctx->sample_rate = 8000;
av_channel_layout_uninit(&avctx->ch_layout);
avctx->ch_layout = (AVChannelLayout)AV_CHANNEL_LAYOUT_MONO;

Expand Down
2 changes: 2 additions & 0 deletions libavcodec/evrcdec.c
Original file line number Diff line number Diff line change
Expand Up @@ -239,6 +239,8 @@ static av_cold int evrc_decode_init(AVCodecContext *avctx)
av_channel_layout_uninit(&avctx->ch_layout);
avctx->ch_layout = (AVChannelLayout)AV_CHANNEL_LAYOUT_MONO;
avctx->sample_fmt = AV_SAMPLE_FMT_FLT;
if (!avctx->sample_rate)
avctx->sample_rate = 8000;

for (i = 0; i < FILTER_ORDER; i++) {
e->prev_lspf[i] = (i + 1) * 0.048;
Expand Down
2 changes: 2 additions & 0 deletions libavcodec/g722dec.c
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,8 @@ static av_cold int g722_decode_init(AVCodecContext * avctx)
av_channel_layout_uninit(&avctx->ch_layout);
avctx->ch_layout = (AVChannelLayout)AV_CHANNEL_LAYOUT_MONO;
avctx->sample_fmt = AV_SAMPLE_FMT_S16;
if (!avctx->sample_rate)
avctx->sample_rate = 16000;

c->band[0].scale_factor = 8;
c->band[1].scale_factor = 2;
Expand Down
Loading
Loading