Anton Mitrofanov [Wed, 1 Jun 2022 22:31:50 +0000 (01:31 +0300)]
CI: Fix vlc-contrib processing on macos
Use perl for in-place editing because sed doesn't work with symlinks.
Stephen Hutchinson [Mon, 21 Feb 2022 23:22:09 +0000 (18:22 -0500)]
configure: Allow AviSynth+ on *BSD and Haiku
Anton Mitrofanov [Tue, 22 Feb 2022 17:46:39 +0000 (20:46 +0300)]
Fix build on MIPS with AviSynth+ support
Anton Mitrofanov [Sat, 19 Feb 2022 11:34:04 +0000 (14:34 +0300)]
Replace AvxSynth with AviSynth+ on POSIX systems
Anton Mitrofanov [Sat, 19 Feb 2022 12:14:22 +0000 (15:14 +0300)]
Check user-entered fps parameter range
Anton Mitrofanov [Sat, 19 Feb 2022 11:42:14 +0000 (14:42 +0300)]
Fix -Wchar-subscripts and -Wstrict-aliasing warnings
Henrik Gramner [Sun, 20 Feb 2022 13:54:25 +0000 (14:54 +0100)]
x86inc: Add REPX macro to repeat instructions/operations
When operating on large blocks of data it's common to repeatedly use
an instruction on multiple registers. Using the REPX macro makes it
easy to quickly write dense code to achieve this without having to
explicitly duplicate the same instruction over and over.
For example,
REPX {paddw x, m4}, m0, m1, m2, m3
REPX {mova [r0+16*x], m5}, 0, 1, 2, 3
will expand to
paddw m0, m4
paddw m1, m4
paddw m2, m4
paddw m3, m4
mova [r0+16*0], m5
mova [r0+16*1], m5
mova [r0+16*2], m5
mova [r0+16*3], m5
Henrik Gramner [Sun, 20 Feb 2022 13:21:34 +0000 (14:21 +0100)]
x86inc: Fix edge case in forced VEX-encoding
Correctly handle emulation of 4-operand instructions (e.g. 'shufps')
where src1 is a memory operand.
Henrik Gramner [Sat, 19 Feb 2022 21:57:49 +0000 (22:57 +0100)]
x86inc: Enable 4-operand emulation for variable blend instructions
With legacy encoding the last operand (the index) must be xmm0,
but aside from that emulating non-destructive forms works
the same as any other instruction.
Anton Mitrofanov [Sat, 5 Feb 2022 20:33:10 +0000 (20:33 +0000)]
Fix build on OpenBSD and Android
Anton Mitrofanov [Tue, 25 Jan 2022 18:18:44 +0000 (21:18 +0300)]
Fix implicit integer sign change and truncation (part 2)
Anton Mitrofanov [Tue, 25 Jan 2022 14:06:56 +0000 (17:06 +0300)]
checkasm: Print all errors to stderr
Anton Mitrofanov [Mon, 24 Jan 2022 18:28:14 +0000 (21:28 +0300)]
Fix integer overflow with special CQM and 10-bit encoding
Anton Mitrofanov [Mon, 24 Jan 2022 16:46:08 +0000 (19:46 +0300)]
Bump dates to 2022
Jessica Clarke [Sun, 19 Dec 2021 22:13:09 +0000 (22:13 +0000)]
configure: Always make shared imply PIC
Building a shared library without -fPIC does not make sense. On most
architectures, especially recent ones, doing so will give link-time
errors due to relocations in read-only sections like .text. On some
legacy architectures, including i386, it is allowed by default, but will
warn, and is highly discouraged due to the overheads it adds at library
load time. Most architectures were already listed here as having shared
imply PIC, but not all, such as i386 which ends up with unwanted text
relocations, as well as architectures not known to the build system
currently like RISC-V, which does not permit text relocations by
default. There is no good reason to want shared without PIC on any
architecture, so just remove the architecture list.
Henrik Gramner [Sun, 12 Dec 2021 22:15:51 +0000 (23:15 +0100)]
Remove thread priority tweaking
Back in 2009 when this was added it improved scheduling of lookahead
threads on prevalent operating systems at the time.
According to more recent testing by Intel however, lowering thread
priorities does not improve performance on modern operating systems.
And more importantly, doing so on systems with heterogeneous CPU
topologies may actually result in a severe performance reduction.
Removing this code altogether eliminates the issue with performance
degradation on such systems, while having no noticeable impact on
regular systems with homogeneous CPU topologies.
Claes Nästén [Fri, 19 Nov 2021 13:46:06 +0000 (14:46 +0100)]
Makefile: Do not create multiple directories in one go
/usr/ucb/bin/install on Solaris does not support creating multiple
directories in one go, issue multiple install commands instead.
Anton Mitrofanov [Tue, 7 Dec 2021 13:59:00 +0000 (16:59 +0300)]
Remove redundant dot in help
Anton Mitrofanov [Wed, 29 Sep 2021 22:55:08 +0000 (01:55 +0300)]
lavf: Remove use of deprecated av_init_packet
Anton Mitrofanov [Mon, 6 Dec 2021 19:02:31 +0000 (22:02 +0300)]
CI: Update docker images
Jean-Baptiste Kempf [Tue, 28 Sep 2021 19:47:40 +0000 (21:47 +0200)]
lookahead: Keep b_exit_thread under ifbuf.mutex
The lookahead_thread main loop checks b_exit_thread and exits if it is set.
That flag is set by x264_lookahead_delete, which uses ifbuf.mutex to guard accessing it.
However, the read in the while-loop condition of lookahead_thread is not guarded,
and so TSAN sometimes reports a data race.
Martin Storsjö [Sat, 25 Sep 2021 22:18:47 +0000 (01:18 +0300)]
checkasm: Correctly parse the seed argument as unsigned
This fixes rerunning checkasm with an earlier printed seed, when
it's outside of the signed range.
Anton Mitrofanov [Fri, 27 Aug 2021 16:18:31 +0000 (19:18 +0300)]
Fix implicit integer sign change and truncation
Anton Mitrofanov [Fri, 10 Sep 2021 12:36:19 +0000 (15:36 +0300)]
Fix integer overflow in cavlc trellis
Anton Mitrofanov [Fri, 10 Sep 2021 12:35:46 +0000 (15:35 +0300)]
Fix integer overflow in cabac psy-trellis
Vitaly Lysenkov [Tue, 10 Aug 2021 21:17:58 +0000 (21:17 +0000)]
Fix integer overflow in psy-rd
Anton Mitrofanov [Thu, 26 Aug 2021 16:03:09 +0000 (19:03 +0300)]
Fix gcc warnings
Ziemowit Zabawa [Fri, 9 Jul 2021 10:42:05 +0000 (12:42 +0200)]
Fix typos with codespell tool
This includes fixing convert_method_to_flag so it recognizes "gauss"
parameter properly instead of silently defaulting to bicubic.
Henrik Gramner [Wed, 25 Aug 2021 20:01:38 +0000 (22:01 +0200)]
x86inc: Add an option for forcing VEX-encoding in non-AVX functions
Henrik Gramner [Mon, 14 Jun 2021 10:20:01 +0000 (12:20 +0200)]
x86inc: Support memory operands in src1 in 3-operand instructions
Particularly in code that makes heavy use of macros it's possible
to end up with 3-operand instructions with a memory operand in src1.
In the case of SSE this works fine due to automatic move insertions,
but in AVX that fails since memory operands are only allowed in src2.
The main purpose of this feature is to minimize the amount of code
changes required to facilitate conversion of existing SSE code to AVX.
Phillip Blucas [Thu, 4 Oct 2018 18:35:57 +0000 (13:35 -0500)]
Add support for Sony XAVC Class 300 and 480
This allows for 2160p UHD at up to 960 Mbit/s.
Ziemowit Zabawa [Sun, 13 Jun 2021 00:35:11 +0000 (02:35 +0200)]
Cosmetics: Add missing backslashes inside #defines
Anton Mitrofanov [Wed, 19 May 2021 16:40:22 +0000 (19:40 +0300)]
Fix --tcfile-in support
Accept files created by MKVToolNix version 17.0.0 or newer.
Anton Mitrofanov [Mon, 17 May 2021 12:28:01 +0000 (15:28 +0300)]
Fix undefined behavior: left shift of negative value
Compilers are good at optimizing multiplication by shift.
Anton Mitrofanov [Fri, 14 May 2021 13:21:43 +0000 (16:21 +0300)]
Fix gcc warnings
Anton Mitrofanov [Sun, 13 Jun 2021 12:43:57 +0000 (15:43 +0300)]
lavf: Fix compilation with new versions of ffmpeg
Add the missing header as avcodec.h is no longer included in avformat.h.
Anton Mitrofanov [Mon, 19 Apr 2021 17:00:18 +0000 (20:00 +0300)]
Cosmetics: Fix vertical alignment for long_options
Phillip Blucas [Tue, 13 Apr 2021 01:13:11 +0000 (20:13 -0500)]
Support writing the content light level information SEI message
Use --cll to specify the maximum content light level (MaxCLL)
and the maximum frame average light level (MaxFALL) as described
by the CTA 861.3 specification.
Phillip Blucas [Wed, 12 Jun 2019 14:52:38 +0000 (09:52 -0500)]
Support writing the mastering display color volume SEI message
Use --mastering-display to specify the properties of the reference display.
A formatted string with all 10 values is required: G,B,R primaries and
white point coordinates, plus max/min brightness. Coordinates are in
0.00002 increments. Brightness units are 0.0001 cd/m^2.
For example, a 1000 nit BT.2020 display with a 0.0001 nit black level:
--mastering-display G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(
10000000,1)
Anton Mitrofanov [Mon, 19 Apr 2021 16:35:56 +0000 (19:35 +0300)]
Fix parsing of enums
Ignore empty string values for enum.
Anton Mitrofanov [Mon, 3 May 2021 10:54:26 +0000 (13:54 +0300)]
y4m: Support ffmpeg's color range extension
Anton Mitrofanov [Wed, 21 Apr 2021 15:49:34 +0000 (18:49 +0300)]
y4m: Support files with longer sequence header
ffmpeg can now generate y4m files with sequence header length > 80.
Anton Mitrofanov [Mon, 5 Apr 2021 19:39:12 +0000 (22:39 +0300)]
CI: Add macos-arm64 target (cross-compile)
Rename the old macos target to macos-x86_64.
Brad Smith [Sat, 3 Apr 2021 20:53:21 +0000 (16:53 -0400)]
Use sysconf(_SC_NPROCESSORS_ONLN) on OpenBSD
On modern versions of OpenBSD, the number of processors online may differ from
the number of processors configured.
Brad Smith [Sat, 7 Mar 2020 19:38:27 +0000 (14:38 -0500)]
arm: Enable HAVE_SECTION_DATA_REL_RO for OpenBSD
Anton Mitrofanov [Thu, 11 Feb 2021 18:10:31 +0000 (21:10 +0300)]
mp4: Add GPAC detection with pkg-config
Martin Storsjö [Mon, 12 Apr 2021 06:54:56 +0000 (09:54 +0300)]
aarch64: Fix the zigzag_interleave_8x8_cavlc_neon function
Use 'cmhs' (which does an unsigned greater or equal comparison)
instead of 'cmhi' (which does an unsigned greater comparison).
This makes sure that dct coeffs with a magnitude of 1 are recognized
in the output nnz buffer.
Henrik Gramner [Wed, 10 Feb 2021 14:40:32 +0000 (15:40 +0100)]
x86inc: Add stack probing on Windows
Large stack allocations on Windows need to use stack probing in order
to guarantee that all stack memory is committed before accessing it.
This is done by ensuring that the guard page(s) at the end of the
currently committed pages are touched prior to any pages beyond that.
Henrik Gramner [Thu, 11 Feb 2021 13:24:27 +0000 (14:24 +0100)]
Silence false positive -Wformat-truncation warning
Anton Mitrofanov [Mon, 8 Feb 2021 18:07:36 +0000 (21:07 +0300)]
Fix MB stats
Bug report by Zhengzhi Duan.
Anton Mitrofanov [Mon, 8 Feb 2021 21:25:32 +0000 (00:25 +0300)]
CI: Update macos URL to vlc-contrib
Anton Mitrofanov [Mon, 1 Feb 2021 19:32:37 +0000 (22:32 +0300)]
Fix VBV overflow check for B-frames
Anton Mitrofanov [Wed, 27 Jan 2021 14:14:55 +0000 (17:14 +0300)]
x86inc: Fix LOAD_MM_PERMUTATION for AVX-512
Anton Mitrofanov [Thu, 21 Jan 2021 20:26:27 +0000 (23:26 +0300)]
Fix PADH alignment
Make pointers to padded buffers aligned both before and after padding.
Anton Mitrofanov [Tue, 26 Jan 2021 17:43:34 +0000 (20:43 +0300)]
Fix alignment of chroma buffer for weightp
In 10-bit mode pixel_asd8 expects 16-byte alignment for pix1 and pix2.
Henrik Gramner [Tue, 26 Jan 2021 01:21:16 +0000 (02:21 +0100)]
Makefile: Drop the -T argument to install
It's not required, and BSD doesn't support it.
Anton Mitrofanov [Thu, 21 Jan 2021 13:41:42 +0000 (16:41 +0300)]
Fix use of nalu_process callback
Broke after unifying of 8-bit and 10-bit libraries.
Anton Mitrofanov [Tue, 19 Jan 2021 21:20:18 +0000 (00:20 +0300)]
Fix weighting for B-frames
This bug never occurs with the current reference management logic.
Bug report by Lingjiang Fang.
Anton Mitrofanov [Fri, 22 Jan 2021 00:51:23 +0000 (03:51 +0300)]
Fix CAVLC encoding
This bug mainly occurred when encoding with high bitrate (low QP).
It did not occur when encoding in baseline or main profile.
Anton Mitrofanov [Sun, 24 Jan 2021 13:28:24 +0000 (16:28 +0300)]
Bump dates to 2021
Konstantin Pavlov [Tue, 24 Nov 2020 17:53:11 +0000 (20:53 +0300)]
CI: Move macos to catalina builders
Anton Mitrofanov [Fri, 8 Jan 2021 15:51:45 +0000 (18:51 +0300)]
CI: Update URLs to the latest vlc-contrib
Martin Storsjö [Mon, 26 Oct 2020 08:01:33 +0000 (10:01 +0200)]
gitlab-ci: Add build-only configurations with llvm-mingw targeting armv7/aarch64
Henrik Gramner [Sun, 29 Nov 2020 13:38:07 +0000 (14:38 +0100)]
configure: Fix endianness test when LTO is enabled through CFLAGS
Martin Storsjö [Mon, 26 Oct 2020 08:36:36 +0000 (10:36 +0200)]
gitlab-ci: Remove the unused _PATH variable
It became unused in
cde9a93319bea766a92e306d69059c76de970190.
Janne Grunau [Thu, 1 Oct 2020 21:08:37 +0000 (21:08 +0000)]
aarch64/asm: optimize cabac asm
0.5% - 2% overall speedup on
`./x264 --threads X --profile high --preset veryfast --crf 15 -o /dev/null park_joy_420_720p50.y4m`
cabac is responsible for roughly 1/6 of the CPU use.
Branch mispredictions are reduced by 15% to 20%.
cortex-s53: 0.5% faster
cortex-a72: 2% faster
neoverse-n1: 0.9% faster
Janne Grunau [Thu, 1 Oct 2020 20:15:18 +0000 (22:15 +0200)]
aarch64/asm: support offsets in movrel macro
Imported from dav1d.
Janne Grunau [Thu, 1 Oct 2020 23:49:53 +0000 (01:49 +0200)]
aarch64/asm: optimize cabac_encode_terminal with extrinsic knowledge
Approach taken from x86 asm. Overall speedup meaningless.
cabac_encode_terminal on average twice as fast on cortex-53 while
encoding with following command:
./x264 --threads 1 --profile high --preset veryfast --crf 15 -o /dev/null park_joy_420_720p50.y4m
Less relative speedup on cortex-a72/73.
Martin Storsjö [Mon, 26 Oct 2020 07:42:20 +0000 (09:42 +0200)]
Add a missing include of stdlib.h
Since
7ab4c928ef4511ea5753a36a57c3506d9fd5086b, osdep.h contains
calls to malloc/free.
This fixes building with MSVC targeting WinRT.
Damiano Galassi [Thu, 23 Jul 2020 15:23:09 +0000 (17:23 +0200)]
configure: Add Apple Silicon support
Anton Mitrofanov [Thu, 8 Oct 2020 18:16:53 +0000 (21:16 +0300)]
x86: Remove workaround for nasm on macho64
Anton Mitrofanov [Sat, 19 Sep 2020 10:30:28 +0000 (13:30 +0300)]
x86: Fix exhaustive search ME asm
Anton Mitrofanov [Tue, 8 Sep 2020 13:36:24 +0000 (16:36 +0300)]
x86: Fix memory operands for inline asm
Anton Mitrofanov [Fri, 4 Sep 2020 15:00:45 +0000 (18:00 +0300)]
x86: Fix clobbers for inline asm
Henrik Gramner [Sat, 12 Sep 2020 17:24:00 +0000 (19:24 +0200)]
Add support for long filenames on Windows 10
Henrik Gramner [Sat, 12 Sep 2020 17:23:57 +0000 (19:23 +0200)]
mp4: Remove GPAC Windows Unicode compatibility shim
GPAC has native UTF-8 support nowadays.
Also move the compatibility code to input/avs.c since that's the only
remaining code that uses it now.
Henrik Gramner [Sat, 12 Sep 2020 17:23:55 +0000 (19:23 +0200)]
mp4: Fix compiling with recent GPAC versions
Anton Mitrofanov [Sun, 12 Jul 2020 15:53:32 +0000 (18:53 +0300)]
Rename function x264_strdup to x264_param_strdup
Anton Mitrofanov [Sun, 12 Jul 2020 15:12:53 +0000 (18:12 +0300)]
cli: Add info about gpac/lsmash into version info
Anton Mitrofanov [Tue, 14 Jul 2020 13:35:11 +0000 (15:35 +0200)]
configure: Add options for bash-completion install
Anton Mitrofanov [Thu, 2 Jul 2020 20:23:50 +0000 (22:23 +0200)]
Add new API function: x264_param_cleanup
Should be called to free struct members allocated internally by libx264,
e.g. by x264_param_parse.
Partially based on videolan/x264!18 by Derek Buitenhuis.
A. David [Thu, 2 Jul 2020 17:45:50 +0000 (19:45 +0200)]
mp4: Update GPAC support to v0.8.0 or later
Henrik Gramner [Wed, 10 Jun 2020 17:18:08 +0000 (19:18 +0200)]
cli: Install bash autocomplete during 'make install'
Henrik Gramner [Wed, 10 Jun 2020 01:21:24 +0000 (03:21 +0200)]
lavf: Update to the new API for iterating demuxers
Anton Mitrofanov [Tue, 30 Jun 2020 19:28:05 +0000 (22:28 +0300)]
CI: Add lsmash support + Change ffmpeg source
Henrik Gramner [Thu, 2 Jul 2020 01:00:32 +0000 (03:00 +0200)]
Fix compilation with nasm 2.15
Anton Mitrofanov [Sun, 26 Apr 2020 00:19:00 +0000 (03:19 +0300)]
Remove code for non-positive f_ip_factor/f_pb_factor
Currently they are guaranteed to be positive.
JHammler [Mon, 15 Jun 2020 19:57:16 +0000 (21:57 +0200)]
configure: Fix building under the MSYS shell
Sergei Trofimovich [Fri, 5 Jun 2020 17:34:02 +0000 (19:34 +0200)]
configure: allow 'strings' override via STRINGS variable
This allows building x264 on systems where 'strings' or
'${HOST}-strings' does not exist, but llvm-strings exists.
Henrik Gramner [Tue, 9 Jun 2020 19:04:58 +0000 (21:04 +0200)]
x86inc: Fix warnings when using nasm 2.15
Anton Mitrofanov [Sun, 24 May 2020 14:15:35 +0000 (17:15 +0300)]
checkasm: increase float error margin to 1e-5
checkasm10 with seed=
511142008 failed on win32 gcc builds.
Anton Mitrofanov [Sun, 24 May 2020 13:35:00 +0000 (16:35 +0300)]
Fix data race
Closes videolan/x264#16.
Bug report by Zu-Ming Jiang.
Anton Mitrofanov [Sat, 25 Apr 2020 23:56:25 +0000 (02:56 +0300)]
Fix undefined behavior: index out of bounds (one more)
last_non_b_pict_type is initialized to -1.
Bug report by Vitaly Buka.
Anton Mitrofanov [Sat, 25 Apr 2020 21:50:12 +0000 (00:50 +0300)]
Remove use of non-breaking spaces
Anton Mitrofanov [Sat, 25 Apr 2020 21:20:07 +0000 (00:20 +0300)]
Fix file encoding from Windows-1252 to UTF-8
Anton Mitrofanov [Sun, 5 Apr 2020 19:29:32 +0000 (22:29 +0300)]
Fix warning: comparison of integers of different signs [-Wsign-compare]
Anton Mitrofanov [Sun, 5 Apr 2020 18:55:15 +0000 (21:55 +0300)]
Fix error "invalid size of malloc" for 10-bit encodes at i686
Anton Mitrofanov [Sun, 1 Mar 2020 11:44:09 +0000 (14:44 +0300)]
Fix undefined behavior: shift exponent is negative
Anton Mitrofanov [Sun, 1 Mar 2020 11:42:50 +0000 (14:42 +0300)]
Fix undefined behavior: access within misaligned address
Anton Mitrofanov [Sun, 1 Mar 2020 11:17:02 +0000 (14:17 +0300)]
Fix undefined behavior: applying [non-]zero offset to null pointer