x262.git
6 years ago64-bit cabac optimizations
Henrik Gramner [Sun, 13 Jan 2013 17:27:08 +0000 (18:27 +0100)]
64-bit cabac optimizations

~4% faster PIC

WIN64:
~3% faster and 16 byte shorter cabac_encode_bypass
~8% faster cabac_encode_terminal
Benchmarked on Ivy Bridge

UNIX64:
One instruction less in cabac_encode_bypass

6 years agoconfigure: add QNX support
Mike Gorchak [Sun, 3 Feb 2013 07:35:00 +0000 (23:35 -0800)]
configure: add QNX support

6 years agoWindows: Enable DEP and ASLR
Henrik Gramner [Sun, 20 Jan 2013 18:35:06 +0000 (19:35 +0100)]
Windows: Enable DEP and ASLR

6 years agox86inc: Set ELF hidden visibility for global constants
Henrik Gramner [Thu, 17 Jan 2013 18:17:24 +0000 (19:17 +0100)]
x86inc: Set ELF hidden visibility for global constants

6 years agox86inc: Add cvisible macro for C functions with public prefix
Diego Biurrun [Thu, 17 Jan 2013 10:18:31 +0000 (11:18 +0100)]
x86inc: Add cvisible macro for C functions with public prefix

This allows defining externally visible library symbols.

Signed-off-by: Diego Biurrun <diego@biurrun.de>
6 years agox86inc: rename program_name to private_prefix
Diego Biurrun [Thu, 17 Jan 2013 19:30:37 +0000 (11:30 -0800)]
x86inc: rename program_name to private_prefix
Synced from libav.
The new name is more descriptive and will allow defining a separate public
prefix for externally visible library symbols.

6 years agox264.h: improve x264_encoder_reconfig documentation
Jason Garrett-Glaser [Mon, 14 Jan 2013 13:35:30 +0000 (05:35 -0800)]
x264.h: improve x264_encoder_reconfig documentation

6 years agoCosmetics: stricter definition of parameterless functions
Henrik Gramner [Sat, 16 Feb 2013 18:36:50 +0000 (19:36 +0100)]
Cosmetics: stricter definition of parameterless functions

6 years agoUpdate "Install and compile x264" in doc/regression_test.txt
Neil [Mon, 28 Jan 2013 02:47:38 +0000 (10:47 +0800)]
Update "Install and compile x264" in doc/regression_test.txt

6 years agoFix possible non-determinism with mbtree + open-gop + sync-lookahead
Anton Mitrofanov [Thu, 24 Jan 2013 08:11:26 +0000 (12:11 +0400)]
Fix possible non-determinism with mbtree + open-gop + sync-lookahead

Code assumed keyframe analysis would only pull one frame off the list; this
isn't true with open-gop.

6 years agox86: don't use the red zone on win64
Anton Mitrofanov [Mon, 25 Feb 2013 15:28:19 +0000 (19:28 +0400)]
x86: don't use the red zone on win64

6 years agox86-64: fix trellis asm with interlacing
Jason Garrett-Glaser [Mon, 11 Feb 2013 00:12:34 +0000 (16:12 -0800)]
x86-64: fix trellis asm with interlacing

Regression in r2145.
Assembly assumed array was [2][64] when it was actually [2][63].
Tiny (~0.1%) compression improvement.

6 years agox86-32: use simple nop codes for <= sse
Ronald S. Bultje [Wed, 30 Jan 2013 17:48:14 +0000 (09:48 -0800)]
x86-32: use simple nop codes for <= sse

The "CentaurHauls family 6 model 9 stepping 8" family of CPUs (flags:
fpu vme de pse tsc msr cx8 sep mtrr pge mov pat mmx fxsr sse up rng
rng_en ace ace_en) SIGILLs on long nop codes.

6 years agoBump dates to 2013
Loren Merritt [Tue, 8 Jan 2013 21:30:57 +0000 (21:30 +0000)]
Bump dates to 2013

6 years agox86inc: Drop tzcnt workaround
Henrik Gramner [Mon, 17 Dec 2012 20:54:00 +0000 (21:54 +0100)]
x86inc: Drop tzcnt workaround

It is no longer needed now that we've bumped the version requirement of yasm to 1.2.0.

6 years agoAVX2/FMA3 version of mbtree_propagate
Jason Garrett-Glaser [Mon, 12 Nov 2012 18:28:53 +0000 (10:28 -0800)]
AVX2/FMA3 version of mbtree_propagate
First AVX2 function for testing.
Bump yasm version to 1.2.0 for AVX2 support.

6 years agox86inc: Use VEX-encoded instructions in AVX functions
Henrik Gramner [Tue, 11 Dec 2012 15:05:34 +0000 (16:05 +0100)]
x86inc: Use VEX-encoded instructions in AVX functions
Automatically use VEX-encoding in AVX/AVX2/XOP/FMA3/FMA4 functions for all instructions that exists in a VEX-encoded version.
This change makes it easier to extend existing code to use AVX2.
Also add support for AVX emulation of a few instructions that were missing before.

6 years agox86inc: activate REP_RET automatically
Loren Merritt [Sun, 2 Dec 2012 15:56:30 +0000 (15:56 +0000)]
x86inc: activate REP_RET automatically
Now RET checks whether it immediately follows a branch, so the programmer dosen't have to keep track of that condition.
REP_RET is still needed manually when it's a branch target, but that's much rarer.
The implementation involves lots of spurious labels, but that's ok because we strip them.

6 years agox86inc: support stack mem allocation and re-alignment in PROLOGUE
Ronald S. Bultje [Thu, 6 Dec 2012 23:40:13 +0000 (15:40 -0800)]
x86inc: support stack mem allocation and re-alignment in PROLOGUE
Use this in 8-bit loopfilter functions so they can be used if
there is no aligned stack (e.g. x86-32 MSVC or ICC 10.x).

6 years agoUpdate config.guess and config.sub
Henrik Gramner [Mon, 17 Dec 2012 21:15:02 +0000 (22:15 +0100)]
Update config.guess and config.sub

6 years agoFix crash if the first frame is forced to a non-keyframe
Anton Mitrofanov [Tue, 8 Jan 2013 21:29:49 +0000 (13:29 -0800)]
Fix crash if the first frame is forced to a non-keyframe
This is obviously bad user input, but x264 shouldn't crash if it happens.

6 years agoFix build on ARM with binutils >= 2.23.51.0.6
Bernhard Rosenkränzer [Sun, 30 Dec 2012 20:18:00 +0000 (12:18 -0800)]
Fix build on ARM with binutils >= 2.23.51.0.6
GAS doesn't seem to like spaces in vld1 anymore, so remove those.

6 years agoFix pthread_join emulation on win32 and BeOS
Anton Mitrofanov [Fri, 23 Nov 2012 14:26:53 +0000 (18:26 +0400)]
Fix pthread_join emulation on win32 and BeOS
Doesn't actually affect x264, but it's more correct.

6 years agoFix typo in r2222
Jason Garrett-Glaser [Tue, 27 Nov 2012 15:50:51 +0000 (07:50 -0800)]
Fix typo in r2222
Slightly wrong numbers in level table.

6 years agoconfigure: fix gpac detection with -Wp,-D_FORTIFY_SOURCE=2
Sergio Basto [Fri, 23 Nov 2012 02:02:50 +0000 (18:02 -0800)]
configure: fix gpac detection with -Wp,-D_FORTIFY_SOURCE=2

6 years agoSolaris: use sysconf to get processor count
Sean McGovern [Fri, 23 Nov 2012 02:01:16 +0000 (18:01 -0800)]
Solaris: use sysconf to get processor count
Solaris responds correctly to the same value as Cygwin, so let's use that.

6 years agolavf input: allocate AVFrame correctly
Anton Khirnov [Tue, 13 Nov 2012 20:01:24 +0000 (21:01 +0100)]
lavf input: allocate AVFrame correctly
Allocate AVFrames correctly with avcodec_alloc_frame().
This caused crashes with newer libavcodecs that try to free frame extradata.

6 years agoFix crash when using libx264.dll compiled with ICL for X86_64
Anton Mitrofanov [Sat, 10 Nov 2012 23:44:02 +0000 (03:44 +0400)]
Fix crash when using libx264.dll compiled with ICL for X86_64

6 years agoFix possible issues with out-of-spec QP values
Anton Mitrofanov [Thu, 8 Nov 2012 22:31:10 +0000 (02:31 +0400)]
Fix possible issues with out-of-spec QP values
Fixes a possible regression in r2228.

6 years agoAttempt to optimize PPS pic_init_qp in 2-pass mode
Jason Garrett-Glaser [Wed, 26 Sep 2012 20:49:02 +0000 (13:49 -0700)]
Attempt to optimize PPS pic_init_qp in 2-pass mode
Small compression improvement; up to ~0.5% in extreme cases.
Helps more with small slice sizes (tiny resolutions or slice-max-size).
Note that this changes the 2-pass stats file format.

6 years agoImprove slice header QP selection
Jason Garrett-Glaser [Wed, 26 Sep 2012 20:05:00 +0000 (13:05 -0700)]
Improve slice header QP selection
Use the first macroblock of each slice instead of the last of the previous.
Lets us pick a reasonable initial QP for the first slice too.
Slightly improved compression.

6 years agoUpdate level dpb size calculation to match newer H.264 spec
Jason Garrett-Glaser [Thu, 11 Oct 2012 20:27:48 +0000 (13:27 -0700)]
Update level dpb size calculation to match newer H.264 spec
Doesn't actually change encoding behavior, but makes it more correct.
Warning messages should now be accurate at higher bit depths and non-4:2:0.
Technically, since it redefines x264_level_t, this is an API version increment.

6 years agoAdd support for the ffmpeg/vapoursynth high bit depth y4m extensions
Jan Ekström [Sun, 7 Oct 2012 18:12:05 +0000 (21:12 +0300)]
Add support for the ffmpeg/vapoursynth high bit depth y4m extensions

6 years agox86inc: Rename 3dnow2 to 3dnowext
Diego Biurrun [Tue, 6 Nov 2012 13:48:56 +0000 (14:48 +0100)]
x86inc: Rename 3dnow2 to 3dnowext
The name "3dnowext" is more common than "3dnow2". Doesn't affect x264.

6 years agox86inc: only define program_name if the macro is unset.
Diego Biurrun [Wed, 31 Oct 2012 19:23:54 +0000 (12:23 -0700)]
x86inc: only define program_name if the macro is unset.
This allows overriding the value from outside the file.
This can be useful if x86inc.asm is used outside of x264.

6 years agoDisable ARM NEON MRC CPU test for Apple devices
David Wolstencroft [Mon, 29 Oct 2012 16:07:39 +0000 (09:07 -0700)]
Disable ARM NEON MRC CPU test for Apple devices
The Apple A6 CPU doesn't support performance counters, so this test caused a crash.

6 years agoFix crash with no-scenecut + mbtree
Jason Garrett-Glaser [Tue, 6 Nov 2012 20:03:20 +0000 (12:03 -0800)]
Fix crash with no-scenecut + mbtree

6 years agoFix reconfiguring to crf=0
Anton Mitrofanov [Fri, 12 Oct 2012 19:43:40 +0000 (23:43 +0400)]
Fix reconfiguring to crf=0
Lossless mode can't currently be enabled mid-stream.

6 years agoFix ALIGNED_ARRAY_EMU macros on ICL
Derek Buitenhuis [Mon, 17 Sep 2012 18:09:20 +0000 (11:09 -0700)]
Fix ALIGNED_ARRAY_EMU macros on ICL
ICL's preprocessor doesn't handle it correctly.
This fix is similar to libav's fix in 0db2d9.

7 years agoFix use of deprecated av_close_input_file call
Jason Martens [Thu, 13 Sep 2012 18:20:40 +0000 (11:20 -0700)]
Fix use of deprecated av_close_input_file call

7 years agoFix pkg-config for dynamic vs static linking
Brad Smith [Wed, 26 Sep 2012 21:13:27 +0000 (14:13 -0700)]
Fix pkg-config for dynamic vs static linking

7 years agoSet libm in the configure script if the OS has libm
Brad Smith [Tue, 11 Sep 2012 00:52:04 +0000 (17:52 -0700)]
Set libm in the configure script if the OS has libm
Prerequisite for another configure patch after this.
Idea copied from libpthread.

7 years agoEnhance mb_info: add mb_info_update
Jason Garrett-Glaser [Thu, 16 Aug 2012 20:40:32 +0000 (13:40 -0700)]
Enhance mb_info: add mb_info_update
This feature lets the callee know which decoded macroblocks have changed.

7 years agoFix mb_info_free with sliced threads
Jason Garrett-Glaser [Thu, 16 Aug 2012 20:01:17 +0000 (13:01 -0700)]
Fix mb_info_free with sliced threads
x264 would free mb_info before it was completely done using it.

7 years agoEnhance nalu_process
Jason Garrett-Glaser [Tue, 7 Aug 2012 19:43:26 +0000 (12:43 -0700)]
Enhance nalu_process
Add the input frame opaque pointer to the arguments.
This makes it easier to use with multiple simultaneous x264 encodes.

7 years agoImprove mb_info constant mb optimization
Jason Garrett-Glaser [Mon, 6 Aug 2012 21:55:35 +0000 (14:55 -0700)]
Improve mb_info constant mb optimization
Allow fast skipping even if the pskip MV isn't zero.

7 years agoExport the average effective CRF of each frame
Jason Garrett-Glaser [Mon, 30 Jul 2012 19:58:34 +0000 (12:58 -0700)]
Export the average effective CRF of each frame
Useful to judge the resulting quality of a frame when VBV is enabled.

7 years agoRemove special-casing for OpenBSD pthread handling
Brad Smith [Tue, 21 Aug 2012 06:58:19 +0000 (23:58 -0700)]
Remove special-casing for OpenBSD pthread handling
Previously it was policy to use -pthread, but OpenBSD now recommends -lpthread.
its been libpthread anyway and policy has changed to stop using -pthread.

7 years agox86inc: automatically insert vzeroupper for YMM functions
Ronald S. Bultje [Fri, 27 Jul 2012 01:01:49 +0000 (18:01 -0700)]
x86inc: automatically insert vzeroupper for YMM functions
Backported from libav.

7 years agoFree user supplied data when deleting a frame
Kieran Kunhya [Tue, 24 Jul 2012 15:47:45 +0000 (08:47 -0700)]
Free user supplied data when deleting a frame
This eliminates a memory leak when calling x264_encoder_close.

7 years agoRevert r2204
Jason Garrett-Glaser [Wed, 18 Jul 2012 15:33:41 +0000 (08:33 -0700)]
Revert r2204
People don't seem to like this so I'm just going to get rid of it.

7 years agoFaster predictor checking with subme<3
Jason Garrett-Glaser [Tue, 10 Jul 2012 21:10:44 +0000 (14:10 -0700)]
Faster predictor checking with subme<3
Fix a typo that made an early-skip less effective.
Avoid a relatively unpredictable branch.
Slightly changed output due to the typo-fix.
~50 cycles faster on Core i7.

7 years agoTry 8x8 transform analysis even when sub8x8 partitions are present
Jason Garrett-Glaser [Tue, 26 Jun 2012 01:01:29 +0000 (18:01 -0700)]
Try 8x8 transform analysis even when sub8x8 partitions are present
Turn off the sub8x8 partitions, try it, and turn them back on if it didn't help.
Small compression improvement with p4x4 on (~0.1-0.5%).
Also update related comments.

7 years agoSupport changing resolutions between passes with macroblock-tree
Jason Garrett-Glaser [Sat, 9 Jun 2012 01:19:59 +0000 (18:19 -0700)]
Support changing resolutions between passes with macroblock-tree
Implement a basic separable bilinear filter to rescale the quantizer offsets.
Structure inspired by swscale, but floating-point instead of fixed-point.
Not as optimized as it could be, but it's quite fast already.

Example compression penalties on a 720p video game recording:
First pass with 720p and second as 480p: ~-1.5% (vs. same res)
First pass with 480p and second as 720p: ~-3% (vs. same res)

7 years agoPrint elapsed time in encoding progress indicator
Alexander Prikhodko [Tue, 12 Jun 2012 17:21:35 +0000 (20:21 +0300)]
Print elapsed time in encoding progress indicator

7 years agoCap ratecontrol predictor parameters
Anton Mitrofanov [Sat, 2 Jun 2012 17:27:50 +0000 (21:27 +0400)]
Cap ratecontrol predictor parameters
Limits VBV mispredictions after long periods of relatively constant video.

7 years agox86inc: import patches from libav
Loren Merritt [Tue, 3 Jul 2012 21:38:04 +0000 (14:38 -0700)]
x86inc: import patches from libav
Allow manual invocation of WIN64_SPILL_XMM even under INIT_MMX
SSE version of mova is movaps rather than movdqa.
YMM version of movnta.
Add mp size for named arguments.
Fix DEFINE_ARGS when used outside of a cglobal.
Define a few more cpuflags.
3-argument wrappers for a few more instructions.

7 years agoFix crash with --fps 0
Anton Mitrofanov [Fri, 22 Jun 2012 18:02:24 +0000 (22:02 +0400)]
Fix crash with --fps 0
Fix some integer overflows and check input parameters better.
Also fix incorrect type specifiers for demuxer info printing.

7 years agoThreaded lookahead
Jason Garrett-Glaser [Tue, 8 May 2012 22:42:56 +0000 (15:42 -0700)]
Threaded lookahead

Split each lookahead frame analysis call into multiple threads.  Has a small
impact on quality, but does not seem to be consistently any worse.

This helps alleviate bottlenecks with many cores and frame threads. In many
case, this massively increases performance on many-core systems.  For example,
over 100% faster 1080p encoding with --preset veryfast on a 12-core i7 system.
Realtime 1080p30 at --preset slow should now be feasible on real systems.

For sliced-threads, this patch should be faster regardless of settings (~10%).

By default, lookahead threads are 1/6 of regular threads.  This isn't exacting,
but it seems to work well for all presets on real systems.  With sliced-threads,
it's the same as the number of encoding threads.

7 years agoAdd support for RGB formats in bit-depth conversion filter
Anton Mitrofanov [Fri, 4 May 2012 13:18:12 +0000 (17:18 +0400)]
Add support for RGB formats in bit-depth conversion filter

7 years agoFix some bugs in mb_info code
Anton Mitrofanov [Sat, 12 May 2012 09:57:49 +0000 (13:57 +0400)]
Fix some bugs in mb_info code

7 years agoAdd mb_info API for signalling constant macroblocks
Jason Garrett-Glaser [Thu, 29 Mar 2012 21:14:07 +0000 (14:14 -0700)]
Add mb_info API for signalling constant macroblocks
Some use-cases of x264 involve encoding video with large constant areas of the frame.
Sometimes, the caller knows which areas these are, and can tell x264.
This API lets the caller do this and adds internal tracking of modifications to macroblocks to avoid problems.
This is really only suitable without B-frames.
An example use-case would be using x264 for VNC.

7 years agoFaster chroma weight cost calculation
Henrik Gramner [Fri, 6 Apr 2012 22:40:09 +0000 (00:40 +0200)]
Faster chroma weight cost calculation

New assembly function with SSE2, SSSE3 and XOP implementations for calculating absolute sum of differences.

7 years agoAdd Level 5.2 support
Lucien [Sat, 31 Mar 2012 12:42:49 +0000 (13:42 +0100)]
Add Level 5.2 support

7 years agoEradicate all mention of Extended Profile
Henrik Gramner [Thu, 12 Apr 2012 17:14:43 +0000 (19:14 +0200)]
Eradicate all mention of Extended Profile
x264 never supported it and never will because nobody uses it.

7 years agoFix disabling of mbtree when using 2pass encoding and zones
Anton Mitrofanov [Tue, 3 Apr 2012 17:46:52 +0000 (21:46 +0400)]
Fix disabling of mbtree when using 2pass encoding and zones

7 years agoconfigure: force select -mXX gcc option for i386/x86-64
Alexander Prikhodko [Sat, 31 Mar 2012 09:06:21 +0000 (12:06 +0300)]
configure: force select -mXX gcc option for i386/x86-64
Makes multilib compilation more convenient.

7 years agoUpdate config.guess and config.sub
Rafaël Carré [Mon, 16 Apr 2012 01:20:14 +0000 (21:20 -0400)]
Update config.guess and config.sub
Adds support for a bunch of targets, including:
aarch64 (armv8)
arm-linux-androideabi

7 years agoconfigure: correct use of RC variable and add --extra-rcflags
Alexander Prikhodko [Sat, 31 Mar 2012 08:33:41 +0000 (11:33 +0300)]
configure: correct use of RC variable and add --extra-rcflags

7 years agoICL/MSVS: Fix shared library generation and usage
Steven Walters [Thu, 29 Mar 2012 01:15:04 +0000 (21:15 -0400)]
ICL/MSVS: Fix shared library generation and usage
MSVS requires exported variables to be declared with the DATA keyword, and requires that imported variables be declared with dllimport.
This does not fix x264 cli being unable to use a shared library built by ICL however.

7 years agoFix intra-refresh + hrd
Kieran Kunhya [Tue, 27 Mar 2012 16:38:56 +0000 (17:38 +0100)]
Fix intra-refresh + hrd

7 years agoFix frame input colorspace check
Anton Mitrofanov [Sun, 25 Mar 2012 13:34:24 +0000 (17:34 +0400)]
Fix frame input colorspace check

7 years agoFix comment in deblock.c
Jason Garrett-Glaser [Thu, 22 Mar 2012 20:56:50 +0000 (13:56 -0700)]
Fix comment in deblock.c
The code does, in fact, handle CAVLC+8x8dct correctly already.

7 years agoFix sliced-threads ratecontrol bug
Jason Garrett-Glaser [Tue, 13 Mar 2012 21:37:26 +0000 (14:37 -0700)]
Fix sliced-threads ratecontrol bug
Was using qp instead of qscale; could cause NANs (not to mention less accurate results).

7 years agoFix clobbering of mutex/cvs
Anton Mitrofanov [Mon, 12 Mar 2012 06:08:18 +0000 (23:08 -0700)]
Fix clobbering of mutex/cvs
Regression in r2183.
Bizarrely seemed to work on many platforms, but crashed on win64 and may have been slower.
Only affected sliced threads during encoding, but could cause crashes on x264 encoder close even without sliced threads.

7 years agoSliced-threads: do hpel and deblock after returning
Jason Garrett-Glaser [Fri, 24 Feb 2012 21:34:39 +0000 (13:34 -0800)]
Sliced-threads: do hpel and deblock after returning
Lowers encoding latency around 14% in sliced threads mode with preset superfast.
Additionally, even if there is no waiting time between frames, this improves parallelism, because hpel+deblock are done during the (singlethreaded) lookahead.
For ease of debugging, dump-yuv forces all of the threads to wait and finish instead of setting b_full_recon.

7 years agoAdd full-recon API option
Jason Garrett-Glaser [Fri, 24 Feb 2012 21:16:52 +0000 (13:16 -0800)]
Add full-recon API option
Fully reconstruct frames even without dump-yuv.

7 years agox86inc: switch to amdnops
Jason Garrett-Glaser [Wed, 22 Feb 2012 21:33:36 +0000 (13:33 -0800)]
x86inc: switch to amdnops
Recent AMD CPUs' instruction decoders choke horribly on extremely long nops (i.e. with 4 prefixes).
Won't affect much, since we don't use ALIGN much.

7 years agoBMI1 decimate functions
Jason Garrett-Glaser [Wed, 15 Feb 2012 00:54:03 +0000 (16:54 -0800)]
BMI1 decimate functions
Intel was nice enough to make tzcnt equal to "rep bsf", which is backwards-compatible.
This means we don't actually have to add new functions to make it work.

7 years agoMinor asm changes
Jason Garrett-Glaser [Tue, 14 Feb 2012 23:07:10 +0000 (15:07 -0800)]
Minor asm changes

7 years agoAdd row-reencoding support to VBV for improved accuracy
Jason Garrett-Glaser [Thu, 9 Feb 2012 22:23:52 +0000 (14:23 -0800)]
Add row-reencoding support to VBV for improved accuracy
Extremely accurate, possibly 100% so (I can't get it to fail even with difficult VBVs).
Does not yet support rows split on slice boundaries (occurs often with slice-max-size/mbs).
Still inaccurate with sliced threads, but better than before.

7 years agoAbstract bitstream backup/restore functions
Jason Garrett-Glaser [Thu, 9 Feb 2012 20:38:44 +0000 (12:38 -0800)]
Abstract bitstream backup/restore functions
Required for row re-encoding.

7 years agoAdd an small per-MB cost penalty for lowres
Anton Mitrofanov [Thu, 9 Feb 2012 23:27:53 +0000 (15:27 -0800)]
Add an small per-MB cost penalty for lowres
Helps avoid VBV predictors going nuts with very low-cost MBs.
One particular case this fixes is zero-cost MBs: adaptive quantization decreases the QP a lot, but (before this patch), no cost penalty gets factored in for this, because anything times zero is zero.

7 years agoRemove explicit run calculation from coeff_level_run
Jason Garrett-Glaser [Tue, 14 Feb 2012 02:31:51 +0000 (18:31 -0800)]
Remove explicit run calculation from coeff_level_run
Not necessary with the CAVLC lookup table for zero run codes.

7 years agoExport PSNR/SSIM in x264 API
Jason Garrett-Glaser [Mon, 13 Feb 2012 21:20:06 +0000 (13:20 -0800)]
Export PSNR/SSIM in x264 API

7 years agox86inc: support yasm -f win64
Ronald S. Bultje [Wed, 8 Feb 2012 21:10:31 +0000 (13:10 -0800)]
x86inc: support yasm -f win64
Not necessary for x264, as -m amd64 already does the right thing, but used by external users of x86inc.

7 years agoFix incorrect zero-extension assumptions in x86_64 asm
Henrik Gramner [Wed, 1 Feb 2012 22:52:48 +0000 (23:52 +0100)]
Fix incorrect zero-extension assumptions in x86_64 asm
Some x264 asm assumed that the high 32 bits of registers containing "int" values would be zero.
This is almost always the case, and it seems to work with gcc, but it is *not* guaranteed by the ABI.
As a result, it breaks with some other compilers, like Clang, that take advantage of this in optimizations.
Accordingly, fix all x86 code by using intptr_t instead of int or using movsxd where neccessary.
Also add checkasm hack to detect when assembly functions incorrectly assumes that 32-bit integers are zero-extended to 64-bit.

7 years agoFix possible alignment crash when linking from MSVC
Jason Garrett-Glaser [Thu, 23 Feb 2012 17:11:23 +0000 (09:11 -0800)]
Fix possible alignment crash when linking from MSVC
x264_cavlc_init needs to be stack-aligned now.

7 years agoFix rare overflow in 10-bit intra_satd_x3_16x16 asm
Anton Mitrofanov [Tue, 21 Feb 2012 20:58:22 +0000 (12:58 -0800)]
Fix rare overflow in 10-bit intra_satd_x3_16x16 asm

7 years agoICL: fix out of tree building and resource file usage on Windows
Steven Walters [Sun, 12 Feb 2012 03:56:43 +0000 (22:56 -0500)]
ICL: fix out of tree building and resource file usage on Windows

7 years agoAdd error handling for out-of-tree build
Oka Motofumi [Sun, 5 Feb 2012 21:07:34 +0000 (06:07 +0900)]
Add error handling for out-of-tree build

7 years agoFix RGB colorspace input
Anton Mitrofanov [Tue, 6 Mar 2012 13:34:02 +0000 (17:34 +0400)]
Fix RGB colorspace input
BGR/BGRA input was correct.

7 years agoFix interlaced + extremal slice-max-size
Jason Garrett-Glaser [Tue, 14 Feb 2012 00:40:32 +0000 (16:40 -0800)]
Fix interlaced + extremal slice-max-size
Broke if the first macroblock in the slice exceeded the set slice-max-size.

7 years agoFix regression in r2141
Henrik Gramner [Sun, 5 Feb 2012 19:43:09 +0000 (20:43 +0100)]
Fix regression in r2141
Broke register preservation in x264_cpu_cpuid and x264_cpu_xgetbv.
Did not cause any problems.

7 years agoTBM, AVX2, FMA3, BMI1, and BMI2 CPU detection support
Jason Garrett-Glaser [Thu, 19 Jan 2012 22:56:54 +0000 (14:56 -0800)]
TBM, AVX2, FMA3, BMI1, and BMI2 CPU detection support
TBM and BMI1 are supported by Trinity/Piledriver.
The others (and BMI1) will probably appear in Intel's upcoming Haswell.
Also update x86inc with AVX2 stuff.

7 years agox86inc: add TAIL_CALL macro to abstract a common asm idiom
Loren Merritt [Fri, 3 Feb 2012 06:27:18 +0000 (06:27 +0000)]
x86inc: add TAIL_CALL macro to abstract a common asm idiom

7 years agoMinor asm optimizations/cleanup
Jason Garrett-Glaser [Thu, 26 Jan 2012 00:44:38 +0000 (16:44 -0800)]
Minor asm optimizations/cleanup

7 years agoClean up and optimize weightp, plus enable SSSE3 weight on SB/BDZ
Jason Garrett-Glaser [Wed, 25 Jan 2012 03:03:58 +0000 (19:03 -0800)]
Clean up and optimize weightp, plus enable SSSE3 weight on SB/BDZ
Also remove unused AVX cruft.

7 years agoXOP frame_init_lowres
Jason Garrett-Glaser [Tue, 24 Jan 2012 02:57:58 +0000 (18:57 -0800)]
XOP frame_init_lowres
Covers both 8-bit and 16-bit, ~5-10% faster on Bulldozer.

7 years agoXOP 8x8 zigzags
Jason Garrett-Glaser [Tue, 17 Jan 2012 23:25:10 +0000 (15:25 -0800)]
XOP 8x8 zigzags
Field: 35(mmx) ->16(xop) cycles
Frame: 32(ssse3)->20(xop) cycles