Fiona Glaser [Wed, 12 Jan 2011 17:54:33 +0000 (09:54 -0800)]
Initial AVX support
Automatically handle 3-operand instructions and abstraction between SSE and AVX.
Implement one function with this (denoise_dct) as an initial test.
x264 can't make much use of the 256-bit support of AVX (as it's float-only), but 3-operand could give some small benefits.
Fiona Glaser [Tue, 11 Jan 2011 19:04:52 +0000 (11:04 -0800)]
Double the base framerate for frame-sequential 3D files
A 60fps frame-sequential 3D file is really only 30 FPS, just alternating between eyes.
Accordingly, ratecontrol should treat it as if it was really 30 FPS.
This will increase the bitrate at the same CRF level for such videos when --frame-packing 5 is used.
Yasuhiro Ikeda [Thu, 20 Jan 2011 14:12:01 +0000 (23:12 +0900)]
Add --input-fmt option to lavf input
Conforms to ffmpeg's `-f` option.
Use this when lavf fails to guess the input format.
Tony Young [Fri, 21 Jan 2011 21:06:28 +0000 (13:06 -0800)]
Two improvements to regression test script
Use SHA-1 hashes for temporary file names to avoid exceeding OS filename length limits.
Correctly return to the original branch after testing if you were on a branch.
Vittorio Giovara [Fri, 14 Jan 2011 18:02:33 +0000 (10:02 -0800)]
Add some missing values to the non-extended SAR table
Sean McGovern [Fri, 14 Jan 2011 07:10:12 +0000 (02:10 -0500)]
Bump dates to 2011
Fiona Glaser [Tue, 18 Jan 2011 20:31:26 +0000 (12:31 -0800)]
More correctly write frame-packing SEI flags
Bug reported by Nero.
Fiona Glaser [Thu, 20 Jan 2011 22:45:57 +0000 (14:45 -0800)]
Don't die in x264_encoder_close if an error occurred in x264_encoder_encode
Also clean up properly in x264.c (mostly useful for finding bugs in cleanup).
Fiona Glaser [Mon, 24 Jan 2011 05:03:14 +0000 (21:03 -0800)]
Fix reconfiguration of b_tff
Attempting to change field order during encoding could cause slight corruption.
Also fix delta_poc_bottom to be correctly set if interlaced mode is used without B-frames.
Steven Walters [Sun, 23 Jan 2011 20:19:11 +0000 (15:19 -0500)]
Fix x264 CPU detection with >=64 CPUs on Windows
x264 won't actually use more than one processor group's worth of CPUs, however.
This isn't a problem, as a single x264 instance can't effectively use a full 64 cores anyways.
Holger Lubitz [Fri, 21 Jan 2011 18:13:57 +0000 (19:13 +0100)]
Remove high bit depth mmx quant
It was using pmuludq which is sse2, and the function isn't really possible without pmuludq.
Holger Lubitz [Sat, 22 Jan 2011 15:49:23 +0000 (16:49 +0100)]
Fix cacheline check in avg2 w20 cache32
Didn't result in incorrect output, only slightly decreased speed on a few obsolete systems.
Holger Lubitz [Fri, 21 Jan 2011 16:17:29 +0000 (17:17 +0100)]
Fix illegal instruction in high bit depth ssd_nv12_mmxext
Unfortunately paddq isn't available in mmxext, only in sse2 and up.
Also fixes to actually allow widths up to 16416/32832 without overflow.
Fiona Glaser [Fri, 24 Dec 2010 00:33:01 +0000 (19:33 -0500)]
VFR/framerate-aware ratecontrol, part 2
MB-tree and qcomp complexity estimation now consider the duration of a frame in their calculations.
This is very important for visual optimizations, as frames that last longer are inherently more important quality-wise.
Improves VFR-aware PSNR as much as 1-2db on extreme test cases, ~0.5db on more ordinary VFR clips (e.g. deduped anime episodes).
WARNING: This change redefines x264's internal quality measurement.
x264 will now scale its quality based on the framerate of the video due to the aforementioned frame duration logic.
That is, --crf X will give lower quality per frame for a 60fps video than for a 30fps one.
This will make --crf closer to constant perceptual quality than previously.
The "center" for this change is 25fps: that is, videos lower than 25fps will go up in quality at the same CRF and videos above will go down.
This choice is completely arbitrary.
Note that to take full advantage of this, x264 must encode your video at the correct framerate, with the correct timestamps.
Fiona Glaser [Sat, 1 Jan 2011 03:54:16 +0000 (22:54 -0500)]
Improve reference ordering in interleaved 3D video
Provides a decent compression improvement when encoding interleaved 3D content (--frame-packing 5).
Helps more without B-frames and at lower bitrates.
Note that x264 will not do this optimization unless --frame-packing 5 is used to tell x264 that the source is interleaved 3D.
Tests consistently show that interleaved frame packing is by far the best way to compress 3D content.
It gives a ~35-50% compression benefit over separate streams or top/bottom or left/right coding.
Also finally add support for L1 reference reordering (in B-frames).
Also add support for reordered ref0 in L0 and L1 lists; could be useful in the future for other things.
Fiona Glaser [Wed, 22 Dec 2010 01:58:10 +0000 (20:58 -0500)]
Cosmetics: fref0/1 -> fref[2] and i_ref0/1 -> i_ref[2]
A much-needed refactoring, plus makes the next patch easier.
Alex Wright [Sat, 25 Dec 2010 09:31:00 +0000 (19:31 +1000)]
Check an extra offset during weightp analysis
Up to 0.1 - 0.6 dB gain on some fade-ins with --weightp 1, less with --weightp 2.
Daniel Kang [Tue, 4 Jan 2011 20:27:38 +0000 (15:27 -0500)]
SSE2 high bit depth SSIM functions
Patch from Google Code-In.
George Stephanos [Sun, 2 Jan 2011 16:26:10 +0000 (11:26 -0500)]
SSE2 high bit depth intra_predict_(8x8c|16x16)_p
Patch from Google Code-In.
Joe Cortes [Sat, 25 Dec 2010 03:33:57 +0000 (21:33 -0600)]
MMX high bit depth coeff_last4
Patch from Google Code-In.
Daniel Kang [Thu, 23 Dec 2010 17:15:03 +0000 (12:15 -0500)]
SSE2 high bit depth zigzag_interleave_cavlc
Patch from Google Code-In.
Daniel Kang [Wed, 22 Dec 2010 22:53:08 +0000 (17:53 -0500)]
MMX/SSE2/SSSE3 high bit depth frame_init_lowres functions
Patch from Google Code-In.
Daniel Kang [Fri, 24 Dec 2010 04:19:39 +0000 (23:19 -0500)]
MMX high bit depth 4x4 intra predict functions
DDR and HD directions, as well as making HU faster.
Also enable some SSE2 versions of high bit depth functions that were added but not properly enabled.
Patch from Google Code-In.
Daniel Kang [Wed, 22 Dec 2010 21:51:22 +0000 (16:51 -0500)]
SSE2 high bit depth 8x8 intra predict functions
DDL, DDR, VR, HU, and HD directions, as well as the 8x8 filter.
Also make 8-bit MMX VR faster, by backporting the optimizations from the high bit depth version.
Patch from Google Code-In.
George Stephanos [Wed, 22 Dec 2010 20:44:03 +0000 (15:44 -0500)]
MMX/SSE2 high bit depth 8x8c intra predict functions
Patch from Google Code-In.
Daniel Kang [Sun, 19 Dec 2010 21:31:59 +0000 (16:31 -0500)]
MMX version of high bit depth plane_copy
And various cosmetics.
Patch from Google Code-In
Fiona Glaser [Sat, 18 Dec 2010 20:40:13 +0000 (12:40 -0800)]
Faster x86 predict_8x8c_dc, MMX/SSE2 high bit depth versions
Fiona Glaser [Sat, 18 Dec 2010 13:40:49 +0000 (05:40 -0800)]
SSSE3 high bit depth sad_aligned functions
Daniel Kang [Thu, 16 Dec 2010 12:41:17 +0000 (04:41 -0800)]
MMX/SSE2 high bit depth interleave functions
Patch from Google Code-In.
Joey Geralnik [Wed, 15 Dec 2010 07:14:56 +0000 (09:14 +0200)]
MMX/SSE2 high bit depth avg functions
Patch from Google Code-In.
Daniel Kang [Wed, 15 Dec 2010 03:47:51 +0000 (22:47 -0500)]
MMX/SSE2 high bit depth deinterleave functions
Patch from Google Code-In
Fiona Glaser [Thu, 6 Jan 2011 04:29:36 +0000 (23:29 -0500)]
Shut up some incorrect gcc uninitialized variable warnings
Anton Mitrofanov [Fri, 24 Dec 2010 21:55:14 +0000 (00:55 +0300)]
Write --crop-rect and --frame-packing options to x264 SEI
Fiona Glaser [Wed, 15 Dec 2010 21:00:14 +0000 (13:00 -0800)]
Add missing space to parameter SEI
Kieran Kunhya [Tue, 28 Dec 2010 00:54:28 +0000 (00:54 +0000)]
Fix typo in documentation
Anton Mitrofanov [Sat, 18 Dec 2010 16:29:18 +0000 (08:29 -0800)]
Fix redundant linebreaks in statsfile with weightp
Ramiro Polla [Wed, 15 Dec 2010 16:35:02 +0000 (14:35 -0200)]
Use cross_prefix for strings in endian test and as test
Anton Mitrofanov [Sun, 2 Jan 2011 19:36:53 +0000 (14:36 -0500)]
Fix checkasm test for quant in high bit depth
Eliminate some spurious failures.
Steven Walters [Fri, 31 Dec 2010 01:35:10 +0000 (20:35 -0500)]
Fix broken YV12 handling in the resize filter
Fiona Glaser [Thu, 6 Jan 2011 03:21:18 +0000 (22:21 -0500)]
Fix bug with negative lookahead mb costs in high bit depth
Daniel Kang [Tue, 4 Jan 2011 19:33:05 +0000 (14:33 -0500)]
Fix overflow in SSIM calculation in 10-bit
Anton Mitrofanov [Fri, 24 Dec 2010 19:52:57 +0000 (14:52 -0500)]
Fix some possible overflows in VFR ratecontrol with extreme timebases
Steven Walters [Sun, 9 Jan 2011 21:01:04 +0000 (16:01 -0500)]
Fix memory leak in lavf demuxer.
Leak only occurred with input files that have more than one video stream.
Fiona Glaser [Fri, 24 Dec 2010 22:28:42 +0000 (17:28 -0500)]
Fix satd predictors with high bit depth
Resulted in odd CRF-mode results with --no-mbtree, as well as suboptimal VBV handling.
Daniel Kang [Sat, 8 Jan 2011 04:05:50 +0000 (23:05 -0500)]
Fix compile error with high bit depth and disable-asm
Fiona Glaser [Sat, 18 Dec 2010 16:22:34 +0000 (08:22 -0800)]
Really fix gcc win32 misalignment crash
gcc's -fno-zero-initialized-in-bss only works if an explicit initializer (e.g. = {0}) is used.
Steven Walters [Sun, 12 Dec 2010 01:30:29 +0000 (20:30 -0500)]
Support for native Windows threads
Patch originally by Pegasys Inc.
Daniel Kang [Mon, 13 Dec 2010 22:15:12 +0000 (17:15 -0500)]
MMX/SSE2 high bit depth weight_cache/offset(sub|add) functions
Patch from Google Code-In.
Daniel Kang [Wed, 8 Dec 2010 22:56:22 +0000 (17:56 -0500)]
SSE2 high bit depth dequant functions
Patch from Google Code-In.
Daniel Kang [Wed, 8 Dec 2010 03:48:15 +0000 (22:48 -0500)]
SSE2 high bit depth zigzag functions
Patch from Google Code-In.
Daniel Alexandru Morie [Tue, 7 Dec 2010 14:11:02 +0000 (06:11 -0800)]
MMX/SSE2 versions of high bit depth store_interleave
Patch from Google Code-In.
Vittorio Giovara [Sat, 11 Dec 2010 04:43:00 +0000 (20:43 -0800)]
Add frame-packing SEI support for signalling 3D video
Fiona Glaser [Sat, 11 Dec 2010 11:48:59 +0000 (03:48 -0800)]
Allow 8x8dct+cavlc+lossless with subme>=6
Yasuhiro Ikeda [Thu, 9 Dec 2010 03:00:24 +0000 (12:00 +0900)]
Add interlaced/no-interlaced case to regression test script
Yasuhiro Ikeda [Thu, 9 Dec 2010 02:59:49 +0000 (11:59 +0900)]
Save more memory with weightp in >8-bit
Yasuhiro Ikeda [Thu, 9 Dec 2010 02:57:38 +0000 (11:57 +0900)]
.gitignore more untracked file types
Anton Mitrofanov [Tue, 7 Dec 2010 14:49:21 +0000 (17:49 +0300)]
Work around gcc/ld alignment bug on win32
Fixes problems due to misalignment of static zero arrays (win32 ld can't align .bss properly).
Daniel Kang [Tue, 7 Dec 2010 20:19:46 +0000 (15:19 -0500)]
Fix high bit depth intra pred functions
And re-enable them accordingly.
Patch from Google Code-In.
Fiona Glaser [Sat, 11 Dec 2010 21:37:09 +0000 (13:37 -0800)]
Fix weightp analysis with high bit depth
Oskar Arvidsson [Thu, 9 Dec 2010 11:19:57 +0000 (12:19 +0100)]
Fix build error in high depth
Caused by multiple definitions of x264_add8x8_idct_sse2.
Fiona Glaser [Tue, 7 Dec 2010 11:15:46 +0000 (03:15 -0800)]
Hotfix for high bit depth
Temporary fix for some unaligned access crashes.
Anton Mitrofanov [Tue, 7 Dec 2010 10:44:55 +0000 (13:44 +0300)]
Delete x264_config.h on distclean
Daniel Kang [Fri, 26 Nov 2010 00:44:56 +0000 (19:44 -0500)]
Tons of high bit depth intra predict asm
Patch from Google Code-In.
David Czech [Sun, 28 Nov 2010 01:34:32 +0000 (17:34 -0800)]
SSE2 high bit depth 8x8/16x16 idct/idct_dc
Patch from Google Code-In.
Ramiro Polla [Tue, 30 Nov 2010 04:17:23 +0000 (02:17 -0200)]
Create and install x264_config.h
This header can be used to determine the bit-depth and license of libx264.
Steven Walters [Thu, 14 Oct 2010 01:53:50 +0000 (21:53 -0400)]
Detect Avisynth initialization failures
Detect if there is a critical Avisynth initialization failure and print the associated error.
This, however, requires a feature present in the latest version of Avisynth alpha (2.6).
Previous versions are unaffected.
Fiona Glaser [Fri, 26 Nov 2010 06:12:07 +0000 (22:12 -0800)]
Automatically restrict QPs to avoid quantization (under|over)flow
--cqm jvt and similar should now work "out of the box" instead of requiring futzing with --qpmin.
Anton Mitrofanov [Sat, 4 Dec 2010 20:29:08 +0000 (23:29 +0300)]
Don't try to get timecodes if reading frame failed
This fixes "input timecode file missing data for frame" warning with piped input where we don't know total number of frames.
Oskar Arvidsson [Thu, 25 Nov 2010 22:05:21 +0000 (23:05 +0100)]
Fix possible overflow in sub4x4_dct in 10-bit builds
Fiona Glaser [Mon, 6 Dec 2010 22:19:09 +0000 (14:19 -0800)]
Fix bug in intra-refresh + threads
Intra refresh bar quality increase wasn't correctly applied.
Fiona Glaser [Mon, 6 Dec 2010 20:00:13 +0000 (12:00 -0800)]
Fix file handle leak in libx264 on error
Steven Walters [Sun, 10 Oct 2010 22:17:35 +0000 (18:17 -0400)]
Fix incompatible csp format issue
Problem occurred with unknown pixel formats and non mod2 resolutions in the resize filter.
Anton Mitrofanov [Sat, 27 Nov 2010 23:54:39 +0000 (15:54 -0800)]
Really fix fittobox resize rounding code
Yusuke Nakamura [Sun, 5 Dec 2010 00:31:01 +0000 (09:31 +0900)]
Fix regression in rev1549
Skip auto timebase denominator generation when generated timebase denominator exceeds UINT32_MAX.
Also fix double free.
Anton Mitrofanov [Sat, 27 Nov 2010 22:05:02 +0000 (01:05 +0300)]
Fix --tcfile-in if timecode v2 file starts from nonzero pts
Sean McGovern [Sat, 4 Dec 2010 06:30:51 +0000 (22:30 -0800)]
SPARC/Solaris build fixes
Fiona Glaser [Fri, 26 Nov 2010 00:47:29 +0000 (16:47 -0800)]
Fix typo in r1797
Tony Young [Thu, 25 Nov 2010 00:58:38 +0000 (16:58 -0800)]
Add Python regression test script
Patch from Google Code-In.
Alex Wright [Wed, 24 Nov 2010 10:19:51 +0000 (02:19 -0800)]
Make --weightp 1 a better speed tradeoff
Since fade analysis is now so fast, weightp 1 now does fade analysis but no reference duplication.
This is the opposite of what it used to do (reference duplication but no fade analysis).
This also gives weightp's better fade quality to faster presets (up to superfast).
Daniel Kang [Wed, 24 Nov 2010 01:29:37 +0000 (20:29 -0500)]
SSE versions of some high-bit-depth DCT functions
Our first Google Code-In patch!
Anton Mitrofanov [Tue, 23 Nov 2010 20:06:51 +0000 (23:06 +0300)]
Clean up weightp analysis function
Fiona Glaser [Sat, 20 Nov 2010 00:58:38 +0000 (16:58 -0800)]
Add API function to return max number of delayed frames
Fiona Glaser [Thu, 25 Nov 2010 21:01:33 +0000 (13:01 -0800)]
Copy field order flag in encoder_reconfig
Yasuhiro Ikeda [Wed, 24 Nov 2010 14:09:54 +0000 (23:09 +0900)]
Cosmetics in configure
Yasuhiro Ikeda [Mon, 22 Nov 2010 02:01:57 +0000 (11:01 +0900)]
Add some more info to `x264 --version`
Fiona Glaser [Sun, 21 Nov 2010 07:30:42 +0000 (23:30 -0800)]
Change qpmin default to 0
There's probably no real reason to keep it at 10 anymore, and lowering it allows AQ to pick lower quantizers in really flat areas.
Might help on gradients at high quality levels.
The previous value of 10 was arbitrary anyways.
Fiona Glaser [Thu, 25 Nov 2010 21:01:16 +0000 (13:01 -0800)]
Fix ticks_per_frame check for VFR input
Steven Walters [Mon, 22 Nov 2010 01:31:05 +0000 (10:31 +0900)]
Fix configure so that boolean configuration options are 1/0
There are many cases of 1/undef, not 1/0.
Sean McGovern [Sun, 21 Nov 2010 06:59:33 +0000 (01:59 -0500)]
Only build SPARC VIS asm if high bit-depth is disabled
Sean McGovern [Sun, 10 Oct 2010 23:34:18 +0000 (19:34 -0400)]
Fix build on SPARC Solaris 10
James Darnley [Sun, 21 Nov 2010 09:50:48 +0000 (10:50 +0100)]
Fix resize filter rounding code
Anton Mitrofanov [Mon, 22 Nov 2010 14:17:36 +0000 (17:17 +0300)]
Fix regression in chroma weightp
Missing cache calls could cause artifacts, encoder/decoder desync.
Fiona Glaser [Fri, 19 Nov 2010 23:40:23 +0000 (15:40 -0800)]
Fix some crashes with high bit depth
Not all arrays were sufficiently aligned.
Fiona Glaser [Sun, 14 Nov 2010 11:34:26 +0000 (03:34 -0800)]
Chroma weighted prediction
Like luma weighted prediction, dramatically improves compression in fades.
Up to 4-8db chroma PSNR gain in extreme cases (short, perfect fade-outs).
On actual videos, helps up to ~1% overall.
One example video with a decent number of fades (ef OP): 0.8% bitrate reduction overall, 7% bitrate reduction just counting chroma.
Fixes a lot of artifacts in fades at lower bitrates.
Original patch by Dylan Yudaken <dyudaken@gmail.com>.
Fiona Glaser [Thu, 18 Nov 2010 16:51:27 +0000 (08:51 -0800)]
Support custom cropping rectangles
Supposedly useful for 3D television applications.
Oskar Arvidsson [Sun, 14 Nov 2010 15:46:01 +0000 (16:46 +0100)]
Convert X264_HIGH_BIT_DEPTH to HIGH_BIT_DEPTH
Less verbose.
Oskar Arvidsson [Sat, 30 Oct 2010 18:16:33 +0000 (20:16 +0200)]
x86 asm for high-bit-depth pixel metrics
Overall speed change from these 6 asm patches: ~4.4x.
But there's still tons more asm to do -- patches welcome!
Breakdown from this patch:
~13x faster SAD than C.
~11.5x faster SATD than C (only MMX done).
~18.5x faster SA8D than C.
~19.2x faster hadamard_ac than C.
~8.3x faster SSD than C.
~12.4x faster VAR than C.
~3-4.2x faster intra SAD than C.
~7.9x faster intra SATD than C.
Fiona Glaser [Sun, 31 Oct 2010 02:13:05 +0000 (19:13 -0700)]
x86 asm for some high-bit-depth coefficient functions
~7.9x faster denoise than C.
~2.3x faster coeff_level_run than C.
~6.6x faster coeff_last than C.
~4.3x faster decimate_score than C.
Also improve checkasm's decimate_score test.
Oskar Arvidsson [Sun, 14 Nov 2010 02:33:30 +0000 (03:33 +0100)]
x86 asm for high-bit-depth motion compensation
~8x faster qpel MC than C.
~10x faster hpel than C.
Oskar Arvidsson [Thu, 4 Nov 2010 01:13:43 +0000 (02:13 +0100)]
x86 asm for high-bit-depth quant
~3.1-4.2x faster than C.