commit e381f6d0093504a545fe4d90e3a6f178c6877cc7 Author: Jason Garrett-Glaser Date: Mon Oct 12 18:40:28 2009 -0700 Fix glitches with slow-firstpass + weightb + multiref + 2pass Bug in r1277 encoder/encoder.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 9045fbed2d696e04d402fc8b545d761ec6c41d34 Author: Henrik Gramner Date: Mon Oct 12 15:44:13 2009 -0700 Simplify some code in b-adapt 2's trellis encoder/slicetype.c | 22 ++++++++++------------ 1 files changed, 10 insertions(+), 12 deletions(-) commit b47aca5ed2797b8b46a0bd83d58ffdb60dffc1ef Author: Jason Garrett-Glaser Date: Mon Oct 12 15:38:51 2009 -0700 Fix a very rare integer overflow in slicetype analysis Caused an assert failure when it occurred. Bug is as old as adaptive B-frames. encoder/slicetype.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 2ceb2cc6e6753328d959e42823b2e6059ed007a7 Author: Jason Garrett-Glaser Date: Mon Oct 12 13:14:19 2009 -0700 Reduce the aggressiveness of 2-pass VBV Now that B-frames are properly covered, we don't have to be as aggressive. This eliminates some issues with skyrocketing QPs in B-frames in 2-pass VBV. encoder/ratecontrol.c | 24 ++++++++++++++---------- 1 files changed, 14 insertions(+), 10 deletions(-) commit a65d36142b765516dd80a6bed5bff7444b24f4aa Author: Jason Garrett-Glaser Date: Mon Oct 12 11:29:23 2009 -0700 Fix regression: disable flash detection without B-frames encoder/slicetype.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 287641a7c54d525e0eb74925431541ffb5f9471d Author: Loren Merritt Date: Sat Oct 10 04:43:00 2009 +0000 change all dct arrays to 1d. the C standard doesn't allow you to iterate 1-dimensionally over 2d arrays, and nothing other than the dsp functions themselves cares about the 2dness of dct. this fixes a miscompilation in x264_mb_optimize_chroma_dc. common/arm/dct.h | 28 +++--- common/arm/quant-a.S | 12 +- common/arm/quant.h | 16 ++-- common/common.h | 6 +- common/dct.c | 271 ++++++++++++++++++++++++-------------------------- common/dct.h | 34 +++--- common/quant.c | 106 ++++++-------------- common/quant.h | 14 ++-- common/set.c | 20 ++-- common/x86/dct.h | 78 +++++++------- common/x86/quant.h | 48 +++++----- encoder/analyse.c | 4 +- encoder/macroblock.c | 166 +++++++++++++++--------------- encoder/macroblock.h | 4 +- encoder/rdo.c | 10 +- tools/checkasm.c | 90 ++++++++--------- 16 files changed, 427 insertions(+), 480 deletions(-) commit bcc9a4b2e520263b0ba85b61dd7dde78b35160e8 Author: Jason Garrett-Glaser Date: Sun Oct 11 20:17:50 2009 -0700 Add row-based VBV for B-frames While B-frames still aren't explicitly covered by ratecontrol, this should resolve issues of VBV underflows due to larger-than-expected B-frames. encoder/ratecontrol.c | 142 ++++++++++++++++++++++-------------------------- encoder/slicetype.c | 20 ++++++- 2 files changed, 83 insertions(+), 79 deletions(-) commit 7182ae8d08acef6153cad9b9c27efb4fa985a657 Author: Jason Garrett-Glaser Date: Sat Oct 10 17:35:03 2009 -0700 Improve VBV, fix bug in 2-pass VBV introduced in MB-tree Bug caused AQ'd row/frame costs to not be calculated (and thus caused underflows). Also make VBV more aggressive with more threads in 2-pass mode. Finally, --ratetol now affects VBV aggressiveness (higher is less aggressive). encoder/ratecontrol.c | 10 ++++++++-- x264.c | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) commit 60c630c01dd4cb125a2bcc08da88873ce3a41dbc Author: Anton Mitrofanov Date: Thu Oct 8 14:55:26 2009 -0700 Optimize exp2fix8 Slightly faster and more accurate rounding. common/common.h | 6 +++--- encoder/analyse.c | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) commit e8b83b788ffe9af4b48b049450c387069fda1266 Author: Jason Garrett-Glaser Date: Thu Oct 8 04:27:11 2009 -0700 Avoid scenecuts in flashes and similar situations "Flashes" are defined as any scene which lasts a very short period before a previous scene returns. A common example of this is of course a camera flash. Accordingly, look ahead during scenecut analysis and rule out the possibility of certain frames being scenecuts. Also handles cases of tons of short scenes in sequence and avoids making those scenecuts as well. Can only catch flashes of 1 frame in length with b-adapt 1. With b-adapt 2, can catch flashes of length --bframes. Speed cost should be negligible. common/frame.c | 1 + common/frame.h | 1 + encoder/slicetype.c | 52 +++++++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 48 insertions(+), 6 deletions(-) commit fc4926a2d9a4e355ea6a24c962731f5f8c6bd83a Author: Jason Garrett-Glaser Date: Tue Oct 6 22:15:10 2009 -0700 Fix bug where x264 generated non-compliant bitstreams with insane SAR values encoder/encoder.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 39f6499e3abcf473bdcbade38aba9a7490470e6a Author: Loren Merritt Date: Wed Sep 30 22:39:13 2009 +0000 rm msvc project files and related ifdefs build/win32/libx264.vcproj | 995 -------------------------------------------- build/win32/x264.sln | 30 -- build/win32/x264.vcproj | 178 -------- common/mdate.c | 5 +- common/osdep.h | 19 +- doc/standards.txt | 4 +- encoder/analyse.c | 2 - encoder/set.c | 2 - extras/getopt.c | 21 +- muxers.c | 3 - x264.c | 3 - 11 files changed, 6 insertions(+), 1256 deletions(-) commit 5cda2cf81a75bfd70a5529d3b6fb01b0a7897a5e Author: Holger Lubitz Date: Tue Oct 6 15:17:34 2009 -0700 SSE4 version of 4x4 idct 27->24 clocks on Nehalem. This is really just an excuse to use "movsd" in a real function. Add some comments to subsum-related macros in x86util. common/dct.c | 4 +++ common/x86/dct-a.asm | 55 ++++++++++++++++++++++++++++++++++++++++++++++++ common/x86/dct.h | 1 + common/x86/x86util.asm | 25 ++++++++++++++++++--- 4 files changed, 81 insertions(+), 4 deletions(-) commit d971ace393dc49b09b930aa22e8b0c70f8a6f386 Author: Jason Garrett-Glaser Date: Sun Oct 4 19:15:28 2009 -0700 Constrained intra prediction support Enable with --constrained-intra. Significantly reduces compression, but required for the base layer of SVC encodes and maybe some other use-cases. Commit sponsored by a media streaming company that wishes to remain anonymous. common/common.c | 5 +++++ common/common.h | 1 + common/macroblock.c | 35 +++++++++++++++++++++++------------ encoder/analyse.c | 8 ++++---- encoder/set.c | 2 +- x264.c | 2 ++ x264.h | 3 ++- 7 files changed, 38 insertions(+), 18 deletions(-) commit a88f2d78533af5ff38c01054cf336bdd7f2cf27c Author: Jason Garrett-Glaser Date: Sun Oct 4 00:48:27 2009 -0700 Slightly improve non-RD p8x8 mode decision Subpartition costs are effectively zero in CABAC if sub-8x8 search is off. encoder/analyse.c | 9 ++++++--- 1 files changed, 6 insertions(+), 3 deletions(-) commit c318d8fa1e83b8807b66d45b225c905f480703ce Author: Jason Garrett-Glaser Date: Sat Oct 3 00:59:02 2009 -0700 Reorder reference frames optimally on second pass About +0.1-0.2% compression at normal bitrates, up to +1% at very low bitrates. Only works if the first pass uses the same number of refs as the second (i.e. not with fast first pass). Thus, only worthwhile at insanely slow speeds: as such, enable slow-firstpass by default with preset placebo. Note that this changes the stats file format! encoder/encoder.c | 75 ++++++++++++++++++++++++++----------------------- encoder/ratecontrol.c | 62 +++++++++++++++++++++++++++++++++++++++- encoder/ratecontrol.h | 1 + x264.c | 1 + 4 files changed, 102 insertions(+), 37 deletions(-) commit 4f3ad6a28e1ac017103a77d135a48aaad114d262 Author: Jason Garrett-Glaser Date: Wed Sep 30 12:13:16 2009 -0700 Fix typo in ratecontrol_summary encoder/ratecontrol.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 8be3935a8cef95fe94e0b054f3b6cb904a1f363a Author: Jason Garrett-Glaser Date: Tue Sep 29 23:32:07 2009 -0700 Clip log2_max_frame_num It's still much higher than it needs to be, but that will be fixed with the upcoming MMCO patch. Also make sure we don't write too large a frame_num or poc in slice header. encoder/encoder.c | 4 ++-- encoder/set.c | 6 ++---- 2 files changed, 4 insertions(+), 6 deletions(-) commit 83ca0f2cec3909b38d55e664bcd3f5c4b1546de8 Author: Anton Mitrofanov Date: Sat Sep 26 12:44:53 2009 -0700 Fix some issues with 3-pass statsfile handling The value of i_frame during encoder_close was incorrect. encoder/encoder.c | 17 +++++++++++++---- 1 files changed, 13 insertions(+), 4 deletions(-) commit a4334d41ea61b70fcff308ba988193309bb5608a Author: Anton Mitrofanov Date: Sat Sep 26 12:42:46 2009 -0700 Fix ctrl-C termation message with few frames encoded x264.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit db518eae22e57b37c806625685faba2f2a857f88 Author: Jason Garrett-Glaser Date: Fri Sep 25 16:23:52 2009 -0700 Add support for single-frame VBV, improve compliance This allows both constant-framesize and capped-framesize encoding. Literal constant framesize isn't actually supported yet due to the lack of filler support. Example with 30fps video: --vbv-bufsize 200 --vbv-maxrate 6000 will ensure that no frame is ever larger than 200 kilobits. One example use-case of this is for zero-delay streaming where bandwidth costs need to be minimized. If every frame is smaller than 200 kilobits and the client has a 6 megabit connection, every single frame can be instantly sent to the client and handled without any decoder-side buffer. Fix a mistake in VBV calculation--this may have caused the VBV to be slightly non-compliant in some situations without x264 realizing it. Add primitive prediction handling for rows with quantizers lower than their reference. This slightly improves VBV in CBR mode. Various other minor improvements to VBV, mostly to make single-frame VBV work. Commit sponsored by a media streaming company that wishes to remain anonymous. encoder/ratecontrol.c | 141 ++++++++++++++++++++++++++++++------------------- encoder/slicetype.c | 10 ++++ 2 files changed, 96 insertions(+), 55 deletions(-) commit 496d79dfcb90066f0254e07d593471f2c885a153 Author: Jason Garrett-Glaser Date: Thu Sep 24 08:40:45 2009 -0700 Fix 10l in API change frame_num was set to 1, not 0, for the first frame. This broke spec compliance. Didn't actually seem to cause any problems though except for breaking decoding on Quicktime. encoder/encoder.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) commit 2b4e823809617d605bc058acba681c37e14e0ed0 Author: Steven Walters Date: Wed Sep 23 15:04:02 2009 -0700 Allow user-set FPS for inputs other than YUV x264.c | 20 +++++++++++++++++--- 1 files changed, 17 insertions(+), 3 deletions(-) commit e8b9dfe479a6a945d9cd91b4aae8a3cba06b9db9 Author: Anton Mitrofanov Date: Wed Sep 23 12:31:53 2009 -0700 Improve threaded frame handling Avoid unnecessary cond_wait common/common.h | 2 +- common/frame.c | 9 --------- common/frame.h | 1 - encoder/encoder.c | 10 +++++++--- encoder/lookahead.c | 22 ++++++++++++++-------- 5 files changed, 22 insertions(+), 22 deletions(-) commit d5429261cc2a2205d225b0f0c0802d3b565eb7bd Author: Jason Garrett-Glaser Date: Tue Sep 22 17:30:19 2009 -0700 Attempt to detect miscompilation due to bug in gcc 4.2 I don't know if this bug still affects latest x264, but it can't hurt to try to detect it. Accordingly refuse to open the encoder if detected. Apparently VLC (on Windows) has been distributed for some time with a completely broken x264 due to the use of a completely broken compiler (gcc 4.2). In particular, the MV costs seem to be calculated incorrectly on win32 when linking from an application compiled without -ffast-math to an application with -ffast-math. I am not entirely certain why this occurs, but the result is, unsurprisingly, encoding quality that makes MPEG-2 look good, due to the motion search being completely broken. encoder/encoder.c | 5 +++++ 1 files changed, 5 insertions(+), 0 deletions(-) commit c62060d242879d8271c22a486b286b91147d2ebf Author: Steven Walters Date: Tue Sep 22 12:14:23 2009 -0700 Really fix encoder_close crash this time Not-entirely-fixed in r1253. encoder/lookahead.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit d166e7f3f8f68a768cf60cb4512f9efe8623b5cb Author: Jason Garrett-Glaser Date: Sun Sep 20 21:58:08 2009 -0700 Check for 16x16 partitions masquerading as smaller ones Saves a few bits when using qpel-RD. encoder/analyse.c | 29 +++++++++++++++++++++-------- 1 files changed, 21 insertions(+), 8 deletions(-) commit c49e14f21c7fd9f7b5d1a82f29cb3b6a1c8ecb70 Author: David Conrad Date: Sun Sep 20 01:16:51 2009 -0700 Update config.guess/sub; add Snow Leopard support config.guess | 252 ++++++++++++++++++++++++++------------------------------- config.sub | 125 +++++++++++++++++++++++------ 2 files changed, 216 insertions(+), 161 deletions(-) commit d52d2db898fa4e7790964cd656a1da3a0c005881 Author: Jason Garrett-Glaser Date: Sat Sep 19 09:50:59 2009 -0700 Fix integer overflow in 2-pass VBV Bug caused slight undersizing in 2-pass mode in some cases. encoder/ratecontrol.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit ca95d6198f5c21ff6904a842b52b893d0fee6aab Author: Jason Garrett-Glaser Date: Fri Sep 18 14:28:31 2009 -0700 Fix bug with various bizarre commandline combinations and mbtree Second pass would have mbtree on even though the first pass didn't (and thus encoding would immediately fail). encoder/encoder.c | 7 +++---- 1 files changed, 3 insertions(+), 4 deletions(-) commit 91f3e81cf9e030f860abdfe0e0c0a37c5e2a4ac2 Author: Jason Garrett-Glaser Date: Thu Sep 17 13:02:02 2009 -0700 Add intra prediction modes to output stats Also eliminate some NANs in stat output with intra-only encoding. Marginal speedup: disable stat calculation if log level is below X264_LOG_INFO. Various minor cosmetics. common/common.h | 2 + common/macroblock.c | 2 +- encoder/encoder.c | 136 +++++++++++++++++++++++++++++++++++--------------- 3 files changed, 98 insertions(+), 42 deletions(-) commit c91a3c98a72492a5e167cb6c98c1807fde76c528 Author: Jason Garrett-Glaser Date: Wed Sep 16 21:34:48 2009 -0700 Overhaul syntax in muxers.c/matroska.c The inconsistent syntax in these files has finally come to an end. matroska.c | 847 ++++++++++++++++++++++++++++++++---------------------------- matroska.h | 26 +- muxers.c | 566 +++++++++++++++++++++-------------------- 3 files changed, 749 insertions(+), 690 deletions(-) commit 031e25d8cc909af2d138f9fedc8252961f34a6ac Author: Jason Garrett-Glaser Date: Wed Sep 16 20:00:00 2009 -0700 Major API change: encapsulate NALs within libx264 libx264 now returns NAL units instead of raw data. x264_nal_encode is no longer a public function. See x264.h for full documentation of changes. New parameter: b_annexb, on by default. If disabled, startcodes are replaced by sizes as in mp4. x264's VBV now works on a NAL level, taking into account escape codes. VBV will also take into account the bit cost of SPS/PPS, but only if b_repeat_headers is set. Add an overhead tracking system to VBV to better predict the constant overhead of frames (headers, NALU overhead, etc). common/common.c | 33 +++++++++---- common/common.h | 8 ++- encoder/encoder.c | 123 +++++++++++++++++++++++++++++++----------------- encoder/ratecontrol.c | 22 ++++---- encoder/ratecontrol.h | 2 +- x264.c | 15 +------ x264.h | 35 +++++++++----- 7 files changed, 144 insertions(+), 94 deletions(-) commit dd026f296748ef370f1651fdbddec6d9238c6cc0 Author: Jason Garrett-Glaser Date: Mon Sep 14 12:30:38 2009 -0700 Add missing fclose for mbtree input statsfile on second pass Bug report by VFRmaniac encoder/ratecontrol.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 8cbb85d7682f78af892ea2f5b0362cc1ef583c02 Author: Jason Garrett-Glaser Date: Mon Sep 14 11:07:23 2009 -0700 Improve progress indicator behavior Progress indicator will now indicate based on output frame, not input frame. x264.c | 58 +++++++++++++++++++++++++++++++++------------------------- 1 files changed, 33 insertions(+), 25 deletions(-) commit b5770ea28a83141252be66870cfabc0ceae626b7 Author: Jason Garrett-Glaser Date: Mon Sep 14 03:21:14 2009 -0700 Update yasm configure check lzcnt apparently requires yasm 0.6.2. configure | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) commit 935488e22376c33fbdc38909d9a119ac092e8878 Author: Jason Garrett-Glaser Date: Sun Sep 13 01:02:37 2009 -0700 Make MV costs global instead of static Fixes some extremely rare threading race conditions and makes the code cleaner. Downside: slightly higher memory usage when calling multiple encoders from the same application. common/common.h | 8 ++++ common/osdep.h | 2 + encoder/analyse.c | 92 ++++++++++++++++++++++++++---------------------- encoder/analyse.h | 5 ++- encoder/encoder.c | 20 +++++----- encoder/me.c | 24 ++++++------ encoder/me.h | 2 +- encoder/ratecontrol.c | 2 + encoder/slicetype.c | 14 ++------ x264.c | 5 ++- 10 files changed, 94 insertions(+), 80 deletions(-) commit 4f6a00704c3e36648a32404aa729a4beff438b38 Author: Jason Garrett-Glaser Date: Fri Sep 11 17:30:14 2009 -0700 Don't print scenecut message multiple times in verbose mode Occurred mostly with b-adapt 2. encoder/slicetype.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) commit 411ee507328890fb1fde96b37b6eef854d27101a Author: Jason Garrett-Glaser Date: Thu Sep 10 02:55:21 2009 -0700 Optimize rounding of luma and chroma DC coefficients Reduce bitrate mostly-losslessly at low quantizers. In some rare cases, bitrate reduction may be as high as 10%. Luma rounding optimization (helps much less than chroma) requires trellis. encoder/macroblock.c | 80 +++++++++++++++++++++++++++++++++++++++++++++---- encoder/rdo.c | 9 +++++- 2 files changed, 81 insertions(+), 8 deletions(-) commit 08c83969dd45a6e550aaa3be11c69bb74d7a478c Author: Steven Walters Date: Wed Sep 9 12:19:40 2009 -0700 Fix crash if encoder_close is called before delayed frames are flushed Also no longer flush frames when ctrl-Cing x264, so x264 will close faster. encoder/lookahead.c | 2 +- x264.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) commit b9b7c12eed6eb69b9df7ccd1289df5ce9c130a81 Author: Jason Garrett-Glaser Date: Sun Sep 6 14:55:48 2009 -0700 Improve x264 help Now has three help options: --help, --longhelp, and --fullhelp. --help only shows the most basic options; most users should not need more than these. Add usage examples. Fix typo in a comment. encoder/me.c | 2 +- x264.c | 241 ++++++++++++++++++++++++++++++++-------------------------- 2 files changed, 134 insertions(+), 109 deletions(-) commit e553a4cc858649b951e9dee456c717f5f5dcd3e9 Author: Jason Garrett-Glaser Date: Sat Sep 5 19:22:21 2009 -0700 Factor out a redundant RD call in qpel-RD Fixes a problem that was supposed to be, but didn't, get fully fixed in r1238. encoder/analyse.c | 6 +++--- encoder/me.c | 7 +++++-- 2 files changed, 8 insertions(+), 5 deletions(-) commit 643cef5ea8a089a986e1fe17238ce28b1931ea22 Author: Jason Garrett-Glaser Date: Sat Sep 5 18:56:18 2009 -0700 Fix RD early-skip Small quality improvement and speedup, was broken by r1214. encoder/analyse.c | 2 ++ 1 files changed, 2 insertions(+), 0 deletions(-) commit 83a033e15d14fcf954c4cdfa3c7c6cd64808c1f9 Author: Jason Garrett-Glaser Date: Sat Sep 5 18:55:46 2009 -0700 Faster CAVLC mb header writing for B macroblocks encoder/cavlc.c | 70 ++++++++++++++++++++++-------------------------------- 1 files changed, 29 insertions(+), 41 deletions(-) commit e390cbf993d180b1db413746272e232ac3068dad Author: David Conrad Date: Wed Sep 2 16:14:59 2009 -0700 Compile fixes for pre-ARMv6T2 and/or PIC common/arm/asm.S | 11 +++++++++++ common/arm/deblock-a.S | 2 ++ common/arm/mc-a.S | 1 + common/arm/pixel-a.S | 11 ++--------- common/arm/predict-a.S | 4 +--- common/arm/quant-a.S | 2 +- configure | 10 +++++++--- 7 files changed, 25 insertions(+), 16 deletions(-) commit b3efbe51032a0e953140f86423b533b2b6f7101c Author: Steven Walters Date: Wed Sep 2 12:33:50 2009 -0700 Change priority handling on some OSs Instead of setting the lookahead thread to max priority, lower all the other threads' priorities instead. This is particularly useful when the "max priority" is "realtime", as in Windows, which can cause some problems. common/osdep.h | 14 +++++++++++++- encoder/lookahead.c | 16 +--------------- 2 files changed, 14 insertions(+), 16 deletions(-) commit 5b3c89c592e412fc02fd8001ee361ea50c249153 Author: Steven Walters Date: Tue Sep 1 18:46:51 2009 -0700 Threaded lookahead Move lookahead into a separate thread, set to higher priority than the other threads, for optimal performance. Reduces the amount that lookahead bottlenecks encoding, greatly increasing performance with lookahead-intensive settings (e.g. b-adapt 2) on many-core CPUs. Buffer size can be controlled with --sync-lookahead, which defaults to auto (threads+bframes buffer size). Note that this buffer is separate from the rc-lookahead value. Note also that this does not split lookahead itself into multiple threads yet; this may be added in the future. Additionally, split frames into "fdec" and "fenc" frame types and keep the two separate. This split greatly reduces memory usage, which helps compensate for the larger lookahead size. Extremely special thanks to Michael Kazmier and Alex Giladi of Avail Media, the original authors of this patch. Makefile | 2 +- common/common.c | 8 ++ common/common.h | 26 +++-- common/cpu.h | 8 +- common/frame.c | 202 +++++++++++++++++++++++------------- common/frame.h | 25 ++++- common/macroblock.c | 2 +- common/osdep.h | 13 +++ common/x86/cpu-a.asm | 4 +- encoder/analyse.h | 8 ++ encoder/encoder.c | 127 +++++++++------------- encoder/lookahead.c | 278 +++++++++++++++++++++++++++++++++++++++++++++++++ encoder/ratecontrol.c | 8 +- encoder/slicetype.c | 107 ++++++++++---------- x264.c | 4 +- x264.h | 4 +- 16 files changed, 598 insertions(+), 228 deletions(-) commit 326113b4f57de6c5a2599c047ab5c7762b1a4b13 Author: Jason Garrett-Glaser Date: Tue Sep 1 11:36:54 2009 -0700 Force a link error in case of incompatible API This is because the number of bug reports due to miscompiled ffmpeg builds is reaching critical mass. The name of x264_encoder_open is now #defined based on the current X264_BUILD. Note that this changes the calling convention required for dlopen, but not for ordinary calls to x264_encoder_open. encoder/encoder.c | 2 +- x264.h | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) commit 775a12cdec150e00813d6df5dbec17c5da385549 Author: Jason Garrett-Glaser Date: Mon Aug 31 22:44:45 2009 -0700 Get rid of "CBR" descriptor from qcomp Though technically accurate in some vague way, I have never actually seen this option used correctly, rather it has been used by hundreds of people who can't read the documentation and believe that qcomp=0 is what should be used for CBR encoding. x264.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) commit 2cd00546cdae867265fbbb58304087f776160102 Author: Loren Merritt Date: Sun Aug 30 20:49:07 2009 +0000 Faster me=tesa But it still spends all too much time in me_search_ref rather than asm. encoder/me.c | 50 +++++++++++++++++++++++--------------------------- encoder/me.h | 7 +++++++ 2 files changed, 30 insertions(+), 27 deletions(-) commit 4d553edf178bf0ae01547731a48e1fb08c5cc1f4 Author: Jason Garrett-Glaser Date: Mon Aug 31 06:36:41 2009 -0700 Multi-slice encoding support Slicing support is available through three methods (which can be mixed): --slices sets a number of slices per frame and ensures rectangular slices (required for Blu-ray). Overridden by either of the following options: --slice-max-mbs sets a maximum number of macroblocks per slice. --slice-max-size sets a maximum slice size, in bytes (includes NAL overhead). Implement macroblock re-encoding support to allow highly accurate slice size limitation. Might be useful for other things in the future, too. Makefile | 6 +- common/common.c | 21 ++++- common/common.h | 14 ++-- common/macroblock.c | 4 +- encoder/analyse.c | 46 ++++++---- encoder/encoder.c | 232 +++++++++++++++++++++++++++++++++++++------------ encoder/ratecontrol.c | 14 ++-- encoder/slicetype.c | 1 - x264.c | 21 +++-- x264.h | 7 ++- 10 files changed, 261 insertions(+), 105 deletions(-) commit bfcb4f6c1d49505146be77cf57dcb72f0534907d Author: Jason Garrett-Glaser Date: Sat Aug 29 17:09:55 2009 -0700 Fix a valgrind warning in b-adapt 2 encoder/slicetype.c | 11 +++++++---- 1 files changed, 7 insertions(+), 4 deletions(-) commit 35627b63c31bcd143413c10dce1ead8015448f7b Author: Loren Merritt Date: Sat Aug 29 10:31:08 2009 +0000 fix asm symbols for oprofile (regression in r1221) Makefile | 4 +--- 1 files changed, 1 insertions(+), 3 deletions(-) commit 3db6c9da402858abfcbe4aaf676a1b1f89e7f093 Author: Anton Mitrofanov Date: Fri Aug 28 15:07:12 2009 -0700 Fix bug in intra analysis in B-frames i8x8/i4x4 never got analysed when fast_intra was toggled and RD was off; up to a 2-3% quality improvement in non-RD mode. With this bug dating back to r369, this is probably the second-oldest bug ever fixed in x264. encoder/analyse.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) commit d551106235ce955697531df85aeebb996309ea81 Author: Anton Mitrofanov Date: Fri Aug 28 14:56:44 2009 -0700 Fix bug in b16x16 qpel RD Incorrect cost was used to initialize the search. encoder/analyse.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) commit 1b2a1c699a0d5b93d13d9bb5b118b02d261ba193 Author: Jason Garrett-Glaser Date: Thu Aug 27 15:21:22 2009 -0700 Check minimum chroma QP in addition to luma QP during CQM init Correctly error out if the implied minimum chroma QP is too low. Add missing emms to checkasm macroblock_tree_propagate test. common/set.c | 16 ++++++++++++---- encoder/encoder.c | 4 ++-- tools/checkasm.c | 3 +++ 3 files changed, 17 insertions(+), 6 deletions(-) commit e6c973ac5b46fc0d9843d1774b647c97c852c963 Author: Jason Garrett-Glaser Date: Thu Aug 27 14:16:45 2009 -0700 Faster mbtree propagate and x264_log2, less memory usage Avoid an int->float conversion with a small table. Change lowres_inter_types to a bitfield; cut its size by 75%. Somewhat lower memory usage with lots of bframes. Make log2/exp2 tables global to avoid duplication. common/common.h | 32 +++++--------------------------- common/frame.c | 2 +- common/frame.h | 1 + encoder/analyse.c | 31 +++++++++++++++++++++++++++++++ encoder/slicetype.c | 30 +++++++++++++++++------------- 5 files changed, 55 insertions(+), 41 deletions(-) commit 448b1387254bbf186b83db0fd393477ea1d01a55 Author: Jason Garrett-Glaser Date: Wed Aug 26 20:30:47 2009 -0700 Fix keyint=1 + VBV + rc-lookahead encoder/encoder.c | 2 ++ encoder/slicetype.c | 2 +- 2 files changed, 3 insertions(+), 1 deletions(-) commit 0d8efaac52baab0bac67ed0daac07f80110883a4 Author: Jason Garrett-Glaser Date: Wed Aug 26 20:16:10 2009 -0700 Faster x264_exp2fix8 22->13 cycles on Core 2 with mfpmath=sse common/common.h | 13 ++++++------- encoder/ratecontrol.c | 2 +- encoder/slicetype.c | 9 +++++---- 3 files changed, 12 insertions(+), 12 deletions(-) commit ee95ca7970140e8b99af233b03828feb250f0af0 Author: Loren Merritt Date: Thu Aug 27 06:05:57 2009 +0000 compile x86 with fpmath=sse by default configure | 3 +++ encoder/encoder.c | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) commit c8edc12043086b8f52a3b6b2176b70e0d48ff271 Author: David Conrad Date: Mon Aug 24 17:17:41 2009 -0700 ARM configure: enable NEON-related options by default When compiling for ARM, x264 will compile by default for Cortex A8 unless specified otherwise. To compile for pre-ARMv6, --disable-asm is required. configure | 7 ++++++- 1 files changed, 6 insertions(+), 1 deletions(-) commit 533b473f71f2ccd1f73e3d25cd57fca06ef553b5 Author: Jason Garrett-Glaser Date: Mon Aug 24 03:28:11 2009 -0700 2-pass VBV fixes Properly run slicetype frame cost with 2pass + MB-tree. Slash the VBV rate tolerance in 2-pass mode; increasing it made sense for the highly reactive 1-pass VBV algorithm, but not for 2-pass. 2-pass's planned frame sizes are guaranteed to be reasonable, since they are based on a real first pass, while 1-pass's, based on lookahead SATD, cannot always be trusted. encoder/ratecontrol.c | 7 +++++-- encoder/slicetype.c | 15 ++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) commit 9754af3c04d2de7b2404132a2c533c9071b6257b Author: David Conrad Date: Mon Aug 24 01:38:42 2009 -0700 GSOC merge part 8: ARM NEON intra prediction assembly functions (partial) 4x4 dc/h/ddr/ddl, 8x8 dc/h, 8x8c h/v, 16x16 dc/h/v Makefile | 5 +- common/arm/predict-a.S | 272 ++++++++++++++++++++++++++++++++++++++++++++++++ common/arm/predict-c.c | 83 +++++++++++++++ common/arm/predict.h | 31 ++++++ common/predict.c | 19 ++++ 5 files changed, 408 insertions(+), 2 deletions(-) commit a81c398c8e7f9fea2c7848f866007bc6fbb74304 Author: David Conrad Date: Mon Aug 24 01:10:30 2009 -0700 GSOC merge part 7: ARM NEON deblock assembly functions (partial) Originally written for ffmpeg by Mans Rullgard; ported by David. Luma and chroma inter deblocking; no intra yet. Makefile | 2 +- common/arm/asm.S | 22 ++++ common/arm/deblock-a.S | 281 ++++++++++++++++++++++++++++++++++++++++++++++++ common/frame.c | 17 +++ 4 files changed, 321 insertions(+), 1 deletions(-) commit dcd9ac9bae832a98d79bf5fc579c9f6c7bfd81a1 Author: David Conrad Date: Mon Aug 24 00:58:42 2009 -0700 GSOC merge part 6: ARM NEON quant assembly functions (partial) (de)quant 4x4, (de)quant 8x8, (de)quant DC, coeff_last Makefile | 2 +- common/arm/quant-a.S | 352 ++++++++++++++++++++++++++++++++++++++++++++++++++ common/arm/quant.h | 42 ++++++ common/quant.c | 22 +++ 4 files changed, 417 insertions(+), 1 deletions(-) commit e695eda3765caa2b4b9825aeffecdb13e107b3b4 Author: David Conrad Date: Sun Aug 23 02:03:48 2009 -0700 GSOC merge part 5: ARM NEON dct assembly functions (i)dct4x4dc, (i)dct4x4, (i)dct8x8, (i)dct_dc, zigzag_scan_frame_4x4 Makefile | 3 +- common/arm/asm.S | 7 + common/arm/dct-a.S | 663 ++++++++++++++++++++++++++++++++++++++++++++++++++++ common/arm/dct.h | 49 ++++ common/dct.c | 31 +++ 5 files changed, 752 insertions(+), 1 deletions(-) commit 2ac8b8deca4475200d279cf711060e7dfef7a252 Author: David Conrad Date: Sun Aug 23 01:35:10 2009 -0700 GSOC merge part 4: ARM NEON mc assembly functions prefetch, memcpy_aligned, memzero_aligned, avg, mc_luma, get_ref, mc_chroma, hpel_filter, frame_init_lowres Makefile | 3 +- common/arm/mc-a.S | 1044 +++++++++++++++++++++++++++++++++++++++++++++++++++++ common/arm/mc-c.c | 185 ++++++++++ common/arm/mc.h | 28 ++ common/mc.c | 6 + 5 files changed, 1265 insertions(+), 1 deletions(-) commit 8a84fd9d367b7660a34ba575eec17636b2b6a85a Author: David Conrad Date: Sat Aug 22 23:55:29 2009 -0700 GSOC merge part 3: ARM NEON pixel assembly functions SAD, SADX3/X4, SSD, SATD, SA8D, Hadamard_AC, VAR, VAR2, SSIM Makefile | 2 +- common/arm/asm.S | 92 ++++ common/arm/cpu-a.S | 106 +++++ common/arm/pixel-a.S | 1250 ++++++++++++++++++++++++++++++++++++++++++++++++++ common/arm/pixel.h | 69 +++ common/pixel.c | 48 ++ 6 files changed, 1566 insertions(+), 1 deletions(-) commit 00d9fb7d0643748a0f1de33ca15eb300172c07f7 Author: David Conrad Date: Sat Aug 22 23:40:33 2009 -0700 GSOC merge part 2: ARM stack alignment Neither GCC nor ARMCC support 16 byte stack alignment despite the fact that NEON loads require it. These macros only work for arrays, but fortunately that covers almost all instances of stack alignment in x264. common/cabac.h | 2 +- common/common.h | 44 +++++++++++----------- common/frame.c | 2 +- common/macroblock.c | 6 ++-- common/osdep.h | 17 +++++++-- common/ppc/deblock.c | 4 +- common/ppc/mc.c | 4 +- common/ppc/pixel.c | 92 ++++++++++++++++++++++++------------------------ common/x86/predict-c.c | 8 ++-- encoder/analyse.c | 38 ++++++++++---------- encoder/cabac.c | 2 +- encoder/cavlc.c | 2 +- encoder/macroblock.c | 32 ++++++++-------- encoder/me.c | 20 +++++----- encoder/me.h | 6 ++-- encoder/rdo.c | 2 +- encoder/slicetype.c | 6 ++-- tools/checkasm.c | 36 +++++++++--------- 18 files changed, 167 insertions(+), 156 deletions(-) commit 3b4ee7359abdeea0337ec76206518a9d8f8f2140 Author: David Conrad Date: Thu Aug 20 20:44:09 2009 -0700 Fix unaligned accesses in bitstream writer Fixes x264 on CPUs with no unaligned access support (e.g. SPARC). Improves performance marginally on CPUs with penalties for unaligned stores (e.g. some x86). common/bs.h | 26 +++++++++----------------- encoder/cavlc.c | 4 ++++ encoder/encoder.c | 2 ++ 3 files changed, 15 insertions(+), 17 deletions(-)