x264 Video Codec Changelog

What's new in x264 Video Codec r2334

May 21, 2013
  • OpenCL support improvement/refactoring
  • Autoload the OpenCL library so that it's not required to run an openCL-enabled
  • build of x264.
  • Update X264_BUILD, which should have been changed with the first patch.

New in x264 Video Codec r2310 (May 7, 2013)

  • Fix two bugs in slice-min-mbs and slices-max
  • Slices-max broke slice-max-size when slice-max wasn't used.
  • Slice-min-mbs broke in rare cases near the end of a threadslice.

New in x264 Video Codec r1913 (Mar 3, 2011)

  • Fix 10L in r1912
  • SSSE3 code got used in MMX/SSE2 and vice versa (in hpel).

New in x264 Video Codec r1912 (Mar 3, 2011)

  • Add AVX functions where 3+ arg commands are useful

New in x264 Video Codec r1911 (Mar 3, 2011)

  • Frame-packing 3D: don't place scenecuts on right views
  • Caused problems for some players.

New in x264 Video Codec r1910 (Mar 3, 2011)

  • Improve slice-max-size handling of escape bytes
  • More accurate but a bit slower. Helps deal with a few obnoxious corner cases where the current algorithm failed

New in x264 Video Codec r1909 (Mar 3, 2011)

  • Use bs_write1 wherever possible in header writing

New in x264 Video Codec r1908 (Mar 3, 2011)

  • Remove obsolete mvcost init code

New in x264 Video Codec r1907 (Mar 3, 2011)

  • Fix memory leak on encoder close if not all frames are flushed

New in x264 Video Codec r1906 (Mar 3, 2011)

  • Fix signedness bug in CPU detection
  • Luckily didn't affect anything due to C signedness rules.

New in x264 Video Codec r1905 (Mar 3, 2011)

  • Fix dumb bug caused by stray semicolon
  • Caused noise reduction to run incorrectly in part of RD, but probably had no effect.

New in x264 Video Codec r1904 (Mar 3, 2011)

  • Fix malloc of zero size
  • Caused x264 to fail with some settings on systems that return a NULL pointer for malloc(0), like Solaris

New in x264 Video Codec r1903 (Mar 3, 2011)

  • Fix crash in mp4 muxer after failure of x264_encoder_open

New in x264 Video Codec r1902 (Mar 3, 2011)

  • Fix shadowed variable warning in ffms.c

New in x264 Video Codec r1901 (Mar 3, 2011)

  • Fix some Intel compiler warnings

New in x264 Video Codec r1900 (Mar 3, 2011)

  • Fix 10L in r1886
  • Aspect ratio can't be set before SPS is initted.

New in x264 Video Codec r1899 (Mar 3, 2011)

  • Improve update interval of x264cli progress information
  • Now updates every 0.25s instead of every N frames.

New in x264 Video Codec r1898 (Mar 3, 2011)

  • Windows: restore previous console title after encoding
  • MSDN docs claim that SetConsoleTitle's effect is reverted when the process terminates, but this doesn't always work properly.
  • Accordingly, manually revert the console title at the end of encoding.

New in x264 Video Codec r1897 (Mar 3, 2011)

  • Allow WEIGHTP_FAKE in interlaced mode
  • It seems to work fine as-is even though real weightp doesn't support interlacing yet.

New in x264 Video Codec r1896 (Mar 3, 2011)

  • Output pic struct information in libx264 API

New in x264 Video Codec r1895 (Mar 3, 2011)

  • Enable FastShuffle on Penryn and Nehalem CPUs without SSE4

New in x264 Video Codec r1894 (Mar 3, 2011)

  • Minor cosmetics in configure

New in x264 Video Codec r1893 (Mar 3, 2011)

  • Various --help cosmetics

New in x264 Video Codec r1892 (Mar 3, 2011)

  • x86inc.asm: error on duplicate functions
  • Compile error if there's two functions of the same name, instead of silently renaming one of them.

New in x264 Video Codec r1891 (Mar 3, 2011)

  • Bump yasm version requirement to handle AVX

New in x264 Video Codec r1890 (Mar 3, 2011)

  • Fix rare corruption with subme=10
  • Also fix dumb bug in VBV emergency AQ scaling.
  • Regression in r1881.

New in x264 Video Codec r1889 (Mar 3, 2011)

  • Fix overflow in ARM NEON i16x16 planar pred
  • Patch backported from ffmpeg.

New in x264 Video Codec r1888 (Mar 3, 2011)

  • Fix incorrect frame duration for VFR input for some frames

New in x264 Video Codec r1887 (Mar 3, 2011)

  • Fix possible division by zero in mkv and flv muxers on close
  • This could crash if anything failed before output.set_param (for example, incorrect params refused by x264_encoder_open).
  • Bug introduced in r1873.

New in x264 Video Codec r1886 (Mar 3, 2011)

  • Fix reconfiguration of parameters that modify the SPS
  • For now, this is only aspect ratio.

New in x264 Video Codec r1885 (Mar 3, 2011)

  • Fix possible crash on Phenom with lookahead thread disabled
  • Misalign mask needs to be set for the main thread on entry, too.

New in x264 Video Codec r1884 (Jan 31, 2011)

  • Hotfix for some bugs in VBV emergency

New in x264 Video Codec r1883 (Jan 31, 2011)

  • Fix warnings in cpu.c

New in x264 Video Codec r1882 (Jan 31, 2011)

  • Check for OS AVX support in addition to CPUID
  • Even if not using ymm registers, AVX operations will cause SIGILLs on unsupported OSs.
  • On Windows, AVX is only available on Windows 7 SP1 or later.

New in x264 Video Codec r1881 (Jan 28, 2011)

  • VBV emergency mode
  • Allow ratecontrol to select "quantizers" above the maximum.
  • These "quantizers" progressively decimate the source to avoid VBV underflow.
  • x264 is now VBV compliant even with input as evil as /dev/random.

New in x264 Video Codec r1880 (Jan 28, 2011)

  • 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.

New in x264 Video Codec r1879 (Jan 28, 2011)

  • 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.

New in x264 Video Codec r1878 (Jan 28, 2011)

  • Add --input-fmt option to lavf input
  • Conforms to ffmpeg's `-f` option.
  • Use this when lavf fails to guess the input format.

New in x264 Video Codec r1877 (Jan 28, 2011)

  • 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.

New in x264 Video Codec r1876 (Jan 28, 2011)

  • Add some missing values to the non-extended SAR table

New in x264 Video Codec r1875 (Jan 28, 2011)

  • Bump dates to 2011

New in x264 Video Codec r1874 (Jan 28, 2011)

  • More correctly write frame-packing SEI flags
  • Bug reported by Nero.

New in x264 Video Codec r1873 (Jan 28, 2011)

  • 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).

New in x264 Video Codec r1872 (Jan 28, 2011)

  • 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.

New in x264 Video Codec r1871 (Jan 28, 2011)

  • 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.

New in x264 Video Codec r1870 (Jan 28, 2011)

  • Remove high bit depth mmx quant
  • It was using pmuludq which is sse2, and the function isn't really possible without pmuludq.

New in x264 Video Codec r1869 (Jan 28, 2011)

  • Fix cacheline check in avg2 w20 cache32
  • Didn't result in incorrect output, only slightly decreased speed on a few obsolete systems.

New in x264 Video Codec r1868 (Jan 28, 2011)

  • 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.

New in x264 Video Codec r1867 (Jan 12, 2011)

  • 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.

New in x264 Video Codec r1866 (Jan 12, 2011)

  • 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.

New in x264 Video Codec r1865 (Jan 12, 2011)

  • Cosmetics: fref0/1 -> fref[2] and i_ref0/1 -> i_ref[2]
  • A much-needed refactoring, plus makes the next patch easier.

New in x264 Video Codec r1864 (Jan 12, 2011)

  • 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.

New in x264 Video Codec r1863 (Jan 12, 2011)

  • SSE2 high bit depth SSIM functions
  • Patch from Google Code-In.

New in x264 Video Codec r1862 (Jan 12, 2011)

  • SSE2 high bit depth intra_predict_(8x8c|16x16)_p
  • Patch from Google Code-In.

New in x264 Video Codec r1861 (Jan 12, 2011)

  • MMX high bit depth coeff_last4
  • Patch from Google Code-In.

New in x264 Video Codec r1860 (Jan 12, 2011)

  • SSE2 high bit depth zigzag_interleave_cavlc
  • Patch from Google Code-In.

New in x264 Video Codec r1859 (Jan 12, 2011)

  • MMX/SSE2/SSSE3 high bit depth frame_init_lowres functions
  • Patch from Google Code-In.

New in x264 Video Codec r1858 (Jan 12, 2011)

  • 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.

New in x264 Video Codec r1857 (Jan 12, 2011)

  • 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.

New in x264 Video Codec r1856 (Jan 12, 2011)

  • MMX/SSE2 high bit depth 8x8c intra predict functions
  • Patch from Google Code-In.

New in x264 Video Codec r1855 (Jan 12, 2011)

  • MMX version of high bit depth plane_copy
  • And various cosmetics.
  • Patch from Google Code-In

New in x264 Video Codec r1854 (Jan 12, 2011)

  • Faster x86 predict_8x8c_dc, MMX/SSE2 high bit depth versions

New in x264 Video Codec r1853 (Jan 12, 2011)

  • SSSE3 high bit depth sad_aligned functions

New in x264 Video Codec r1852 (Jan 12, 2011)

  • MMX/SSE2 high bit depth interleave functions
  • Patch from Google Code-In.

New in x264 Video Codec r1851 (Jan 12, 2011)

  • MMX/SSE2 high bit depth avg functions
  • Patch from Google Code-In.

New in x264 Video Codec r1850 (Jan 12, 2011)

  • MMX/SSE2 high bit depth deinterleave functions
  • Patch from Google Code-In

New in x264 Video Codec r1849 (Jan 12, 2011)

  • Shut up some incorrect gcc uninitialized variable warnings

New in x264 Video Codec r1848 (Jan 12, 2011)

  • Write --crop-rect and --frame-packing options to x264 SEI

New in x264 Video Codec r1847 (Jan 12, 2011)

  • Add missing space to parameter SEI

New in x264 Video Codec r1846 (Jan 12, 2011)

  • Fix typo in documentation

New in x264 Video Codec r1845 (Jan 12, 2011)

  • Fix redundant linebreaks in statsfile with weightp

New in x264 Video Codec r1844 (Jan 12, 2011)

  • Use cross_prefix for strings in endian test and as test

New in x264 Video Codec r1843 (Jan 12, 2011)

  • Fix checkasm test for quant in high bit depth
  • Eliminate some spurious failures.

New in x264 Video Codec r1842 (Jan 12, 2011)

  • Fix broken YV12 handling in the resize filter

New in x264 Video Codec r1841 (Jan 12, 2011)

  • Fix bug with negative lookahead mb costs in high bit depth

New in x264 Video Codec r1840 (Jan 12, 2011)

  • Fix overflow in SSIM calculation in 10-bit

New in x264 Video Codec r1839 (Jan 12, 2011)

  • Fix some possible overflows in VFR ratecontrol with extreme timebases

New in x264 Video Codec r1838 (Jan 12, 2011)

  • Fix memory leak in lavf demuxer.
  • Leak only occurred with input files that have more than one video stream.

New in x264 Video Codec r1837 (Jan 12, 2011)

  • Fix satd predictors with high bit depth
  • Resulted in odd CRF-mode results with --no-mbtree, as well as suboptimal VBV handling.

New in x264 Video Codec r1836 (Jan 12, 2011)

  • Fix compile error with high bit depth and disable-asm

New in x264 Video Codec r1835 (Jan 12, 2011)

  • Really fix gcc win32 misalignment crash
  • gcc's -fno-zero-initialized-in-bss only works if an explicit initializer (e.g. = {0}) is used.

New in x264 Video Codec r1834 (Dec 22, 2010)

  • Support for native Windows threads
  • Patch originally by Pegasys Inc.

New in x264 Video Codec r1833 (Dec 22, 2010)

  • MMX/SSE2 high bit depth weight_cache/offset(sub|add) functions
  • Patch from Google Code-In.

New in x264 Video Codec r1831 (Dec 22, 2010)

  • SSE2 high bit depth zigzag functions
  • Patch from Google Code-In.

New in x264 Video Codec r1830 (Dec 22, 2010)

  • MMX/SSE2 versions of high bit depth store_interleave
  • Patch from Google Code-In.

New in x264 Video Codec r1829 (Dec 22, 2010)

  • Add frame-packing SEI support for signalling 3D video

New in x264 Video Codec r1828 (Dec 22, 2010)

  • Allow 8x8dct+cavlc+lossless with subme>=6

New in x264 Video Codec r1827 (Dec 22, 2010)

  • Add interlaced/no-interlaced case to regression test script

New in x264 Video Codec r1826 (Dec 22, 2010)

  • Save more memory with weightp in >8-bit

New in x264 Video Codec r1825 (Dec 22, 2010)

  • .gitignore more untracked file types

New in x264 Video Codec r1824 (Dec 22, 2010)

  • Work around gcc/ld alignment bug on win32
  • Fixes problems due to misalignment of static zero arrays (win32 ld can't align .bss properly).

New in x264 Video Codec r1823 (Dec 22, 2010)

  • Fix high bit depth intra pred functions
  • And re-enable them accordingly.
  • Patch from Google Code-In.

New in x264 Video Codec r1822 (Dec 22, 2010)

  • Fix weightp analysis with high bit depth

New in x264 Video Codec r1821 (Dec 22, 2010)

  • Fix build error in high depth
  • Caused by multiple definitions of x264_add8x8_idct_sse2.

New in x264 Video Codec r1820 (Dec 7, 2010)

  • Hotfix for high bit depth
  • Temporary fix for some unaligned access crashes.

New in x264 Video Codec r1819 (Dec 7, 2010)

  • Delete x264_config.h on distclean

New in x264 Video Codec r1818 (Dec 7, 2010)

  • Tons of high bit depth intra predict asm
  • Patch from Google Code-In.

New in x264 Video Codec r1817 (Dec 7, 2010)

  • SSE2 high bit depth 8x8/16x16 idct/idct_dc
  • Patch from Google Code-In.

New in x264 Video Codec r1816 (Dec 7, 2010)

  • Create and install x264_config.h
  • This header can be used to determine the bit-depth and license of libx264.

New in x264 Video Codec r1815 (Dec 7, 2010)

  • 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.

New in x264 Video Codec r1814 (Dec 7, 2010)

  • 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.

New in x264 Video Codec r1813 (Dec 7, 2010)

  • 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.

New in x264 Video Codec r1812 (Dec 7, 2010)

  • Fix possible overflow in sub4x4_dct in 10-bit builds

New in x264 Video Codec r1811 (Dec 7, 2010)

  • Fix bug in intra-refresh + threads
  • Intra refresh bar quality increase wasn't correctly applied.

New in x264 Video Codec r1810 (Dec 7, 2010)

  • Fix file handle leak in libx264 on error

New in x264 Video Codec r1809 (Dec 7, 2010)

  • Fix incompatible csp format issue
  • Problem occurred with unknown pixel formats and non mod2 resolutions in the resize filter.

New in x264 Video Codec r1808 (Dec 7, 2010)

  • Really fix fittobox resize rounding code

New in x264 Video Codec r1807 (Dec 7, 2010)

  • Fix regression in rev1549
  • Skip auto timebase denominator generation when generated timebase denominator exceeds UINT32_MAX.
  • Also fix double free.

New in x264 Video Codec r1806 (Dec 7, 2010)

  • Fix --tcfile-in if timecode v2 file starts from nonzero pts

New in x264 Video Codec r1805 (Dec 7, 2010)

  • SPARC/Solaris build fixes

New in x264 Video Codec r1804 (Nov 26, 2010)

  • Fix typo in r1797

New in x264 Video Codec r1803 (Nov 26, 2010)

  • Add Python regression test script
  • Patch from Google Code-In.

New in x264 Video Codec r1802 (Nov 26, 2010)

  • 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).

New in x264 Video Codec r1801 (Nov 26, 2010)

  • SSE versions of some high-bit-depth DCT functions

New in x264 Video Codec r1800 (Nov 26, 2010)

  • Clean up weightp analysis function

New in x264 Video Codec r1799 (Nov 26, 2010)

  • Add API function to return max number of delayed frames

New in x264 Video Codec r1798 (Nov 26, 2010)

  • Copy field order flag in encoder_reconfig

New in x264 Video Codec r1797 (Nov 26, 2010)

  • Cosmetics in configure

New in x264 Video Codec r1796 (Nov 26, 2010)

  • Add some more info to `x264 --version`

New in x264 Video Codec r1795 (Nov 26, 2010)

  • 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.

New in x264 Video Codec r1794 (Nov 26, 2010)

  • Fix ticks_per_frame check for VFR input

New in x264 Video Codec r1793 (Nov 26, 2010)

  • Fix configure so that boolean configuration options are 1/0
  • There are many cases of 1/undef, not 1/

New in x264 Video Codec r1792 (Nov 26, 2010)

  • Only build SPARC VIS asm if high bit-depth is disabled

New in x264 Video Codec r1791 (Nov 26, 2010)

  • Fix build on SPARC Solaris 10

New in x264 Video Codec r1790 (Nov 24, 2010)

  • Fix resize filter rounding code

New in x264 Video Codec r1789 (Nov 24, 2010)

  • Fix regression in chroma weightp
  • Missing cache calls could cause artifacts, encoder/decoder desync.

New in x264 Video Codec r1788 (Nov 22, 2010)

  • Fix some crashes with high bit depth
  • Not all arrays were sufficiently aligned.

New in x264 Video Codec r1787 (Nov 22, 2010)

  • 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.

New in x264 Video Codec r1786 (Nov 22, 2010)

  • Support custom cropping rectangles
  • Supposedly useful for 3D television applications.

New in x264 Video Codec r1785 (Nov 22, 2010)

  • Convert X264_HIGH_BIT_DEPTH to HIGH_BIT_DEPTH
  • Less verbose.

New in x264 Video Codec r1784 (Nov 22, 2010)

  • 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.

New in x264 Video Codec r1783 (Nov 22, 2010)

  • 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 improved checkasm's decimate_score test.

New in x264 Video Codec r1782 (Nov 22, 2010)

  • x86 asm for high-bit-depth motion compensation
  • ~8x faster qpel MC than C.
  • ~10x faster hpel than C.

New in x264 Video Codec r1781 (Nov 22, 2010)

  • x86 asm for high-bit-depth quant
  • ~3.1-4.2x faster than C.

New in x264 Video Codec r1780 (Nov 22, 2010)

  • x86 asm for high-bit-depth DCT
  • Only MMX and DCT done so far; iDCT still needs asm as well.
  • ~4.4x faster than C.

New in x264 Video Codec r1779 (Nov 22, 2010)

  • x86 asm for high-bit-depth deblocking
  • ~3.3x faster than C.

New in x264 Video Codec r1778 (Nov 22, 2010)

  • Use a 16-bit buffer in hpel_filter regardless of bit depth
  • This only works up to and including 10-bit (but we don't support anything higher yet).

New in x264 Video Codec r1777 (Nov 22, 2010)

  • Use enums instead of magic numbers in x264_mb_partition_pixel_table

New in x264 Video Codec r1776 (Nov 22, 2010)

  • Improve configure script logging
  • Now prints the test program that failed in addition to error messages.

New in x264 Video Codec r1775 (Nov 22, 2010)

  • Fix constrained intra pred mode selection

New in x264 Video Codec r1774 (Nov 22, 2010)

  • Various high-bit-depth ratecontrol fixes

New in x264 Video Codec r1773 (Nov 22, 2010)

  • Fix a crash in --dump-yuv for odd resolutions

New in x264 Video Codec r1772 (Nov 16, 2010)

  • Improve flash detection algorithm change in r1765
  • Now only disables scenecuts only near real end of video, not just prior to forced keyframes.

New in x264 Video Codec r1771 (Nov 16, 2010)

  • Update ffms2 support for its latest API break

New in x264 Video Codec r1770 (Nov 16, 2010)

  • Modify the x264 header accordingly if --disable-gpl is used

New in x264 Video Codec r1769 (Nov 16, 2010)

  • Save a bit of memory with weightp + high bit depth

New in x264 Video Codec r1768 (Nov 16, 2010)

  • Fix bugs in qpfile parsing with omitted QPs

New in x264 Video Codec r1767 (Nov 16, 2010)

  • Fix HRD with intra-refresh
  • x264 was incorrectly calculating cpb_removal_delay with respect to the first keyframe.
  • It should have been calculating cpb_removal_delay with respect to the last keyframe.

New in x264 Video Codec r1766 (Nov 11, 2010)

  • Fix bug in r1753
  • Overflow compensation fix broke CRF with --no-mbtree.

New in x264 Video Codec r1765 (Nov 11, 2010)

  • Improve flash detection's behavior near the end of the video
  • Flash detection catches situations like AAAABBCCDDDD, where A,B,C,D are frames in different scenes.
  • x264 would place a keyframe on the first "D".
  • However, if the video ended on the last "C", x264 would place a keyframe on the first "C", even though C classifies as a flash.
  • This change fixes this issue.

New in x264 Video Codec r1764 (Nov 11, 2010)

  • Improve quantizer handling
  • The default value for i_qpplus1 in x264_picture_t is now X264_QP_AUTO. This is currently 0, but may change in the future.
  • qpfiles no longer use -1 to indicate "auto"; QP is just omitted. The old method should still work though.
  • CRF values now make sense in high bit depth mode.
  • qp should be used for lossless mode, not --crf.
  • crf 0 will still work as expected in 8-bit mode, but won't be lossless with higher bit depths.
  • Add bit depth to statsfiles.
  • These changes are required to make the QP interface sensible in combination with high bit depth.

New in x264 Video Codec r1763 (Nov 11, 2010)

  • VFR-aware PSNR/SSIM measurement
  • First step to VFR-aware MB-tree and bit allocation.

New in x264 Video Codec r1762 (Nov 11, 2010)

  • Disable weightp offset=-1 dupes with high bit depth
  • They're a hack to compensate for crappy rounding, and thus not worth doing at high bit depth, which fixes most of the rounding issues.

New in x264 Video Codec r1761 (Nov 11, 2010)

  • Make the ffmpeg -vpre error message more descriptive

New in x264 Video Codec r1760 (Nov 11, 2010)

  • Add numeric names for the presets (0==ultrafast ... 9==placebo)
  • This mapping will of course change if new presets are added in between, but will always be ordered from fastest to slowest.

New in x264 Video Codec r1759 (Nov 11, 2010)

  • Update benchmarks in doc/threads.txt

New in x264 Video Codec r1758 (Nov 11, 2010)

  • Make the #if'd out naive ESA actually match the real implementation

New in x264 Video Codec r1757 (Nov 11, 2010)

  • Move mv/ref prefetch code to the correct location
  • Prefetching of top blocks should be done under if(top), not if(left).

New in x264 Video Codec r1756 (Nov 11, 2010)

  • Link x264cli explicitly against lavf
  • Fixes some problems with crappy linkers.

New in x264 Video Codec r1755 (Nov 11, 2010)

  • Fix CBR ratecontrol bug with extremely high qscales
  • Caused CBR ratecontrol to take a very long time to recover from extreme situations (e.g. /dev/urandom).

New in x264 Video Codec r1754 (Nov 11, 2010)

  • Disable overflow compensation in CRF mode
  • Wasn't designed with CRF in mind, and acts really weird with CRF+VBV.

New in x264 Video Codec r1753 (Nov 11, 2010)

  • Fix bug in B-frame VBV size prediction

New in x264 Video Codec r1752 (Nov 11, 2010)

  • Fix regression in checkasm in r1666
  • Buffer is uint16_t* regardless of whether x264 was compiled with high bit depth or not.

New in x264 Video Codec r1751 (Nov 11, 2010)

  • Fix overflows in satd, sa8d and hadamard_ac with high bit depth

New in x264 Video Codec r1750 (Nov 11, 2010)

  • Fix potential problem with overflows in ssd_nv12
  • The risk of overflows increases exponentially with the bit depth.
  • The 8-bit asm versions may still overflow with image widths >= 11008 (or 6604 if interlaced).

New in x264 Video Codec r1749 (Nov 11, 2010)

  • Fix syntax for some parameterless functions
  • Technically, such functions should be declared with (void), not ().

New in x264 Video Codec r1748 (Nov 11, 2010)

  • Fix fps reporting on mingw64
  • _ftime on mingw64 uses __timeb32 which is broken.
  • Use ftime instead.

New in x264 Video Codec r1747 (Nov 11, 2010)

  • Fix compilation on PPC with some recent GCCs

New in x264 Video Codec r1746 (Nov 11, 2010)

  • Fix Altivec SATD with small strides
  • Fixes chroma ME and some of lookahead on PPC.

New in x264 Video Codec r1745 (Oct 11, 2010)

  • Address remaining cacheline split issues in avg2
  • Slightly improved performance on core 2.
  • Also fix profiling misattribution of w8/16/20 mmxext cacheline loops.

New in x264 Video Codec r1744 (Oct 11, 2010)

  • Trim a few bytes off some x86 intra pred functions

New in x264 Video Codec r1743 (Oct 11, 2010)

  • Move DTS compression from libx264 to x264cli
  • DTS compression is an ugly stupid hack and starting to encroach on unrelated areas like VBV.
  • Some people want it in the mp4 muxer for devices and/or splitters that don't support Edit Boxes.
  • We just say "throw these broken devices out the window".
  • DTS compression will remain as a muxer option, --dts-compress, at the user's own risk.
  • This option is disabled by default.

New in x264 Video Codec r1742 (Oct 11, 2010)

  • Use a larger pic_init_qp with high bit depth
  • Modify pic_init_qs for consistency.

New in x264 Video Codec r1741 (Oct 11, 2010)

  • Update some of the information in doc/

New in x264 Video Codec r1740 (Oct 11, 2010)

  • Update header in depth.c

New in x264 Video Codec r1739 (Oct 11, 2010)

  • Remove some old unused stuff in the build tree
  • Regression test (hasn't been updated since svn).
  • Doxy (was never used).

New in x264 Video Codec r1738 (Oct 11, 2010)

  • Various cosmetics
  • Exorcise some CamelCase.

New in x264 Video Codec r1737 (Oct 11, 2010)

  • Add missing mod4 stack check to sse2_misalign mc_chroma
  • Required for ICC compilation.

New in x264 Video Codec r1736 (Oct 11, 2010)

  • Fix 2pass ratecontrol with --nal-hrd cbr

New in x264 Video Codec r1735 (Oct 11, 2010)

  • Fix minor bug in intra pred with intra refresh
  • i8x8 blocks didn't properly avoid predicting from top-right when necessary.
  • This could cause intra refresh to not completely refresh the frame.

New in x264 Video Codec r1734 (Oct 11, 2010)

  • Fix filter parsing with --extra-cflags="-DNDEBUG"

New in x264 Video Codec r1733 (Oct 11, 2010)

  • Make sigint handler variable volatile
  • Didn't actually cause any problems, but is necessary because it can be modified by another thread (the signal call).

New in x264 Video Codec r1732 (Oct 4, 2010)

  • Add High 10 Intra profile support (AVC-Intra)
  • x264 should now be able to encode compliant AVC-Intra 50.
  • With a 10-bit-compiled version of x264, a sample commandline for 1080i25 might be: interlaced --keyint 1 --vbv-bufsize 2000 --bitrate 50000 --vbv-maxrate 50000 --nal-hrd cbr
  • Also print "Constrained Baseline" for baseline profile, since that's all x264 (and everything else in the world) supports.
  • Also reorganize parameter validation a bit to reduce some spurious warnings.

New in x264 Video Codec r1731 (Oct 4, 2010)

  • Finish support for high-depth video throughout x264
  • Add support for high depth input in libx264.
  • Add support for 16-bit colorspaces in the filtering system.
  • Add support for input bit depths in the interval [9,16] with the raw demuxer.
  • Add a depth filter to dither input to x264.

New in x264 Video Codec r1730 (Oct 4, 2010)

  • Chroma mode decision/subpel for B-frames
  • Improves compression ~0.4-1%. Helps more on videos with lots of chroma detail.
  • Enabled at subme 9 (preset slower) and higher.

New in x264 Video Codec r1729 (Oct 4, 2010)

  • Various cosmetics

New in x264 Video Codec r1728 (Oct 4, 2010)

  • Make slice-max-size more aggressive in considering escape bytes
  • The x264 assumption of randomly distributed escape bytes fails in the case of CABAC + an enormous number of identical macroblocks.
  • This patch attempts to compensate for this.
  • It is probably safe to assume in calling applications that x264 practically never violates the slice size limitation.

New in x264 Video Codec r1727 (Oct 4, 2010)

  • Add missing emms for dump-yuv

New in x264 Video Codec r1726 (Oct 4, 2010)

  • Fix CFR ratecontrol with timebase != 1/fps
  • Fixes VBV + DTS compression, among other things.

New in x264 Video Codec r1725 (Oct 4, 2010)

  • Fix DTS/bitrate calculation if the first PTS wasn't zero
  • Fix bitrate calculation with DTS compression.

New in x264 Video Codec r1724 (Oct 4, 2010)

  • Fix regression in r1716

New in x264 Video Codec r1723 (Oct 4, 2010)

  • Cosmetics in me.c and frame.c

New in x264 Video Codec r1722 (Oct 4, 2010)

  • Add support for arbitrary user SEIs
  • This allows calling applications to insert SEIs that x264 doesn't know about while maintaining HRD/VBV accuracy.

New in x264 Video Codec r1721 (Oct 4, 2010)

  • Add full chroma input flag to swscale
  • Improves quality of colorspace conversions involving RGB(A).

New in x264 Video Codec r1720 (Oct 4, 2010)

  • Add --disable-gpl option to configure
  • Used for commercially-licensed versions of x264.
  • Doesn't currently change anything, but may be used to disable GPL-only CLI tools, such as video filters, in the future.
  • Also print the x264 license and libavformat license in version info.

New in x264 Video Codec r1719 (Oct 4, 2010)

  • Update source file headers
  • Update dates, improve file descriptions, make things more consistent.
  • Also add information about commercial licensing.

New in x264 Video Codec r1718 (Oct 4, 2010)

  • Fix intra refresh to not exceed max recovery_frame_cnt
  • The spec constrains recovery_frame_cnt to [0, MaxFrameNum-1].
  • So make MaxFrameNum bigger in the case of intra refresh.

New in x264 Video Codec r1717 (Oct 4, 2010)

  • Make intra refresh finish one frame faster
  • In some cases, the last frame of intra refresh was redundant.
  • Saves a few bits.

New in x264 Video Codec r1716 (Oct 4, 2010)

  • Fix intra refresh to not predict from invalid pixels
  • The blocks on the right side of the intra refresh column should not predict from top-right.

New in x264 Video Codec r1715 (Oct 4, 2010)

  • Add configure check for mingw64 prefixing
  • This compensates for the inconsistent prefixing seen in different versions of the compiler.

New in x264 Video Codec r1714 (Oct 4, 2010)

  • Update some Altivec function prototypes
  • Silences a lot of warnings.

New in x264 Video Codec r1713 (Sep 4, 2010)

  • Add support for level 1b
  • This level is a stupid hack in the H.264 spec, so it's a stupid hack in x264 too.
  • Since level is an integer, calling applications need to set level_idc=9 to use it.
  • String-based option handling will accept "1b" just fine though, so CLI users don't have to worry.

New in x264 Video Codec r1712 (Sep 4, 2010)

  • Use smaller values for idr_pic_id
  • Saves a few bits and fixes problems on certain fantastically terrible decoders,
  • such as the Apple iPad.

New in x264 Video Codec r1711 (Sep 4, 2010)

  • Use POC type 2 for streams with no B-frames
  • Saves a few bits per slice header.

New in x264 Video Codec r1710 (Sep 4, 2010)

  • Faster cabac_encode_ue_bypass
  • Use CLZ + a lut instead of a loop.

New in x264 Video Codec r1709 (Sep 4, 2010)

  • Faster nal_escape asm

New in x264 Video Codec r1708 (Sep 4, 2010)

  • Allow --demuxer forcing with known extensions

New in x264 Video Codec r1707 (Sep 4, 2010)

  • Minor fixes/cosmeticcs in commandling parsing

New in x264 Video Codec r1706 (Sep 4, 2010)

  • Fix overflow in stats printing

New in x264 Video Codec r1705 (Sep 4, 2010)

  • Fix bug in 2pass if the first P-frames are all skip
  • last_qscale_for was read before being initialized in this case, resulting
  • in the value from the previous iteration being used instead.

New in x264 Video Codec r1704 (Sep 4, 2010)

  • Don't do deblock-aware RD if deblocking is off

New in x264 Video Codec r1703 (Aug 25, 2010)

  • CAVLC "trellis"
  • ~3-10% improved compression with CAVLC.
  • trellis is now a valid option with CAVLC.
  • Perhaps more importantly, this means psy-trellis now works with CAVLC.
  • This isn't a real trellis; it's actually just a simplified QNS.
  • But it takes enough shortcuts that it's still roughly as fast as a trellis; just not quite optimal.
  • Thus the name is a bit of a misnomer, but we're reusing the option name because it does the same thing.
  • A real trellis would be better, but CAVLC is much harder to trellis than CABAC.
  • I'm not aware of any published polynomial-time solutions that are significantly close to optimal.

New in x264 Video Codec r1702 (Aug 25, 2010)

  • Add global #define for maximum reference count
  • This should make it easier to play around with reference frame counts that exceed the spec maximum.

New in x264 Video Codec r1701 (Aug 25, 2010)

  • Simplify addressing logic for interlaced-related arrays
  • In progressive mode, just make [0] and [1] point to the same place.

New in x264 Video Codec r1700 (Aug 25, 2010)

  • Add missing emms to x264_nal_encode
  • Only matters for applications using the low-latency callback feature.

New in x264 Video Codec r1699 (Aug 25, 2010)

  • Fix 2 bugs with slice-max-size
  • Macroblock re-encoding didn't restore mv/tex bit counters (slightly inaccurate 2-pass).
  • Bitstream buffer check didn't work correctly (insanely large frames could break encoding).

New in x264 Video Codec r1698 (Aug 23, 2010)

  • NV12 version of Altivec chroma MC

New in x264 Video Codec r1697 (Aug 23, 2010)

  • Deblock-aware RD
  • Small quality gain (~0.5%) at lower bitrates, potentially larger with QPRD.
  • May help more with psy, maybe not.
  • Enabled at subme >= 9. Small speed cost (a few %).

New in x264 Video Codec r1696 (Aug 23, 2010)

  • Correct X header path usage in configure
  • Don't unconditionally set the header path for OpenBSD but do so if the
  • enable-visualize flag is specified.

New in x264 Video Codec r1695 (Aug 23, 2010)

  • Fix lavf input with delayed frames

New in x264 Video Codec r1694 (Aug 23, 2010)

  • Slightly improve the filtering section of x264 --help

New in x264 Video Codec r1693 (Aug 23, 2010)

  • Fix debug message typo with DTS compression

New in x264 Video Codec r1692 (Aug 23, 2010)

  • Try to guess input length for lavf input
  • Allows printing of progress indicator when using lavf input.

New in x264 Video Codec r1691 (Aug 23, 2010)

  • Workaround bug in fps/timestamp handling with lavf input
  • reordered_opaque in lavf doesn't work correctly in the identity case (no reordering).
  • Fixes incorrect output for some file types (e.g. raw in mov).

New in x264 Video Codec r1690 (Aug 23, 2010)

  • Fix aspect ratio writing in the MKV muxer
  • The braindead Matroska spec dictates aspect ratio to be measured in pixels instead of, well, an actual aspect ratio.

New in x264 Video Codec r1689 (Aug 23, 2010)

  • Add libavcore check in configure

New in x264 Video Codec r1688 (Jul 29, 2010)

  • Improve quantizer distribution with sliced-threads+VBV
  • Should help avoid cases of very uneven quantizer choice between slices.

New in x264 Video Codec r1687 (Jul 29, 2010)

  • Remove dead code in slicetype.c

New in x264 Video Codec r1686 (Jul 29, 2010)

  • Fix incorrect duration/framerate/bitrate in flv header

New in x264 Video Codec r1685 (Jul 29, 2010)

  • invalidate_reference fixes
  • invalidate_reference didn't actually invalidate the immediate previous frame, only frames that came before that.
  • Make sure that reordering is forced when invalidate_reference is used, so that the reference list is correct decoder-side.

New in x264 Video Codec r1684 (Jul 29, 2010)

  • Filtering system-related fixes
  • Fix configure to check for outdated libavutil in resize filter support.
  • Do not print an explicit error message in ffms when requesting a frame beyond the number of frames in the source.
  • Mention in --*help that filtering options can be specified as name=value.
  • Fix the shadowing warning in the resize filter on posix systems.

New in x264 Video Codec r1683 (Jul 23, 2010)

  • Improve reference_invalid support
  • Reference invalidation can now be used to invalidate multiple frames at a time, rather than being limited to one per encoder_encode call.

New in x264 Video Codec r1682 (Jul 23, 2010)

  • Eradicate all mention of SI/SP-frames

New in x264 Video Codec r1681 (Jul 23, 2010)

  • Fix stack alignment with MB-tree
  • Broke 2-pass with MB-tree when calling from compilers with broken stack alignment (e.g. MSVC).

New in x264 Video Codec r1680 (Jul 20, 2010)

  • Avisynth 2.6 colorspace support
  • Use a customized avisynth_c.h to detect the new planar colorspaces.

New in x264 Video Codec r1679 (Jul 20, 2010)

  • Prevent some cases of cache aliasing.
  • Avoid cases where image strides were a large power of 2.
  • Core 2: +3% speed at widths 898..960, +6% at widths 1922..1984, most other resolutions unaffected.
  • Nehalem and AMD: similar amount of speedup, but fewer resolutions affected.

New in x264 Video Codec r1678 (Jul 20, 2010)

  • Fix stack alignment for adaptive quant
  • Broke calls from compilers with broken stack alignment (e.g. MSVC).

New in x264 Video Codec r1677 (Jul 16, 2010)

  • Fix compilation with shared ffmpeg libs
  • lavf input uses libavutil functions, so it must request flags for libavutil from pkg-config.

New in x264 Video Codec r1676 (Jul 16, 2010)

  • Fix another PCM bug
  • CABAC assumes that NNZ is 0 or 1, not the number of actual nonzero coefficients.
  • Didn't actually break the output; only had a tiny effect on RD.

New in x264 Video Codec r1675 (Jul 16, 2010)

  • Fix regression in r1666
  • Broke encoding of PCM macroblocks.

New in x264 Video Codec r1674 (Jul 16, 2010)

  • Fix build with bit_depth > 8
  • Definition of x264_cli_plane_copy was inconsistent with declaration.

New in x264 Video Codec r1673 (Jul 15, 2010)

  • Convert x264 to use NV12 pixel format internally
  • ~1% faster overall on Conroe, mostly due to improved cache locality.
  • Also allows improved SIMD on some chroma functions (e.g. deblock).
  • This change also extends the API to allow direct NV12 input, which should be a bit faster than YV12.
  • This isn't currently used in the x264cli, as swscale does not have fast NV12 conversion routines, but it might be useful for other applications.
  • Note this patch disables the chroma SIMD code for PPC and ARM until new versions are written.

New in x264 Video Codec r1672 (Jul 15, 2010)

  • Add video filtering system to x264cli
  • Similar to mplayer's -vf system.
  • Supports some basic operations like resizing and cropping. Will support more in the future.
  • See the help for more details.

New in x264 Video Codec r1671 (Jul 15, 2010)

  • Eliminate edge cases for MV predictors
  • Saves a few clocks in mv pred.

New in x264 Video Codec r1670 (Jul 15, 2010)

  • Improve scenecut detection a bit
  • Put a minimum value on the scenecut threshold; makes x264 more likely to catch successive scenecuts (but might increase the odds of false detection).
  • This also fixes scenecut detection with keyint=infinite.
  • Also print keyint=infinite in the x264 SEI and statsfile correctly.

New in x264 Video Codec r1669 (Jul 15, 2010)

  • Fix 8x8dct+slices+no sliced threads+cavlc+deblock
  • Deblocking was done slightly incorrectly.
  • Regression in r1612.

New in x264 Video Codec r1668 (Jul 15, 2010)

  • Fix off-by-one error in slice VBV predictor updates

New in x264 Video Codec r1667 (Jul 15, 2010)

  • Fix disabling of progress with --log-level

New in x264 Video Codec r1666 (Jul 5, 2010)

  • Support for 9 and 10-bit encoding
  • Output bit depth is specified on compilation time via --bit-depth.
  • There is currently almost no assembly code available for high-bit-depth modes, so encoding will be very slow.
  • Input is still 8-bit only; this will change in the future.
  • Note that very few H.264 decoders support >8 bit depth currently.
  • Also note that the quantizer scale differs for higher bit depth. For example, for 10-bit, the quantizer (and crf) ranges from 0 to 63 instead of 0 to 51.

New in x264 Video Codec r1665 (Jul 5, 2010)

  • Support infinite keyint (--keyint infinite).
  • This just means x264 won't insert non-scenecut keyframes.
  • Useful for streaming when using interactive error recovery or some other mechanism that makes keyframes unnecessary.
  • Also change POC logic to limit POC/framenum LSB size (to save bits per slice).
  • Also fix a bug in the CPB underflow detection code (didn't affect the bitstream, just resulted in the failure to print certain warning messages).

New in x264 Video Codec r1664 (Jul 5, 2010)

  • Don't check i16x16 planar mode unless previous modes were useful
  • Saves ~160 clocks per MB at subme=1, ~270 per MB at subme>1 (measured on Core i7).
  • Negligle effect on compression.
  • Also make a few more arrays static.

New in x264 Video Codec r1663 (Jul 5, 2010)

  • Centralize logging within x264cli
  • x264cli messages will now respect the log level they pertain to.
  • Slightly reduces binary size.

New in x264 Video Codec r1662 (Jul 5, 2010)

  • Make open-GOP Blu-ray compatible
  • Blu-ray is even more braindamaged than we thought.
  • Accordingly, open-gop options are now "normal" and "bluray", as opposed to display and coded.
  • Normal should be used in all cases besides Blu-ray authoring.

New in x264 Video Codec r1661 (Jul 5, 2010)

  • Callback feature for low-latency per-slice output
  • Add a callback to allow the calling application to send slices immediately after being encoded.
  • Also add some extra information to the x264_nal_t structure to help inform such a calling application how the NAL units should be ordered.
  • Full documentation is in x264.h.

New in x264 Video Codec r1660 (Jul 5, 2010)

  • Simplify pixel_ads

New in x264 Video Codec r1659 (Jun 30, 2010)

  • Interactive encoder control: error resilience
  • In low-latency streaming with few clients, it is often feasible to modify encoder behavior in some fashion based on feedback from clients.
  • One possible application of this is error resilience: if a packet is lost, mark the associated frame (and any referenced from it) as lost.
  • This allows quick recovery from errors with minimal expense bit-wise.
  • The new i_dpb_size parameter allows a calling application to tell x264 to use a larger DPB size than required by the number of reference frames.
  • This lets x264 and the client keep a large buffer of old references to fall back to in case of lost frames.
  • If no recovery is possible even with the available buffer, x264 will force a keyframe.
  • This initial version does not support B-frames or intra refresh.
  • Recommended usage is to set keyint to a very large value, so that keyframes do not occur except as necessary for extreme error recovery.
  • Full documentation is in x264.h.
  • Move DTS/PTS calculation to before encoding each frame instead of after.
  • Improve documentation of x264_encoder_intra_refresh.

New in x264 Video Codec r1658 (Jun 30, 2010)

  • Lookaheadless MB-tree support
  • Uses past motion information instead of future data from the lookahead.
  • Not as accurate, but better than nothing in zero-latency compression when a lookahead isn't available.
  • Currently resets on keyframes, so only available if intra-refresh is set, to avoid pops on non-scenecut keyframes.
  • Not on by default with any preset/tune combination; must be enabled explicitly if --tune zerolatency is used.
  • Also slightly modify encoding presets: disable rc-lookahead in the fastest presets.
  • Enable MB-tree in "veryfast", albeit with a very short lookahead.

New in x264 Video Codec r1657 (Jun 30, 2010)

  • Open-GOP support
  • Allows B-frames immediately prior to keyframes (in display order).
  • This helps reduce keyframe popping and improve compression with short keyframe intervals.
  • Due to a staggering display of braindamage in the Blu-ray spec, two open-GOP modes are available.
  • The two modes calculate keyframe interval differently: one based on coded distance and one based on display distance.
  • The latter is superior compression-wise, but for no comprehensible reason, Blu-ray requires the former if open-GOP is used.

New in x264 Video Codec r1656 (Jun 30, 2010)

  • Use threadpools to avoid unnecessary thread creation
  • Tiny performance improvement with fast settings and lots of threads.
  • May help more on some OSs with slow thread creation, like OS X.
  • Unify inconsistent synchronized abbreviations to sync.

New in x264 Video Codec r1655 (Jun 30, 2010)

  • Improve 2-pass bitrate prediction
  • Adapt based on distance to the end in bits, not in frames.
  • Helps in videos with absurdly simple end sections, e.g. black frames.

New in x264 Video Codec r1654 (Jun 30, 2010)

  • SSE4 and SSSE3 versions of some intra_sad functions
  • Primarily Nehalem-optimized.

New in x264 Video Codec r1653 (Jun 30, 2010)

  • Improve HRD accuracy
  • In a staggering display of brain damage, the spec requires all HRD math to be done in infinite precision despite the output being of quite limited precision.
  • Accordingly, convert buffer management to work in units of timescale.
  • These accumulating rounding errors probably didn't cause any real problems, but might in theory cause issues in very picky muxers on extremely long-running streams.

New in x264 Video Codec r1652 (Jun 30, 2010)

  • Use -fno-tree-vectorize to avoid miscompilation
  • Some versions of gcc have been reported to attempt (and fail) to vectorize a loop in plane_expand_border.
  • This results in a segfault, so to limit the possible effects of gcc's utter incompetence, we're turning off vectorization entirely.
  • It's not like it ever did anything useful to begin with.

New in x264 Video Codec r1651 (Jun 30, 2010)

  • Fix SIGPIPEs caused by is_regular_file checks
  • Check to see if input file is a pipe without opening it.

New in x264 Video Codec r1650 (Jun 30, 2010)

  • Fix compilation on ARM w/ Apple ABI

New in x264 Video Codec r1649 (Jun 15, 2010)

  • Faster mbtree_propagate asm
  • Replace fp division by multiply with the reciprocal.
  • Only ~12% faster on penryn, but over 80% faster on amd k8.
  • Also make checkasm slightly more tolerant to rounding error.

New in x264 Video Codec r1648 (Jun 15, 2010)

  • Convert the OPT_ defines in x264.c to an enum

New in x264 Video Codec r1647 (Jun 15, 2010)

  • Don't allow baseline profile streams with fake-interlaced
  • Indicate use of --fake-interlaced in encoding options SEI.

New in x264 Video Codec r1646 (Jun 15, 2010)

  • Allocate space for null terminator in param_apply_tune

New in x264 Video Codec r1645 (Jun 15, 2010)

  • Fix regression in r1501.
  • Could cause slightly incorrect analysis in rare cases, but no serious encoding issues.
  • Also shut up gcc warning about pels_v.

New in x264 Video Codec r1644 (Jun 15, 2010)

  • Fix crash with --subme 0 + --weightp > 0. Regression in r1535

New in x264 Video Codec r1643 (Jun 10, 2010)

  • Replace some divisions with shifts

New in x264 Video Codec r1642 (Jun 10, 2010)

  • Warn about shadowed variable declarations
  • Also get rid of a few instances of variable shadowing.

New in x264 Video Codec r1641 (Jun 10, 2010)

  • Template load_pic_pointers based on interlaced
  • Significantly speeds up cache_load in the non-interlaced case.
  • Also various other minor optimizations in cache_load and cache_save.

New in x264 Video Codec r1640 (Jun 10, 2010)

  • Remove double-dereferences for MB width/height data
  • Store it in x264_t instead of going through the SPS.

New in x264 Video Codec r1639 (Jun 10, 2010)

  • Exempt Win x86_64 from memalign hack
  • The API mandates all mallocs are 16 byte aligned.
  • Remove unused int that stores sizeof malloc in memalign hack.

New in x264 Video Codec r1638 (Jun 10, 2010)

  • Preprocessing cosmetics
  • Unify input/output defines to HAVE_* format.
  • Define values as 1 to simplify conditionals.

New in x264 Video Codec r1637 (Jun 10, 2010)

  • Take more shortcuts in i4x4/i8x8 analysis
  • Based on the scores of the H and V modes, rule out modes which are unlikely.
  • Small compression loss (0.1-0.5%) and large speed gain (10-30% faster intra analysis).
  • Not enabled in slower encoding modes.
  • Also make C versions of the merged SATD functions in order to eliminate branches based on their availability.

New in x264 Video Codec r1636 (Jun 10, 2010)

  • Display SSIM measurement in db as well

New in x264 Video Codec r1635 (Jun 10, 2010)

  • Make version.sh indicate "M" for local commits too

New in x264 Video Codec r1634 (Jun 10, 2010)

  • Add error message for invalid [de]muxer selection

New in x264 Video Codec r1633 (Jun 10, 2010)

  • Deduplicate the ALIGN macro, move it to common.h

New in x264 Video Codec r1632 (Jun 10, 2010)

  • Fix a use of ALIGNED_ARRAY_16 on ARM

New in x264 Video Codec r1631 (Jun 10, 2010)

  • Add missing emms after nal_encode
  • Caused random, bizarre failures with some calling applications.

New in x264 Video Codec r1630 (Jun 10, 2010)

  • Fix crash in fake-interlaced at some resolutions

New in x264 Video Codec r1629 (Jun 3, 2010)

  • Fix no-mbtree + aq-mode=0
  • Regression in r1618.

New in x264 Video Codec r1628 (Jun 3, 2010)

  • Add API function to fix x264_picture_t initialization
  • Calling applications that do not use x264_picture_alloc need to use x264_picture_init to initialize x264_picture_t structures.
  • Previously, if the calling application didn't zero x264_picture_t, Bad Things could happen.

New in x264 Video Codec r1627 (Jun 3, 2010)

  • Fix Avisynth input
  • Regression in r1624. A more permanent solution to the problem will be committed later.

New in x264 Video Codec r1626 (Jun 2, 2010)

  • Convert to a unified "dctcoeff" type for DCT data
  • Necessary for future high bit-depth support.

New in x264 Video Codec r1625 (Jun 2, 2010)

  • Convert to a unified "pixel" type for pixel data
  • Necessary for future high bit-depth support.
  • Various macros and extra types have been introduced to make operations on variable-size pixels more convenient.

New in x264 Video Codec r1624 (Jun 2, 2010)

  • Add API tool to apply arbitrary quantizer offsets
  • The calling application can now pass a "map" of quantizer offsets to apply to each frame.
  • An optional callback to free the map can also be included.
  • This allows all kinds of flexible region-of-interest coding and similar.

New in x264 Video Codec r1623 (Jun 2, 2010)

  • x86 assembly code for NAL escaping
  • Up to ~10x faster than C depending on CPU.
  • Helps the most at very high bitrates (e.g. lossless).
  • Also make the C code faster and simpler.

New in x264 Video Codec r1622 (Jun 2, 2010)

  • Re-enable i8x8 merged SATD
  • Accidentally got disabled when intra_sad_x3 was added.

New in x264 Video Codec r1621 (Jun 2, 2010)

  • Some deblocking-related optimizations

New in x264 Video Codec r1620 (Jun 2, 2010)

  • Optimize out some x264_scan8 reads

New in x264 Video Codec r1619 (Jun 2, 2010)

  • Add fast skip in lookahead motion search
  • Helps speed very significantly on motionless blocks.

New in x264 Video Codec r1618 (Jun 2, 2010)

  • Merge some of adaptive quant and weightp
  • Eliminate redundant work; both of them were calculating variance of the frame.

New in x264 Video Codec r1617 (Jun 2, 2010)

  • Fix omission in libx264 tuning documentation

New in x264 Video Codec r1616 (Jun 2, 2010)

  • Fix ultrafast to actually turn off weightb

New in x264 Video Codec r1615 (Jun 2, 2010)

  • Fix crash with MP4-muxing if zero frames were encoded

New in x264 Video Codec r1614 (Jun 2, 2010)

  • Fix cavlc+deblock+8x8dct (regression in r1612)
  • Add cavlc+8x8dct munging to new deblock system.
  • May have caused minor visual artifacts.

New in x264 Video Codec r1613 (May 27, 2010)

  • Fix 10L in r1612
  • Stats need to be calculated before deblock strength, not after.
  • Broke ref stats in x264cli (no affect on actual output).

New in x264 Video Codec r1612 (May 27, 2010)

  • Overhaul deblocking again
  • Move deblock strength calculation to immediately after encoding to take advantage of the data that's already in cache.
  • Keep the deblocking itself as per-row.

New in x264 Video Codec r1611 (May 27, 2010)

  • Detect Atom CPU, enable appropriate asm functions
  • I'm not going to actually optimize for this pile of garbage unless someone pays me.
  • But it can't hurt to at least enable the correct functions based on benchmarks.
  • Also save some cache on Intel CPUs that don't need the decimate LUT due to having fast bsr/bsf.

New in x264 Video Codec r1610 (May 27, 2010)

  • Slightly faster mbtree asm

New in x264 Video Codec r1609 (May 27, 2010)

  • Faster deblock strength asm on conroe/penryn

New in x264 Video Codec r1608 (May 27, 2010)

  • Avoid an extra var2 in chroma encoding if possible
  • Also remove a redundant if.

New in x264 Video Codec r1607 (May 27, 2010)

  • Avoid a redundant qpel check in lookahead with subme

New in x264 Video Codec r1606 (May 27, 2010)

  • Fix ABR rate control calculations
  • Incorrect frame numbers were used, resulting in slightly inaccurate ratecontrol.

New in x264 Video Codec r1605 (May 27, 2010)

  • Fix calculation of total bitrate printed after stop by CTRL+C

New in x264 Video Codec r1604 (May 27, 2010)

  • Fix typo in fake-interlaced documentation

New in x264 Video Codec r1603 (May 27, 2010)

  • Fix CABAC+PCM, regression in r1592
  • Changes to queue in CABAC didn't get propagated to PCM code.

New in x264 Video Codec r1602 (May 24, 2010)

  • Fix performance regression in r1582
  • Set the correct compiler flags.

New in x264 Video Codec r1601 (May 24, 2010)

  • Rewrite deblock strength calculation, add asm
  • Rewrite is significantly slower, but is necessary to make asm possible.
  • Similar concept to ffmpeg's deblock strength asm.
  • Roughly one order of magnitude faster than C.
  • Overall, with the asm, saves ~100-300 clocks in deblocking per MB.

New in x264 Video Codec r1600 (May 24, 2010)

  • Fix different output with differing sync-lookahead
  • Also reduce memory consumption.

New in x264 Video Codec r1599 (May 24, 2010)

  • Mark Win32 executable as large address aware

New in x264 Video Codec r1598 (May 24, 2010)

  • Add "Fake interlaced" option
  • This encodes all frames progressively yet flags the stream as interlaced.
  • This makes it possible to encode valid 25p and 30p Blu-Ray streams.
  • Also put the pulldown help section in a more appropriate place.

New in x264 Video Codec r1597 (May 24, 2010)

  • Modify version.sh to output to stdout.
  • Update configure to match.

New in x264 Video Codec r1596 (May 24, 2010)

  • Set correct filesystem permissions for various files

New in x264 Video Codec r1595 (May 24, 2010)

  • Fix regression in r1566
  • Intra stats need to be kept track of for fast intra decision.

New in x264 Video Codec r1594 (May 24, 2010)

  • Fix rc-lookahead in encoding options SEI in 2-pass with VBV

New in x264 Video Codec r1593 (May 24, 2010)

  • Reduce memory usage in 2-pass with b-adapt 2

New in x264 Video Codec r1592 (May 19, 2010)

  • Overhaul CABAC: faster, less cache usage
  • Horribly munge up the CABAC tables to allow deduplication of some data.
  • Saves 256 bytes of L1d cache in non-RD, 512 bytes in RD.
  • Add asm versions of bypass and terminal; save L1i cache by re-using putbyte code.
  • Further optimize encode_decision.
  • All 3 primary CABAC functions fit in under 256 bytes of code total on x86_64.

New in x264 Video Codec r1591 (May 19, 2010)

  • Fix typo in pulldown

New in x264 Video Codec r1590 (May 19, 2010)

  • Fix bitrate calculation in progress status
  • Was slightly incorrect due to using pts, which is out of order.

New in x264 Video Codec r1589 (May 19, 2010)

  • Fix crash with sliced-threads on Phenom

New in x264 Video Codec r1588 (May 19, 2010)

  • Fix condition for printing rc=cbr in options SEI
  • Also fix crf-max formatting.

New in x264 Video Codec r1587 (May 19, 2010)

  • Shrink even more constant arrays

New in x264 Video Codec r1586 (May 19, 2010)

  • Add API function to trigger intra refresh
  • Useful for interactive applications where the encoder knows that packet loss has occurred on the client.
  • Full documentation is in x264.h.

New in x264 Video Codec r1585 (May 19, 2010)

  • Fix intra refresh behavior with I-frames
  • Intra refresh still allows I-frames (for scenecuts/etc).
  • Now I-frames count as a full refresh, as opposed to instantly triggering a refresh.

New in x264 Video Codec r1584 (May 19, 2010)

  • More cosmetics

New in x264 Video Codec r1583 (May 6, 2010)

  • unresolved symbol in r1573
  • gnu ld didn't complain, but some other linkers did.

New in x264 Video Codec r1582 (May 6, 2010)

  • Remove unnecessary --enable options
  • Change --enable-visualize to actually check for X11 support.

New in x264 Video Codec r1581 (May 6, 2010)

  • Don't force row QPs to integer values with VBV
  • VBV should no longer raise the bitrate of the video. That is, at a given quality level or average bitrate, turning on VBV should only lower the bitrate.
  • This isn't quite true if adaptive quant is off, but nobody should be doing that anyways.
  • Also may result in slightly more accurate per-row VBV ratecontrol.

New in x264 Video Codec r1580 (May 6, 2010)

  • Add field-order detection to y4m demuxer

New in x264 Video Codec r1579 (May 6, 2010)

  • Fix sliced-threads + interlaced
  • Broken in r1546.

New in x264 Video Codec r1578 (May 6, 2010)

  • Improve temporal MV prediction
  • Predict based on the results of p16x16 search, not final MVs.
  • This lets us get predictions even if mode decision chose intra.
  • Also improves cache coherency.

New in x264 Video Codec r1577 (May 6, 2010)

  • More accurate MV prediction on edges in lookahead

New in x264 Video Codec r1576 (May 6, 2010)

  • Error out on invalid input stride
  • Might catch some crashes due to buggy calling applications.

New in x264 Video Codec r1575 (May 6, 2010)

  • Remove unnecessary debugging assert
  • Shouldn't have been in r1568 to begin with.

New in x264 Video Codec r1574 (May 6, 2010)

  • Shrink some more constant arrays

New in x264 Video Codec r1573 (May 6, 2010)

  • Deduplicate asm constants, automate name prefixing
  • Auto-prefix global constants with x264_ in cextern.
  • Eliminate x264_ prefix from asm files; automate it in cglobal.
  • Deduplicate asm constants wherever possible to save data cache (move them to a new const-a.asm).
  • Remove x264_emms() entirely on non-x86 (don't even call an empty function).
  • Add cextern_naked for a non-prefixed cextern (used in checkasm).

New in x264 Video Codec r1572 (May 6, 2010)

  • Shrink a few x86 asm functions
  • Add a few more instructions to cut down on the use of the 4-byte addressing mode.

New in x264 Video Codec r1571 (May 6, 2010)

  • Make options SEI use weight* instead of wpred*
  • More intuitive and maps more reasonably to the CLI options.
  • Breaks statsfile backwards-compatibility.

New in x264 Video Codec r1570 (Apr 30, 2010)

  • r1548 broke subme < 3 + p8x8/b8x8
  • Caused significantly worse compression. Preset-wise, only affected veryfast
  • Fixed by not modifying mvc in-place

New in x264 Video Codec r1569 (Apr 30, 2010)

  • More write-combining

New in x264 Video Codec r1568 (Apr 30, 2010)

  • Reduce lookahead memory usage, cache misses
  • Merge lowres_types with lowres_costs.

New in x264 Video Codec r1567 (Apr 30, 2010)

  • Fix build on x86 with asm on but SSE off

New in x264 Video Codec r1566 (Apr 30, 2010)

  • Don't calculate ref/partition stats if not necessary

New in x264 Video Codec r1565 (Apr 30, 2010)

  • Split out MV prediction into mvpred.c
  • Make common/macroblock.c a bit less gigantic.

New in x264 Video Codec r1564 (Apr 27, 2010)

  • Fix mv predictor clipping on non-x86 (regression in r1548)

New in x264 Video Codec r1563 (Apr 27, 2010)

  • Move getopt.c to x264cli sources from libx264
  • Only affects builds on systems without getopt.c.

New in x264 Video Codec r1562 (Apr 27, 2010)

  • Move deblocking code to a separate file
  • Should clean up frame.c a bit.

New in x264 Video Codec r1561 (Apr 27, 2010)

  • fix ffms demuxer to support input timebase values > 2^31

New in x264 Video Codec r1560 (Apr 27, 2010)

  • Fix 10l in cache_load changes
  • Broke constrained intra pred, probably not anything else.

New in x264 Video Codec r1559 (Apr 27, 2010)

  • Faster fullpel predictor checking
  • Also shave a few instructions off dia/hex motion estimation loops.

New in x264 Video Codec r1558 (Apr 27, 2010)

  • Fix checkasm's generation of deblock inputs (regression in r1517)

New in x264 Video Codec r1557 (Apr 27, 2010)

  • Fix printing of bitrate when timestamps aren't available
  • Doesn't affect x264cli, but was broken in some other apps in CFR mode.

New in x264 Video Codec r1556 (Apr 27, 2010)

  • Don't check mv0 twice
  • One less SAD in motion estimation.
  • Also rename bmv -> pmv; more accurate naming.

New in x264 Video Codec r1555 (Apr 27, 2010)

  • Remove reordering restrictions from weightp
  • Apparently the spec does allow two consecutive copies of the same frame in the reference list.
  • This involves an incredibly ugly hack to wrap around the frame number.
  • Very slight compression improvement.

New in x264 Video Codec r1554 (Apr 27, 2010)

  • Print intra chroma pred modes in stats

New in x264 Video Codec r1553 (Apr 27, 2010)

  • Add mv0 special case in pskip chroma MC
  • Significantly faster pskip MC.

New in x264 Video Codec r1552 (Apr 27, 2010)

  • Fix build scripts to work with non-GNU tools

New in x264 Video Codec r1551 (Apr 27, 2010)

  • Faster deblock reference frame checks
  • Use a lookup table to simplify logic

New in x264 Video Codec r1550 (Apr 27, 2010)

  • Faster chroma CBP handling

New in x264 Video Codec r1549 (Apr 27, 2010)

  • Fix issues with extremely large timebases
  • With timebase denominators >= 2^30 , x264 would silently overflow and cause odd issues.
  • Now x264 will explicitly fail with timebase denominators >= 2^31 and work with timebase denominators 2^31 > x >= 2^30.

New in x264 Video Codec r1548 (Apr 27, 2010)

  • MMX code for predictor rounding/clipping
  • Faster predictor checking at subme < 3.

New in x264 Video Codec r1547 (Apr 27, 2010)

  • Fix four minor bugs found by Clang

New in x264 Video Codec r1546 (Apr 27, 2010)

  • Move deblocking/hpel into sliced threads
  • Instead of doing both as a separate pass, do them during the main encode.
  • This requires disabling deblocking between slices (disable_deblock_idc == 2).
  • Overall performance gain is about 11% on --preset superfast with sliced threads.
  • Doesn't reduce the amount of actual computation done: only better parallelizes it.

New in x264 Video Codec r1545 (Apr 27, 2010)

  • Prefetch MB data in cache_load
  • Dramatically reduces L1 cache misses.
  • ~10% faster cache_load.

New in x264 Video Codec r1544 (Apr 27, 2010)

  • Fix a ton of pessimization caused by aliasing in cache_save and cache_load

New in x264 Video Codec r1543 (Apr 27, 2010)

  • Add CP128/M128 macros using SSE

New in x264 Video Codec r1542 (Apr 19, 2010)

  • Fix various early terminations with slices
  • Neighbouring type values (type_top, etc) are now loaded even if the MB isn't available for prediction.
  • Significant overall performance increase (as high as 5-10%+) with lots of slices (e.g. with slice-max-size).

New in x264 Video Codec r1541 (Apr 19, 2010)

  • Enable --fast-pskip on fast firstpass

New in x264 Video Codec r1540 (Apr 19, 2010)

  • Make interlaced detection in avisynth only apply to field-based input
  • Fixes improper flagging of progressive sources.

New in x264 Video Codec r1539 (Apr 19, 2010)

  • Set psy=0 in lossless mode
  • Doesn't actually affect output, just what's written in the SEI.

New in x264 Video Codec r1538 (Apr 12, 2010)

  • Fix a use of sad_x4 that had non-mod64 stride
  • Minimal speed improvement, but fixes a violation of internal api.

New in x264 Video Codec r1537 (Apr 12, 2010)

  • Make keyint_min auto by default
  • Gives more reasonable default settings when using short GOPs.

New in x264 Video Codec r1536 (Apr 12, 2010)

  • Faster mv predictor checking at subme < 3
  • Simplify the predicted MV cost check.

New in x264 Video Codec r1535 (Apr 12, 2010)

  • Special case in qpel refine for subme=1
  • ~15-20% faster qpel refine with subme=1.
  • Some minor cleanups in refine_supel.

New in x264 Video Codec r1534 (Apr 12, 2010)

  • Cosmetics: VLC tables

New in x264 Video Codec r1533 (Apr 12, 2010)

  • Add faster mv0 special case for macroblock-tree
  • Improves performance on low-motion video.

New in x264 Video Codec r1532 (Apr 12, 2010)

  • Add miscompilation check for x264_clz
  • Running a Phenom-optimized build of x264 (e.g. -march=amdfam10) on a non-Phenom CPU didn't SIGILL; instead it would silently produce incorrect output.
  • Now, instead, it will error out loudly.

New in x264 Video Codec r1531 (Apr 12, 2010)

  • Fixing floating-point exception in level-checking
  • Doesn't cause any issues for x264cli, but might impact some calling apps that care (e.g. Delphi apps).

New in x264 Video Codec r1530 (Apr 12, 2010)

  • Save a few bits in multislice encoding
  • Set the initial QP for each slice to the last QP of the previous slice.

New in x264 Video Codec r1529 (Apr 12, 2010)

  • Early termination in 16x8/8x16 search
  • Combine the actual cost of the first partition with the predicted cost of the second to avoid searching the second when possible.
  • Reduces the number of times the second partition is searched by up to ~75% in non-RD mode, ~10% in RD mode.
  • Negligible effect on compression.

New in x264 Video Codec r1528 (Apr 12, 2010)

  • Make MV prediction work across slice boundaries
  • Should improve motion search with lots of small slices, e.g. with slice-max-size.
  • Still restricted by sliced threads (won't cross the boundary between two threadslices).
  • The output-changing part of the previous patch.

New in x264 Video Codec r1527 (Apr 12, 2010)

  • Cleanup and simplification of macroblock_load
  • Doesn't do anything now, but will be useful for many future changes.
  • Splitting out neighbour calculation will make MBAFF implementation easier.
  • Calculation of neighbour_frame value (actual neighbouring MBs, ignoring slices) will be useful for some future patches.

New in x264 Video Codec r1526 (Apr 12, 2010)

  • Add missing #include to display-x11.c

New in x264 Video Codec r1525 (Apr 12, 2010)

  • Add TFF/BFF detection to all demuxers
  • Fix interlaced Avisynth input, automatically weave field-based input.

New in x264 Video Codec r1524 (Apr 12, 2010)

  • Correctly mark output frames as BREF
  • Simplify pic_out code.

New in x264 Video Codec r1523 (Apr 8, 2010)

  • Better b16x8/8x16 early termination in B-frames
  • A bit slower but up to 1-2% better compression.

New in x264 Video Codec r1522 (Apr 8, 2010)

  • Better b16x8/8x16 early termination in B-frames
  • A bit slower but up to 1-2% better compression.

New in x264 Video Codec r1521 (Apr 8, 2010)

  • Fix 10L in B-skip improvement patch

New in x264 Video Codec r1520 (Apr 8, 2010)

  • Fix printing of SEI header with VBV + ABR
  • SEI header shouldn't say CBR unless bitrate == maxrate.

New in x264 Video Codec r1519 (Apr 8, 2010)

  • Simplify slicetype_frame_cost
  • Avoid redundant calculations when VBV is on (due to the intra-only call).
  • Move most of the logic into per-MB code.

New in x264 Video Codec r1518 (Apr 8, 2010)

  • Faster CABAC state copying for small partitions
  • Save ~25 clocks per i4x4, i8x8, and sub8x8 RD call.

New in x264 Video Codec r1517 (Apr 8, 2010)

  • Massive cosmetic and syntax cleanup
  • Convert all applicable loops to use C99 loop index syntax.
  • Clean up most inconsistent syntax in ratecontrol.c, visualize, ppc, etc.
  • Replace log(x)/log(2) constructs with log2, and similar with log10.
  • Fix all -Wshadow violations.
  • Fix visualize support.

New in x264 Video Codec r1516 (Apr 8, 2010)

  • Fix array overread in b8x16 search

New in x264 Video Codec r1515 (Apr 8, 2010)

  • Faster direct check with subpartitions off
  • Also simplify the whole function a bit.

New in x264 Video Codec r1514 (Apr 8, 2010)

  • Print crf-max with appropriate precision in SEI

New in x264 Video Codec r1513 (Apr 8, 2010)

  • Fix 10l in timecode seeking

New in x264 Video Codec r1512 (Apr 8, 2010)

  • Fix 10L: Remove needless error check
  • This error check was for cfr input + --timebase, but that doesn't happen, and brings about a bug with vfr input.

New in x264 Video Codec r1511 (Apr 8, 2010)

  • Don't use 2 L1 refs with pyramid + ref=1
  • Slightly faster encoding with ref=1.

New in x264 Video Codec r1510 (Mar 29, 2010)

  • Update copyright year in SEI header

New in x264 Video Codec r1509 (Mar 29, 2010)

  • New "superfast" preset, much faster intra analysis
  • Especially at the fastest settings, intra analysis was taking up the majority of MB analysis time.
  • This patch takes a ton more shortcuts at the fastest encoding settings, decreasing compression 0.5-5% but improving speed greatly.
  • Also rearrange the fastest presets a bit: now we have ultrafast, superfast, veryfast, faster.
  • superfast is the old veryfast (but much faster due to this patch).
  • veryfast is between the old veryfast and faster.
  • faster is the same as before except with MB-tree on.
  • Encoding with subme >= 5 should be unaffected by this patch.

New in x264 Video Codec r1508 (Mar 29, 2010)

  • Avoid redundant MV prediction in duplicate refs

New in x264 Video Codec r1507 (Mar 29, 2010)

  • Cosmetics in mvd handling
  • Use a 2D array instead of doing manual pointer arithmetic.

New in x264 Video Codec r1506 (Mar 29, 2010)

  • Fix make uninstall on systems with executable suffixes

New in x264 Video Codec r1505 (Mar 29, 2010)

  • Add tune for still image compression
  • There has been some demand for this from companies looking to use x264 for still image compression (it can outperform JPEG or JPEG-2000 by a factor of 2 or more).
  • Still image compression is a bit different; because temporal stability isn't an issue, we can get away with far more powerful psy settings.

New in x264 Video Codec r1504 (Mar 29, 2010)

  • Pad non-mod16 resolutions using the correct field
  • Improves compression of interlaced videos with non-mod16 heights.

New in x264 Video Codec r1503 (Mar 29, 2010)

  • Document slow/fast firstpass in --fullhelp

New in x264 Video Codec r1502 (Mar 29, 2010)

  • Fix some misattributions in profiling
  • Cycles spent in load_hadamard and the avg2 w16 ssse3 cacheline split code were misattributed.

New in x264 Video Codec r1501 (Mar 29, 2010)

  • Much faster non-RD intra analysis
  • Since every pred mode costs at least 1 bit, move that part into the initial SATD cost.
  • This lets i4x4/i8x8 analysis terminate earlier.
  • If the cost of the predicted mode is less than the cost of signalling any other mode, early-terminate the analysis.

New in x264 Video Codec r1500 (Mar 29, 2010)

  • Fix stack alignment in sliced threads
  • Could cause crashes when called from non-GCC-compiled applications.

New in x264 Video Codec r1499 (Mar 29, 2010)

  • Cosmetics: use sizeof() where appropriate

New in x264 Video Codec r1498 (Mar 29, 2010)

  • Split up analyse_init
  • Save some time by avoiding some unnecessary inits and moving other parts to per-thread init.

New in x264 Video Codec r1497 (Mar 29, 2010)

  • Reduce stack usage of b-adapt 2's trellis
  • Also remove some redundant code.

New in x264 Video Codec r1496 (Mar 29, 2010)

  • Various motion estimation optimizations
  • Faster method of checking MV range.
  • Predict MVs and cache MVs/MVDs for bidir qpel-RD.
  • A whole bunch of other minor optimizations.
  • Slightly better performance and compression.

New in x264 Video Codec r1495 (Mar 29, 2010)

  • Overhaul macroblock_cache_rect
  • Unify the rectangle functions into a single one similar to ffmpeg's fill_rectangle.
  • Remove all cases of variable-size cache_rect calls; create a function-pointer-based system for handling such cases.
  • Should greatly decrease code size required for such calls.

New in x264 Video Codec r1494 (Mar 29, 2010)

  • Make a bunch of small functions ALWAYS_INLINE
  • Probably no real effect for now, but needed for the next patch.

New in x264 Video Codec r1493 (Mar 29, 2010)

  • Two compatibility fixes
  • Add IA64 support in configure.

New in x264 Video Codec r1492 (Mar 29, 2010)

  • Faster x264_macroblock_encode_pskip
  • GCC is apparently unable to optimize out the calculation of a variable when it isn't used.

New in x264 Video Codec r1491 (Mar 29, 2010)

  • Much more accurate B-skip detection at 2 < subme < 7
  • Use the same method that x264 uses for P-skip detection.
  • This significantly improves quality (1-6%), but at a significant speed cost as well (5-20%).
  • It also may have a very positive visual effect in cases where the inaccurate skip detection resulted in slightly-off vectors in B-frames.
  • This could cause slight blurring or non-smooth motion in low-complexity frames at high quantizers.
  • Not all instances of this problem are solved: the only universal solution is non-locally-optimal mode decision, which x264 does not currently have.
  • subme >= 7 or

New in x264 Video Codec r1490 (Mar 29, 2010)

  • Reformat profile restrictions in --fullhelp.
  • Put "no interlaced", "no lossless" on their own line to avoid them
  • running into the default options list.

New in x264 Video Codec r1489 (Mar 29, 2010)

  • Fix typo in configure

New in x264 Video Codec r1488 (Mar 29, 2010)

  • Add support for spaces to iPhone GAS preprocessor script

New in x264 Video Codec r1487 (Mar 29, 2010)

  • Fix slightly wrong mp4 duration.

New in x264 Video Codec r1486 (Mar 29, 2010)

  • Fix link errors with newest gpac cvs
  • gpac decided to randomly break API and require us to use their own custom malloc and free.

New in x264 Video Codec r1485 (Mar 29, 2010)

  • Save a few bits in slice headers
  • Don't override the maximum ref index in the slice header if it's the same as the default.
  • Also update the naming of the relevant variables in the PPS.

New in x264 Video Codec r1484 (Mar 29, 2010)

  • Shrink some arrays in x264_t
  • Also remove an unnecessary assignment from cache_load.

New in x264 Video Codec r1483 (Mar 29, 2010)

  • Use x264_log in more places instead of fprintf

New in x264 Video Codec r1482 (Mar 29, 2010)

  • Fix two nondeterminisms
  • Move noise reduction data into thread-specific data.
  • Use correct reference list for L1 temporal predictors.

New in x264 Video Codec r1481 (Mar 29, 2010)

  • "CRF-max" support with VBV
  • This is a rather curious feature that may have more use than is initially obvious.
  • In CRF mode with VBV enabled, CRF-max allows the user to specify a quality level which the encoder will never go below, even due to the effects of VBV.
  • This is not the same as qpmax, which is not aware of issues like scene complexity.
  • Setting this WILL cause VBV underflows in any situation where the encoder would have needed to exceed the relevant CRF to avoid underflow.
  • Why might one want to do this even if it would cause VBV underflows?
  • In the case of streaming, particularly ultra-low-latency streaming, it may be preferable to drop frames than to display frames that are of too low a quality.
  • Thus, in extremely complex scenes, rather than display completely awful video, the streaming server could simply drop to a lower framerate.
  • Scenecuts, which normally look terrible under situations like single-frame VBV, could be handled by just displaying them a bit later and dropping frames to compensate.
  • In other words, it's better to see the scenecut 150ms delayed than for it to look like a blocky mess for 150ms.
  • On the caller-side, this would be handled by detecting the output size of x264's frames and dropping future frames to compensate if necessary.
  • This can also be used in normal encoding simply to ensure that VBV does not hurt quality too much (at the cost of potentially causing underflows).
  • This can help quite a lot when using single-frame VBV and sliced threads, where VBV can often be somewhat unstable.

New in x264 Video Codec r1480 (Mar 29, 2010)

  • Blu-ray support: NAL-HRD, VFR ratecontrol, filler, pulldown
  • x264 can now generate Blu-ray-compliant streams for authoring Blu-ray Discs!
  • Compliance tested using Sony BD-ROM Verifier 1.21.
  • Thanks to The Criterion Collection for sponsoring compliance testing!
  • An example command, using constant quality mode, for 1080p24 content:
  • x264 --crf 16 --preset veryslow --tune film --weightp 0 --bframes 3 --nal-hrd vbr --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 24 --b-pyramid strict --slices 4 --aud --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 -o
  • This command is much more complicated than usual due to the very complicated restrictions the Blu-ray spec has.
  • Most options after "tune" are required by the spec.
  • weightp 0 is not, but there are known bugged Blu-ray player chipsets (Mediatek, notably) that will decode video with --weightp 1 or 2 incorrectly.
  • Furthermore, note the Blu-ray spec has very strict limitations on allowed resolution/fps combinations.
  • Examples include 1080p @ 24000/1001fps (NTSC FILM) and 720p @ 60000/1001fps.
  • Detailed features introduced in this patch:
  • Full NAL-HRD compliance, with both VBR (no filler) and CBR (filler) modes.
  • Can be enabled with --nal-hrd vbr/cbr.
  • libx264 now returns HRD timing information to the caller in the form of an x264_hrd_t.
  • x264cli doesn't currently use it, but this information is critical for compliant TS muxing.
  • Full VFR ratecontrol support: VBV, 1-pass ABR, and 2-pass modes.
  • This means that, even without knowing the average framerate, x264 can achieve a correct bitrate in target bitrate modes.
  • Note that this changes the statsfile format; first pass encodes make before this patch will have to be re-run.
  • Pulldown support: libx264 allows the calling application to specify a pulldown mode for each frame.
  • This is similar to the way that RFFs (Repeat Field Flags) work in MPEG-2.
  • Note that libx264 does not modify timestamps: it assumes the calling application has set timestamps correctly for pulldown!
  • x264cli contains an example implementation of caller-side pulldown code.
  • Pic_struct support: necessary for pulldown and allows interlaced signalling.
  • Also signal TFF vs BFF with delta_poc_bottom: should significantly improve interlaced compression.
  • tff and --bff should be preferred to the old --interlaced in order to tell x264 what field order to use.
  • Huge thanks to Alex Giladi and Lamont Alston for their work on code that eventually became part of this patch.

New in x264 Video Codec r1479 (Mar 29, 2010)

  • Timecode input/output
  • tcfile-in allows a user to specify a timecode v1 or v2 file to override input timestamps.
  • Useful for dealing with VFR input, especially when FFMS/LAVF support isn't available.
  • tcfile-out writes a timecode v2 file containing the timecodes of the output file.
  • New --timebase option allows a user to change the stream timebase.
  • Intended primarily for forcing timebase with timecode files if necessary.
  • When using --seek, note that x264 will seek in the timecode file as well.

New in x264 Video Codec r1478 (Mar 29, 2010)

  • Mixed-refs support for B-frames
  • Small speed cost, usually a few percent at most. Generally has lowest cost in cases when it isn't very useful. Up to ~2% better compression overall on highly complex sources.
  • Also fix a few minor bugs in B-frame analysis and various bits of cleanup.

New in x264 Video Codec r1477 (Mar 29, 2010)

  • Faster rounding of chroma DC coefficients

New in x264 Video Codec r1476 (Mar 29, 2010)

  • Faster cabac_encode_decision_asm
  • Minimizes instruction count, which also means smaller code.
  • Various other slight changes to allow more instruction level parallelism.

New in x264 Video Codec r1475 (Mar 29, 2010)

  • Faster hpel_filter
  • On ssse3, use pmaddubsw for h filter too (similar to v filter).
  • Change 32-bit v and c filters to write the result non-temporal.
  • Add commented-out defines to disable non-temporal operation.
  • Hardly any black magic here, but still a measurable win especially for ssse3.

New in x264 Video Codec r1474 (Mar 29, 2010)

  • Ignore XYSCSS in y4m if the newer standard C tag is present
  • Apparently y4mscaler will generate 4:2:0 files with XYSCSS set to 444

New in x264 Video Codec r1473 (Mar 29, 2010)

  • Fix regression in r1450
  • I_PCM blocks would cause x264 to crash or generate bad output. Simplify PCM handling.

New in x264 Video Codec r1472 (Mar 29, 2010)

  • Fix crash with intra-refresh + aq-mode 0

New in x264 Video Codec r1471 (Mar 8, 2010)

  • Fix regression in r1453
  • r1453 broke psy-trellis with --trellis 2

New in x264 Video Codec r1470 (Mar 8, 2010)

  • Fix regression in r1449
  • Incorrectly placed thread MV check could result in rare thread MV internal errors, esp. with --non-deterministic.
  • These weren't fatal errors (x264 could recover and continue with slight compression loss).

New in x264 Video Codec r1469 (Mar 8, 2010)

  • Cut size of MVD arrays by a factor of 2 again
  • Only store the MVDs of the edges of each MB.
  • Thanks to Michael Niedermayer for the idea.

New in x264 Video Codec r1468 (Mar 8, 2010)

  • Disable Altivec and VIS optimizations when --disable-asm is specified

New in x264 Video Codec r1467 (Mar 8, 2010)

  • Fix a buffer overread on odd input resolutions

New in x264 Video Codec r1466 (Mar 8, 2010)

  • Fix one bug, one corner case in VBV
  • qp_novbv wasn't set correctly for B-frames.
  • Disable ABR code for frames with zero complexity.
  • Disable ABR code for CBR mode; it is completely unnecessary and can have negative consequences.

New in x264 Video Codec r1465 (Mar 8, 2010)

  • Port Mans Rullgard's NEON intra prediction functions from ffmpeg

New in x264 Video Codec r1464 (Mar 8, 2010)

  • Remove unused function
  • Two other minor fixes.

New in x264 Video Codec r1463 (Mar 8, 2010)

  • Use short startcode in more possible situations
  • Previous patch didn't cover all possible uses according to B.1.2.

New in x264 Video Codec r1462 (Mar 8, 2010)

  • Fix fastfirstpass
  • Apparently the libx264 preset changes made "fastfirstpass" into "fastsecondpass" inadvertantly.

New in x264 Video Codec r1461 (Mar 8, 2010)

  • Fix various silly errors in the previous patches

New in x264 Video Codec r1460 (Mar 8, 2010)

  • Actually error out if preset/tune/profile is invalid
  • Got lost somewhere in the move to libx264-based presets.

New in x264 Video Codec r1459 (Mar 8, 2010)

  • Faster probe_skip, 2x2 DC transform handling
  • Move the 2x2 DC DCT into the dct_dc asm function to avoid some store-to-load forwarding penalties and extra register loads.
  • Use dct_dc as part of the early termination in probe_skip.
  • x86 asm partially by Holger Lubitz.
  • ARM NEON asm by David Conrad.

New in x264 Video Codec r1458 (Mar 8, 2010)

  • Use short startcodes whenever possible
  • Saves one byte per frame for every slice beyond the first.
  • Only applies to Annex-B output mode.

New in x264 Video Codec r1457 (Mar 8, 2010)

  • New algorithm for AQ mode 2
  • Combines the auto-ness of AQ2 with a new var^0.25 instead of log(var) formula.
  • Works better with MB-tree than the old AQ mode 2 and should give higher SSIM.

New in x264 Video Codec r1456 (Mar 8, 2010)

  • Abide by the MinCR level limit
  • Some Blu-ray analyzers were complaining about this.

New in x264 Video Codec r1455 (Mar 8, 2010)

  • Make b-pyramid normal the default
  • Now that b-pyramid works with MB-tree and is spec compliant, there's no real reason not to make it default.
  • Improves compression 0-5% depending on the video.
  • Also allow 0/1/2 to be used as aliases for none/strict/normal (for conciseness).

New in x264 Video Codec r1454 (Mar 8, 2010)

  • Move presets, tunings, and profiles into libx264
  • Now any application calling libx264 can use them.
  • Full documentation and guidelines for usage are included in x264.h.

New in x264 Video Codec r1453 (Mar 8, 2010)

  • Faster, more accurate psy-RD caching
  • Keep more variants of cached Hadamard scores and only calculate them when necessary.
  • Results in more calculation, but simpler lookups.
  • Slightly more accurate due to internal rounding in SATD and SA8D functions.

New in x264 Video Codec r1452 (Mar 8, 2010)

  • Much faster and more efficient MVD handling
  • Store MV deltas as clipped absolute values.
  • This means CABAC no longer has to calculate absolute values in MV context selection.
  • This also lets us cut the memory spent on MVDs by a factor of 2, speeding up cache_mvd and reducing memory usage by 32*threads*(num macroblocks) bytes.
  • On a Core i7 encoding 1080p, this is about 3 megabytes saved.

New in x264 Video Codec r1451 (Mar 8, 2010)

  • Add temporal predictor support to interlaced encoding
  • 0.5-1% better compression in interlaced mode

New in x264 Video Codec r1450 (Mar 8, 2010)

  • Keep track of macroblock partitions
  • Allows vastly simpler motion compensation and direct MV calculation.

New in x264 Video Codec r1449 (Mar 8, 2010)

  • Much faster and simpler direct spatial calculation

New in x264 Video Codec r1448 (Mar 8, 2010)

  • SimpleBlock requires Matroska Doctype v2

New in x264 Video Codec r1447 (Mar 8, 2010)

  • Add GPAC version check

New in x264 Video Codec r1446 (Mar 8, 2010)

  • Fix stupid regression in interlaced in r1430
  • With ref > 8 or b-pyramid, an array over-read could cause slightly incorrect B-frames.

New in x264 Video Codec r1445 (Mar 8, 2010)

  • Fix overread of scratch buffer
  • Could cause crashes on non-mod16 frames.

New in x264 Video Codec r1444 (Mar 8, 2010)

  • Fix integer overflow in chroma SSD check
  • Could cause bad skips at very high quantizers on extreme inputs.

New in x264 Video Codec r1443 (Mar 8, 2010)

  • Fix I and B-frame QPs with threads
  • Rounding errors resulted in slightly wrong QPs with threads enabled.

New in x264 Video Codec r1442 (Mar 8, 2010)

  • Fix compilation on ARM

New in x264 Video Codec r1441 (Mar 8, 2010)

  • Remove unnecessary PIC support macros
  • yasm has a directive to enable PIC globally

New in x264 Video Codec r1440 (Mar 8, 2010)

  • Don't even try direct temporal when it would give junk MVs
  • In PbBbP pyramid structure, the last "b" cannot use temporal because L0Ref0(L1Ref0) != L0Ref0.
  • Don't even bother analyzing it, just use spatial.
  • Should improve speed and direct auto effectiveness in CRF and 1-pass modes when b-pyramid is used.
  • Also makes --direct temporal useful with --b-pyramid, since it will fall back to spatial for frames where temporal is broken.

New in x264 Video Codec r1439 (Mar 8, 2010)

  • iPhone compilation support
  • Also add --sysroot to configure options
  • To build for iPhone 3gs / iPod touch 3g: CC=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc ./configure --host=arm-apple-darwin --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.0.sdk
  • For older devices, add extra-cflags='-arch armv6 -mcpu=arm1176jzf-s' --extra-ldflags='-arch armv6' --disable-asm

New in x264 Video Codec r1438 (Mar 8, 2010)

  • ARM NEON versions of weightp functions

New in x264 Video Codec r1437 (Mar 8, 2010)

  • Use #ifdef instead of #if in checkasm

New in x264 Video Codec r1436 (Mar 8, 2010)

  • Make the ABR buffer consider the distance to the end of the video
  • Should improve bitrate accuracy in 2-pass mode.
  • May also slightly improve quality by allowing more variation earlier-on in a file.
  • Also fix abr_buffer with 1-pass: it does something very different than what it does for 2-pass.
  • Thus, the earlier change that increased it based on threads caused 1-pass ABR to be somewhat less accurate.

New in x264 Video Codec r1435 (Mar 8, 2010)

  • Mark cli_input/output_t variables as const when possible

New in x264 Video Codec r1434 (Mar 8, 2010)

  • mkv: Write the x264 version into the file header
  • This only updates the "writing application"; matroska_ebml.c is the "muxing application", but the version string for that is still hardcoded.

New in x264 Video Codec r1433 (Mar 8, 2010)

  • mkv: Write SimpleBlock instead of Block for frame headers
  • mkvtoolnix writes these by default since 2009/04/13.
  • Slightly simplifies muxer and allows 'mkvinfo -s' to show B-frames as 'B' (but not B-ref frames).

New in x264 Video Codec r1432 (Mar 8, 2010)

  • Allow | as a separator between psy-rd and psy-trellis values.
  • [,:/] are all taken when setting psy-trellis in a zone in an mencoder option.
  • Also fix a comment typo and remove a useless line of code.

New in x264 Video Codec r1431 (Mar 8, 2010)

  • Backport various speed tweak ideas from ffmpeg
  • Add mv0 early termination to spatial direct calculation
  • Up to twice as fast direct mv calculation on near-motionless video.
  • Branchless CAVLC level code adjustment based on trailing ones.
  • A few clocks faster.
  • Check tc value before clipping in C version of deblock functions.
  • Much faster, but nobody uses those anyways.

New in x264 Video Codec r1430 (Mar 8, 2010)

  • Implement direct temporal + interlaced
  • This was much easier than I expected.
  • It will also be basically useless until TFF/BFF support gets in, since it requires delta_poc_bottom to be set correctly to work well.

New in x264 Video Codec r1429 (Mar 8, 2010)

  • Allow longer keyints with intra refresh
  • If a long keyint is specified (longer than macroblock width-1), the refresh will simply not occur all the time.
  • In other words, a refresh will take place, and then x264 will wait until keyint is over to start another refresh.

New in x264 Video Codec r1428 (Mar 8, 2010)

  • Overhaul sliced-threads VBV
  • Make predictors thread-local and allow each thread to poll the others to get their predicted sizes.
  • Many, many other tweaks to improve quality with small VBV and sliced threads.
  • Note this may somewhat increase the risk of a VBV underflow in such extreme situations (single-frame VBV).
  • This is tolerable, as most relevant use-cases are better off with a few rare underflows (even if they have to drop a slice) than consistent low quality.

New in x264 Video Codec r1427 (Mar 8, 2010)

  • Print psy-(rd|trellis) with more precision in userdata SEI

New in x264 Video Codec r1426 (Mar 8, 2010)

  • More formatting fixes in x264 help

New in x264 Video Codec r1425 (Mar 8, 2010)

  • Faster 2x2 chroma DC dequant

New in x264 Video Codec r1424 (Mar 8, 2010)

  • Write PASP atom in mp4 muxing
  • Adds container-level aspect ratio support for mp4.

New in x264 Video Codec r1423 (Mar 8, 2010)

  • Fix 2-pass ratecontrol continuation in case of missing statsfile
  • Didn't work properly if MB-tree was enabled.

New in x264 Video Codec r1422 (Mar 8, 2010)

  • Smarter QPRD
  • Catch some cases in which RD checks can be avoided; reduces QPRD RD calls by 10-20%.

New in x264 Video Codec r1421 (Mar 8, 2010)

  • Fix subpel iteration counts with B-frame analysis and subme 6/8
  • Since subme 6 means "like subme 5, except RD on P-frames", B-frame analysis
  • shouldn't use the RD subpel counts at subme 6. Similarly with subme 8.
  • Slightly faster (and very marginally worse) compression at subme 6 and 8.

New in x264 Video Codec r1420 (Mar 8, 2010)

  • Simplify decimate checks in macroblock_encode
  • Also fix a misleading comment.

New in x264 Video Codec r1419 (Mar 8, 2010)

  • Improve bidir search, fix some artifacts in fades
  • Modify analysis to allow bidir to use different motion vectors than L0/L1.
  • Always try the motion vector for bidir.
  • Eliminates almost all errant motion vectors in fades.
  • Slightly improves PSNR as well (~0.015db).

New in x264 Video Codec r1418 (Mar 8, 2010)

  • Slightly faster predictor_difference_mmxext

New in x264 Video Codec r1417 (Mar 8, 2010)

  • Add ability to adjust ratecontrol parameters on the fly encoder_reconfig and x264_picture_t->param can now be used to change ratecontrol parameters.
  • This is extraordinarily useful in certain streaming situations where the encoder needs to adapt the bitrate to network circumstances.
  • x264 cannot switch between modes and cannot change bitrate in ABR mode
  • Also fix a bug where x264_picture_t->param reconfig method would not always be frame-exact.
  • What can be changed:
  • 1) CRF can be adjusted if in CRF mode.
  • 2) VBV maxrate and bufsize can be adjusted if in VBV mode.
  • 3) Bitrate can be adjusted if in CBR mode.

New in x264 Video Codec r1416 (Jan 31, 2010)

  • Fix regression in r1406
  • Bitrate was printed incorrectly for some input framerates.

New in x264 Video Codec r1415 (Jan 31, 2010)

  • Fix log2f detection, include order, some gcc warnings
  • r1413 caused crashes on any system with malloc.h.
  • Also switch to std=c99 or std=gnu99 if supported by the compiler.
  • Fix visualize support.

New in x264 Video Codec r1414 (Jan 31, 2010)

  • Fix abstraction violations in x264.c
  • No calling application--not even x264cli--should ever look inside x264_t.

New in x264 Video Codec r1413 (Jan 31, 2010)

  • Move -D CFLAGS to config.h

New in x264 Video Codec r1412 (Jan 31, 2010)

  • Fix stat with large file support

New in x264 Video Codec r1411 (Jan 31, 2010)

  • Implement ffms2 version check
  • Depends on ffms2 version 2.13.1 (r272).
  • Tries pkg-config's built-in version checking first.
  • Uses only the preprocessor to avoid cross-compilation issues.

New in x264 Video Codec r1410 (Jan 31, 2010)

  • Fix implicit CBR message to only print when in ABR mode
  • Also make it print outside of debug mode.

New in x264 Video Codec r1409 (Jan 31, 2010)

  • Add configure check for log2 support
  • Some incredibly braindamaged operating systems, such as FreeBSD, blatantly ignore the C specification and omit certain functions that are required by ISO C.
  • log2f is one of these functions that periodically goes missing in such operating systems.

New in x264 Video Codec r1408 (Jan 31, 2010)

  • Add config.log support
  • Now, if configure fails, you'll be able to see why.

New in x264 Video Codec r1407 (Jan 31, 2010)

  • Fix cross-compiling with lavf, add support for ffms2.pc
  • Also update configure script to work with newest ffms.

New in x264 Video Codec r1406 (Jan 31, 2010)

  • Improve DTS generation, move DTS compression into libx264
  • This change fixes some cases in which PTS could be less than DTS.
  • Additionally, a new parameter, b_dts_compress, enables DTS compression.
  • DTS compression eliminates negative DTS (i.e. initial delay) due to B-frames.
  • The algorithm changes timebase in order to avoid duplicating DTS.
  • Currently, in x264cli, only the FLV muxer uses it. The MP4 muxer doesn't need it, as it uses an EditBox instead.

New in x264 Video Codec r1405 (Jan 31, 2010)

  • Various threading-related cosmetics
  • Simplify a lot of code and remove some unnecessary variables.

New in x264 Video Codec r1404 (Jan 31, 2010)

  • Hardcode the bs_t in cavlc.c; passing it around is a waste
  • Saves ~1.5kb of code size, very slight speed boost

New in x264 Video Codec r1403 (Jan 31, 2010)

  • Fix lavf input with pipes and image sequences
  • x264 should now be able to encode from an image sequence using an image2-style formatted string (e.g. filed.jpg).

New in x264 Video Codec r1402 (Jan 31, 2010)

  • Fix bitstream alignment with multiple slices
  • Broke multi-slice encoding on CPUs without unaligned access.
  • New system simply forces a bitstream realignment at the start of each writing function and flushes when it reaches the end.

New in x264 Video Codec r1401 (Jan 31, 2010)

  • Merge nnz_backup with scratch buffer
  • Slightly less memory usage.

New in x264 Video Codec r1400 (Jan 21, 2010)

  • Use cross-prefix properly with pkg-config for cross-compiling

New in x264 Video Codec r1399 (Jan 21, 2010)

  • Various performance optimizations
  • Simplify and compact storage of direct motion vectors, faster --direct auto.
  • Shrink various arrays to save a bit of cache.
  • Simplify and reorganize B macroblock type writing in CABAC.
  • Add some missing ALIGNED macros.

New in x264 Video Codec r1398 (Jan 21, 2010)

  • Fix crash on new AMD M300 and similar CPUs
  • Apparently these CPUs have SSE4a, but not misaligned SSE.

New in x264 Video Codec r1397 (Jan 21, 2010)

  • Fix intra refresh with subme < 6
  • Also improve the quality of intra masking

New in x264 Video Codec r1396 (Jan 21, 2010)

  • Add support for multiple --tune options
  • Tunes apply in the order they are listed in the case of conflicts.
  • Psy tunings, i.e. film/animation/grain/psnr/ssim, cannot be combined.
  • Also clarify --profile, which forces the limits of a profile, not the profile itself.

New in x264 Video Codec r1395 (Jan 21, 2010)

  • Various bugfixes and tweaks in analysis
  • Fix the oldest-ever bug in x264: b16x8 analysis used the wrong width for predict_mv.
  • Fix cache_ref calls for slightly better MV prediction in bsub16x16 analysis.
  • Make B-partition analysis consider reference frame costs.
  • Various other minor changes.
  • Overall very slightly improved mode decision and motion search in B-frames.

New in x264 Video Codec r1394 (Jan 21, 2010)

  • More --me tesa optimizations

New in x264 Video Codec r1393 (Jan 21, 2010)

  • Fix typo in configure

New in x264 Video Codec r1392 (Jan 21, 2010)

  • Make --fps force CFR mode

New in x264 Video Codec r1391 (Jan 15, 2010)

  • Eliminate intentional array overflow in quant matrix handling
  • While it probably never caused problems, it was incredibly ugly and evil.

New in x264 Video Codec r1390 (Jan 15, 2010)

  • Faster --me tesa

New in x264 Video Codec r1389 (Jan 15, 2010)

  • Fix static pthreads + dynamically linked x264 on win32
  • Add the necessary static pthread initialization code to a new DLLmain function.

New in x264 Video Codec r1388 (Jan 15, 2010)

  • Add getopt_long to the included getopt.c
  • Fixes option handling on OSs that have a nonworking/missing getopt

New in x264 Video Codec r1387 (Jan 15, 2010)

  • Faster psy-trellis init
  • Remove some unncessary zigzags.

New in x264 Video Codec r1386 (Jan 15, 2010)

  • Simplfy intra mode availability handling
  • Slightly faster, 1.5kb smaller binary size, less code.

New in x264 Video Codec r1385 (Jan 15, 2010)

  • Fix free callback, add x264_encoder_parameters function
  • x264 would try to use the passed param struct after freeing if the param_free callback was set.
  • Probably didn't cause any issues, as probably no programs used the callback in this location yet.
  • A new x264_encoder_parameters function is now available in the API.
  • This function lets the calling application grab the current state of the encoder's parameters.
  • Use this in x264cli to ensure that the param struct used for set_param is updated with whatever changes x264_encoder_open has made to it.

New in x264 Video Codec r1384 (Jan 15, 2010)

  • Fix x264 compilation on Apple GCC
  • Apple's GCC stupidly ignores the ARM ABI and doesn't give any stack alignment beyond 4.

New in x264 Video Codec r1383 (Jan 15, 2010)

  • Faster weightp motion search
  • For blind-weight dupes, copy the motion vector from the main search and qpel-refine instead of doing a full search.
  • Fix the p8x8 early termination, which had unexpected results when combined with blind weighting.
  • Overall, marginally reduces compression but should potentially improve speed by over 5%.

New in x264 Video Codec r1382 (Jan 15, 2010)

  • More correct padding constants for lowres planes
  • Since lowres analysis isn't interlace-aware, we don't need to double the vertical padding for interlaced video.

New in x264 Video Codec r1381 (Jan 15, 2010)

  • Fix some invalid reads caught by valgrind
  • Temporal predictor calculation was misled by invalid reference counts for I-frames.

New in x264 Video Codec r1380 (Jan 15, 2010)

  • Periodic intra refresh
  • Uses SEI recovery points, a moving vertical "bar" of intra blocks, and motion vector restrictions to eliminate keyframes.
  • Attempt to hide the visual appearance of the intra bar when --no-psy isn't set.
  • Enabled with --intra-refresh.
  • The refresh interval is controlled using keyint, but won't exceed the number of macroblock columns in the frame.
  • Greatly benefits low-latency streaming by making it possible to achieve constant framesize without intra-only encoding.
  • Combined with slice-max size for one slice per packet, tests suggest effective resiliance against packet loss as high as 25%.
  • x264 is now the best free software low-latency video encoder in the world.
  • Accordingly, change the API to add b_keyframe to the parameters present in output pictures.
  • Calling applications should check this to see if a frame is seekable, not the frame type.
  • Also make x264's motion estimation strictly abide by horizontal MV range limits in order for PIR to work.
  • Also fix a major bug in sliced-threads VBV handling.
  • Also change "auto" threads for sliced threads to "cores" instead of "1.5*cores" after performance testing.
  • Also simplify ratecontrol's checking of first pass options.
  • Also some minor tweaks to row-based VBV that should improve VBV accuracy on small frames.

New in x264 Video Codec r1379 (Jan 15, 2010)

  • LAVF/FFMS input support, native VFR timestamp handling
  • libx264 now takes three new API parameters.
  • b_vfr_input tells x264 whether or not the input is VFR, and is 1 by default.
  • i_timebase_num and i_timebase_den pass the timebase to x264.
  • x264_picture_t now returns the DTS of each frame: the calling app need not calculate it anymore.
  • Add libavformat and FFMS2 input support: requires libav* and ffms2 libraries respectively.
  • FFMS2 is _STRONGLY_ preferred over libavformat: we encourage all distributions to compile with FFMS2 support if at all possible.
  • FFMS2 can be found at http://code.google.com/p/ffmpegsource/.
  • index, a new x264cli option, allows the user to store (or load) an FFMS2 index file for future use, to avoid re-indexing in the future.
  • Overhaul the muxers to pass through timestamps instead of assuming CFR.
  • Also overhaul muxers to correctly use b_annexb and b_repeat_headers to simplify the code.
  • Remove VFW input support, since it's now pretty much redundant with native AVS support and LAVF support.
  • Finally, overhaul a large part of the x264cli internals.
  • force-cfr, a new x264cli option, allows the user to force the old method of timestamp handling. May be useful in case of a source with broken timestamps.
  • Avisynth, YUV, and Y4M input are all still CFR. LAVF or FFMS2 must be used for VFR support.
  • Do note that this patch does *not* add VFR ratecontrol yet.
  • Support for telecined input is also somewhat dubious at the moment.

New in x264 Video Codec r1378 (Jan 15, 2010)

  • More help typo fixes

New in x264 Video Codec r1377 (Jan 15, 2010)

  • Fix x264_clz on inputs > 1

New in x264 Video Codec r1376 (Dec 16, 2009)

  • Don't do sum/ssd analysis if weightp == 1
  • Typo fixes in comments and help.

New in x264 Video Codec r1375 (Dec 16, 2009)

  • Fix two bugs in 2-pass ratecontrol
  • last_qscale_for wasn't set during the 2pass init code.
  • abr_buffer was way too small in the case of multiple threads, so accordingly increase its buffer size based on the number of threads.
  • May significantly increase quality with many threads in 2-pass mode, especially in cases with extremely large I-frames, such as anime.

New in x264 Video Codec r1374 (Dec 16, 2009)

  • Avisynth-MT and 2.6 compatibility fixes
  • Explain to the user why YV12 conversion is forced with Avisynth 2.6.
  • Fix encoding with Avisynth-MT scripts by inserting the necessary Distributor() call; speeds such scripts back up to expected levels.

New in x264 Video Codec r1373 (Dec 11, 2009)

  • Fix zone parsing on mingw
  • Due to MinGW evidently being in the hands of a pack of phenomenal idiots, MinGW does not have strtok_r, a basic string function.
  • As such, remove the dependency on strtok_r in zone parsing.
  • Previously, using zones for anything other than ratecontrol failed.

New in x264 Video Codec r1372 (Dec 11, 2009)

  • More lookahead optimizations
  • Under subme 1, don't do any qpel search at all and round temporal MVs accordingly.
  • Drop internal subme with subme 1 to do fullpel predictor checks only.
  • Other minor optimizations.

New in x264 Video Codec r1371 (Dec 11, 2009)

  • Various minor missing changes from previous commits
  • Boolify sliced threads too
  • Remove unused constants from dct-a.asm
  • Fix a few typos/minor errors in preset documentation

New in x264 Video Codec r1370 (Dec 11, 2009)

  • Fix regression in direct=auto/temporal in r1364
  • Bug caused rare race condition in frame reference handling.
  • This resulted in invalid bitstreams in some B-frames and, very rarely, crashes.

New in x264 Video Codec r1369 (Dec 10, 2009)

  • Add fast pskip to x264 SEI info header

New in x264 Video Codec r1368 (Dec 10, 2009)

  • Minor seeking fix with Avisynth input
  • Seeking past the end of the input with --seek would result in the same frame being repeated over and over.

New in x264 Video Codec r1367 (Dec 10, 2009)

  • Add support for MB-tree + B-pyramid
  • Modify B-adapt 2 to consider pyramid in its calculations.
  • Generally results in many more B-frames being used when pyramid is on.
  • Modify MB-tree statsfile reading to handle the reordering necessary.
  • Make differing keyint or pyramid between passes into a fatal error.

New in x264 Video Codec r1366 (Dec 10, 2009)

  • Use aliasing-avoidance macros in array_non_zero

New in x264 Video Codec r1365 (Dec 10, 2009)

  • MMX version of 8x8 interlaced zigzag
  • Just as fast as SSSE3 on Nehalem (and faster on Conroe/Penryn), so remove the SSSE3 version.

New in x264 Video Codec r1364 (Dec 10, 2009)

  • Bring back slice-based threading support
  • Enabled with --sliced-threads
  • Unlike normal threading, adds no encoding latency.
  • Less efficient than normal threading, both performance and compression-wise.
  • Useful for low-latency encoding environments where performance is still important, such as HD videoconferencing.
  • Add --tune zerolatency, which eliminates all x264 encoder-side latency (no delayed frames at all).
  • Some tweaks to VBV ratecontrol and lookahead (in addition to those required by sliced threading).
  • Commit sponsored by a media streaming company that wishes to remain anonymous.

New in x264 Video Codec r1363 (Dec 10, 2009)

  • Add more detailed help for presets/tunes/profiles
  • Shows what options they represent.

New in x264 Video Codec r1362 (Dec 10, 2009)

  • qpel RD no longer needs mbcmp_unaligned

New in x264 Video Codec r1361 (Dec 9, 2009)

  • ensure that all boolean options are {0,1} so they print consistently in the options SEI

New in x264 Video Codec r1360 (Dec 7, 2009)

  • Actually do r1356
  • Somehow commit r1356 got lost in the ether. I'm not sure how, but now it's fixed.

New in x264 Video Codec r1359 (Dec 7, 2009)

  • Remove some unused code from x264.c

New in x264 Video Codec r1358 (Dec 7, 2009)

  • SSSE3 version of zigzag_8x8_field
  • Slightly faster interlaced encoding with 8x8dct
  • Helps most on Nehalem, somewhat disappointing on Conroe/Penryn

New in x264 Video Codec r1357 (Dec 7, 2009)

  • Fix crash in interlaced with >8 refs
  • Crash introduced in weightp.

New in x264 Video Codec r1356 (Dec 7, 2009)

  • Significantly faster qpel-RD
  • Cache the results of MC, like in bidir-RD
  • Slightly changes output due to the necessary reordering of satd/RD calls
  • % faster qpel-RD

New in x264 Video Codec r1355 (Dec 7, 2009)

  • Add x264 prefix to functions with ffmpeg equivalents
  • Not important now, but will be when we add libav* input support.

New in x264 Video Codec r1354 (Nov 30, 2009)

  • 10L in r1353
  • Broke mp4 output.

New in x264 Video Codec r1353 (Nov 30, 2009)

  • Enhanced Avisynth input support
  • Requires avisynth_c.h from the Avisynth API headers.
  • Reports errors properly from Avisynth script input.
  • Automatically construct input scripts for almost any input file.
  • Tries ffmpegsource2, DSS2, directshowsource, and many other sourcing methods, based on the input file extension.
  • Automatically converts to YV12.

New in x264 Video Codec r1352 (Nov 27, 2009)

  • Much faster weightp
  • Move sum/ssd calculation out of lookahead and do it only once per frame.
  • Also various minor optimizations, cosmetics, and cleanups.

New in x264 Video Codec r1351 (Nov 27, 2009)

  • Fix bugs in fps/timestamp handling in FLV muxer

New in x264 Video Codec r1350 (Nov 27, 2009)

  • Fix bug in weight analysis
  • Weights weren't reset upon early terminations, so old (wrong) weights could stick around.
  • Small compression improvement.

New in x264 Video Codec r1349 (Nov 27, 2009)

  • Minor deblocking optimization, update comments

New in x264 Video Codec r1348 (Nov 27, 2009)

  • Fix weightb with delta_poc_bottom
  • Has no effect yet, but will be required once we add TFF/BFF signalling support in interlaced mode.
  • Gives 0.5-0.7% better compression with proper TFF/BFF signalling.

New in x264 Video Codec r1347 (Nov 23, 2009)

  • Give more meaningful error if 1st/2nd pass resolution differ

New in x264 Video Codec r1346 (Nov 23, 2009)

  • Fix extremely rare deadlock with sync-lookahead
  • Patch partially by Anton Mitrofanov.

New in x264 Video Codec r1345 (Nov 23, 2009)

  • Only print weightp stats if there were P-frames

New in x264 Video Codec r1344 (Nov 23, 2009)

  • Faster lookahead with subme=1
  • If it hasn't been clear already, don't use subme=1 as a "fast first pass" option.
  • Use subme=2 instead; 1 and below now enable a fast (lower quality) lookahead mode.

New in x264 Video Codec r1343 (Nov 23, 2009)

  • Faster weightp analysis
  • Modify pixel_var slightly to return the necessary information and use it for weight analysis instead of sad/ssd.
  • Various minor cosmetics.

New in x264 Video Codec r1342 (Nov 16, 2009)

  • Fix two issues in weightp
  • If analysis decided on an offset of -128, x264 would create non-compliant streams.
  • Fix some cases with nearly all intra blocks where analysis could pick very weird weights.
  • Also add some asserts to check compliancy.

New in x264 Video Codec r1341 (Nov 16, 2009)

  • Allow compilation with non-Apple GCC on OS X

New in x264 Video Codec r1340 (Nov 16, 2009)

  • Use __attribute__((may_alias)) for type-punning
  • GCC thinks pointer casts to unions aren't valid with strict aliasing.
  • See http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Optimize-Options.html#Type_002dpunning.
  • Also use M32() in y4m.c.
  • Enable -Wstrict-aliasing again since all such warnings are fixed.

New in x264 Video Codec r1339 (Nov 15, 2009)

  • 100l in deadlock fix

New in x264 Video Codec r1338 (Nov 15, 2009)

  • FLV muxing support

New in x264 Video Codec r1337 (Nov 15, 2009)

  • Fix rare deadlock introduced in weightp

New in x264 Video Codec r1336 (Nov 14, 2009)

  • Actually add -Wno-strict-aliasing to configure

New in x264 Video Codec r1335 (Nov 14, 2009)

  • Various weightp fixes
  • Make weightp results match in threaded vs non-threaded mode.
  • Fix two-pass with slow-firstpass.

New in x264 Video Codec r1334 (Nov 14, 2009)

  • Fix all aliasing violations
  • New type-punning macros perform write/read-combining without aliasing violations per the second-to-last part of 6.5.7 in the C99 specification.
  • GCC 4.4, however, doesn't seem to have read this part of the spec and still warns about the violations.
  • Regardless, it seems to fix all known aliasing miscompilations, so perhaps the GCC warning generator is just broken.
  • As such, add -Wno-strict-aliasing to CFLAGS.

New in x264 Video Codec r1333 (Nov 14, 2009)

  • Fix 10l in weightp on ARM

New in x264 Video Codec r1332 (Nov 14, 2009)

  • Fix one (of possibly many) miscompilations in weightp
  • Use NOINLINE and some emms calls to fix emms reordering issues.
  • This issue occurred with some GCC versions if threads > 1 and the phase of the moon was right.
  • Also a cosmetic in x264.c.

New in x264 Video Codec r1331 (Nov 14, 2009)

  • Fix pixel_ssd on win64
  • Didn't preserve XMM registers, may or may not have caused problems.

New in x264 Video Codec r1330 (Nov 14, 2009)

  • Fix weightp logfile parsing on MinGW

New in x264 Video Codec r1329 (Nov 14, 2009)

  • cosmetics

New in x264 Video Codec r1328 (Nov 14, 2009)

  • Fix weightp on ARM + PPC
  • No ARM or PPC assembly yet though.

New in x264 Video Codec r1327 (Nov 14, 2009)

  • Weighted P-frame prediction
  • Merge Dylan's Google Summer of Code 2009 tree.
  • Detect fades and use weighted prediction to improve compression and quality.
  • "Blind" mode provides a small overall quality increase by using a -1 offset without doing any analysis, as described in JVT-AB033.
  • "Smart", the default mode, also performs fade detection and decides weights accordingly.
  • MB-tree takes into account the effects of "smart" analysis in lookahead, even further improving quality in fades.
  • If psy is on, mbtree is on, interlaced is off, and weightp is off, fade detection will still be performed.
  • However, it will be used to adjust quality instead of create actual weights.
  • This will improve quality in fades when encoding in Baseline profile.
  • Doesn't add support for interlaced encoding with weightp yet.
  • Only adds support for luma weights, not chroma weights.
  • Internal code for chroma weights is in, but there's no analysis yet.
  • Baseline profile requires that weightp be off.
  • All weightp modes may cause minor breakage in non-compliant decoders that take shortcuts in deblocking reference frame checks.
  • "Smart" may cause serious breakage in non-compliant decoders that take hortcuts in handling of duplicate reference frames.

New in x264 Video Codec r1326 (Nov 14, 2009)

  • Fix assert failure in the case of forced i-frames
  • Note that this applies to non-IDR i-frames, not IDR-frames.
  • This fix is also required for future open-gop.

New in x264 Video Codec r1325 (Nov 14, 2009)

  • Fix issues relating to input/output files being pipes/FIFOs

New in x264 Video Codec r1324 (Nov 14, 2009)

  • Various ARM-related fixes
  • Fix comment for mc_copy_neon.
  • Fix memzero_aligned_neon prototype.
  • Update NEON (i)dct_dc prototypes.
  • Duplicate x86 behavior for global+hidden functions.

New in x264 Video Codec r1323 (Nov 14, 2009)

  • Fix miscompilation with gcc 4.3 on ARM
  • Aliasing violation in spatial prediction caused nasty artifacts.
  • Shut up two other GCC warnings while we're at it.

New in x264 Video Codec r1322 (Nov 14, 2009)

  • Fix extremely rare infinite loop in 2-pass VBV
  • Implicit conversion from double->float lost enough precision to cause the loop termination condition to never trigger.

New in x264 Video Codec r1321 (Nov 14, 2009)

  • Fix large file support, broken in r1302

New in x264 Video Codec r1320 (Nov 14, 2009)

  • Dramatically reduce size of pixel_ssd_* asm functions
  • ~10k of code size eliminated.

New in x264 Video Codec r1319 (Nov 14, 2009)

  • fix bottom-right pixel of lowres planes, which was uninitialized.
  • weirdly, valgrind reported this only with --no-asm.

New in x264 Video Codec r1318 (Oct 30, 2009)

  • Further reduce code size in bime
  • ~7-8 kilobytes saved, ~0.6% faster subme 9

New in x264 Video Codec r1317 (Oct 30, 2009)

  • Fix case in which MB-tree didn't propagate all data correctly
  • Should improve quality in all cases.
  • Also some minor cosmetic improvements.

New in x264 Video Codec r1316 (Oct 30, 2009)

  • Take into account chroma MV offset during interlaced motion search
  • Small improvement in interlaced compression

New in x264 Video Codec r1315 (Oct 30, 2009)

  • Slightly faster ssse3 width4 chroma MC
  • Cacheline-aware in the same fashion as width8, but not conditional.

New in x264 Video Codec r1314 (Oct 30, 2009)

  • Eliminate some rare cases where MB-tree gave incorrect results in B-frames
  • Also get rid of some unnecessary memcpies

New in x264 Video Codec r1313 (Oct 30, 2009)

  • Fix cases in which b-adapt 1 could result in AUTO-type frames.
  • This didn't actually cause any issues, but it removes the need for the fixing-up code that prevented said issues.

New in x264 Video Codec r1312 (Oct 30, 2009)

  • Motion compensation optimizations
  • Turning off inlining saves a whole boatload of code size for near-zero speed cost.
  • Simplify offset calculation.
  • Various other optimizations

New in x264 Video Codec r1311 (Oct 30, 2009)

  • Minor CAVLC optimizations

New in x264 Video Codec r1310 (Oct 30, 2009)

  • cosmetics

New in x264 Video Codec r1309 (Oct 30, 2009)

  • ISC-license x86inc.asm
  • As the assembly abstraction layer is very useful in non-x264 projects, it is now ISC (simplified BSD) so that others, even in commercial projects, can use it as well.

New in x264 Video Codec r1308 (Oct 30, 2009)

  • Various minor CABAC optimizations

New in x264 Video Codec r1307 (Oct 30, 2009)

  • Fix bug in b-pyramid strict
  • Bug caused invalid streams in some situations.

New in x264 Video Codec r1306 (Oct 30, 2009)

  • Remove non-mod16 warning
  • Compression only "suffers" by an extremely marginal amount and too many people misinterpret the warning.

New in x264 Video Codec r1305 (Oct 30, 2009)

  • Fix two warnings + some minor optimizations

New in x264 Video Codec r1304 (Oct 30, 2009)

  • Fix a typo in b-pyramid help
  • And an errant space in common/macroblock.c

New in x264 Video Codec r1303 (Oct 30, 2009)

  • A bit more write-combining in macroblock_cache_load

New in x264 Video Codec r1302 (Oct 30, 2009)

  • split muxers.c into one file per format
  • simplify internal muxer API

New in x264 Video Codec r1301 (Oct 20, 2009)

  • Update fprofile with the latest change to b-pyramid

New in x264 Video Codec r1300 (Oct 20, 2009)

  • Fix assertion fail and incorrect costs with pyramid+VBV
  • Deal properly with QPfile'd B-refs. x264 should handle multiple B-refs per minigop now, though only via forced frametypes.

New in x264 Video Codec r1299 (Oct 20, 2009)

  • Improve CRF initial QP selection, fix get_qscale bug
  • If qcomp=1 (as in mb-tree), we don't need ABR_INIT_QP.
  • get_qscale could give slightly weird results with still images

New in x264 Video Codec r1298 (Oct 20, 2009)

  • Print more accurate error message if dump_yuv fails

New in x264 Video Codec r1297 (Oct 20, 2009)

  • Reduce memory usage of b-adapt 2 trellis
  • Also fix a minor bug where the algorithm ignored the last frame in the trellis.

New in x264 Video Codec r1296 (Oct 20, 2009)

  • Make B-pyramid spec-compliant
  • The rules of the specification with regard to picture buffering for pyramid coding are widely ignored.
  • x264's b-pyramid implementation, despite being practically identical to that proposed by the original paper, was technically not compliant. Now it is.
  • Two modes are now available:
  • 1) strict b-pyramid, while worse for compression, follows the rule mandated by Blu-ray (no P-frames can reference B-frames)
  • 2) normal b-pyramid, which is like the old mode except fully compliant.
  • This patch also adds MMCO support (necessary for compliant pyramid in some cases).
  • MB-tree still doesn't support b-pyramid (but will soon).

New in x264 Video Codec r1295 (Oct 20, 2009)

  • Add missing free for nal_buffer
  • Fixes a memory leak.

New in x264 Video Codec r1294 (Oct 19, 2009)

  • sync yasm macros to ffmpeg

New in x264 Video Codec r1293 (Oct 19, 2009)

  • eliminate some divisions

New in x264 Video Codec r1292 (Oct 13, 2009)

  • Fix glitches with slow-firstpass + weightb + multiref + 2pass
  • Bug in r1277

New in x264 Video Codec r1291 (Oct 13, 2009)

  • Simplify some code in b-adapt 2's trellis

New in x264 Video Codec r1290 (Oct 13, 2009)

  • Fix a very rare integer overflow in slicetype analysis
  • Caused an assert failure when it occurred.
  • Bug is as old as adaptive B-frames.

New in x264 Video Codec r1289 (Oct 13, 2009)

  • 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.

New in x264 Video Codec r1288 (Oct 13, 2009)

  • Fix regression: disable flash detection without B-frames

New in x264 Video Codec r1287 (Oct 12, 2009)

  • 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.

New in x264 Video Codec r1286 (Oct 12, 2009)

  • 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.

New in x264 Video Codec r1285 (Oct 12, 2009)

  • 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).

New in x264 Video Codec r1284 (Oct 12, 2009)

  • Optimize exp2fix8
  • Slightly faster and more accurate rounding.

New in x264 Video Codec r1283 (Oct 12, 2009)

  • 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.

New in x264 Video Codec r1282 (Oct 12, 2009)

  • Fix bug where x264 generated non-compliant bitstreams with insane SAR values

New in x264 Video Codec r1281 (Oct 7, 2009)

  • rm msvc project files and related ifdefs

New in x264 Video Codec r1280 (Oct 7, 2009)

  • 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.

New in x264 Video Codec r1279 (Oct 7, 2009)

  • 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.

New in x264 Video Codec r1278 (Oct 7, 2009)

  • Slightly improve non-RD p8x8 mode decision
  • Subpartition costs are effectively zero in CABAC if sub-8x8 search is off.

New in x264 Video Codec r1277 (Oct 7, 2009)

  • 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!

New in x264 Video Codec r1276 (Oct 7, 2009)

  • Fix typo in ratecontrol_summary

New in x264 Video Codec r1275 (Oct 7, 2009)

  • 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.

New in x264 Video Codec r1274 (Oct 7, 2009)

  • Fix some issues with 3-pass statsfile handling
  • The value of i_frame during encoder_close was incorrect.

New in x264 Video Codec r1273 (Oct 7, 2009)

  • Fix ctrl-C termation message with few frames encoded

New in x264 Video Codec r1272 (Oct 7, 2009)

  • 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.

New in x264 Video Codec r1271 (Sep 25, 2009)

  • 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.

New in x264 Video Codec r1270 (Sep 25, 2009)

  • Allow user-set FPS for inputs other than YUV

New in x264 Video Codec r1269 (Sep 25, 2009)

  • Improve threaded frame handling
  • Avoid unnecessary cond_wait

New in x264 Video Codec r1268 (Sep 25, 2009)

  • 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.

New in x264 Video Codec r1267 (Sep 25, 2009)

  • Really fix encoder_close crash this time
  • Not-entirely-fixed in r1253.

New in x264 Video Codec r1266 (Sep 25, 2009)

  • Check for 16x16 partitions masquerading as smaller ones
  • Saves a few bits when using qpel-RD

New in x264 Video Codec r1265 (Sep 25, 2009)

  • Update config.guess/sub; add Snow Leopard support

New in x264 Video Codec r1264 (Sep 25, 2009)

  • Fix integer overflow in 2-pass VBV
  • Bug caused slight undersizing in 2-pass mode in some cases.

New in x264 Video Codec r1263 (Sep 25, 2009)

  • 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).

New in x264 Video Codec r1262 (Sep 25, 2009)

  • 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.

New in x264 Video Codec r1261 (Sep 25, 2009)

  • Overhaul syntax in muxers.c/matroska.c
  • The inconsistent syntax in these files has finally come to an end.

New in x264 Video Codec r1260 (Sep 25, 2009)

  • 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).

New in x264 Video Codec r1259 (Sep 15, 2009)

  • Add missing fclose for mbtree input statsfile on second pass

New in x264 Video Codec r1258 (Sep 15, 2009)

  • Improve progress indicator behavior. Progress indicator will now indicate based on output frame, not input frame.

New in x264 Video Codec r1257 (Sep 15, 2009)

  • Update yasm configure check. lzcnt apparently requires yasm 0.6.2.

New in x264 Video Codec r1256 (Sep 15, 2009)

  • 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.

New in x264 Video Codec r1255 (Sep 15, 2009)

  • Don't print scenecut message multiple times in verbose mode. Occurred mostly with b-adapt 2.

New in x264 Video Codec r1254 (Sep 15, 2009)

  • 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.

New in x264 Video Codec r1253 (Sep 15, 2009)

  • 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.

New in x264 Video Codec r1252 (Sep 15, 2009)

  • 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

New in x264 Video Codec r1251 (Sep 7, 2009)

  • 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.

New in x264 Video Codec r1250 (Sep 7, 2009)

  • Fix RD early-skip
  • Small quality improvement and speedup, was broken by r1214.

New in x264 Video Codec r1249 (Sep 7, 2009)

  • Faster CAVLC mb header writing for B macroblocks

New in x264 Video Codec r1248 (Sep 7, 2009)

  • Compile fixes for pre-ARMv6T2 and/or PIC

New in x264 Video Codec r1247 (Sep 3, 2009)

  • 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.

New in x264 Video Codec r1246 (Sep 2, 2009)

  • 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.

New in x264 Video Codec r1245 (Sep 2, 2009)

  • 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.

New in x264 Video Codec r1244 (Sep 2, 2009)

  • 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.

New in x264 Video Codec r1243 (Sep 1, 2009)

  • Faster me=tesa
  • But it still spends all too much time in me_search_ref rather than asm.

New in x264 Video Codec r1242 (Sep 1, 2009)

  • 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.

New in x264 Video Codec r1241 (Sep 1, 2009)

  • Fix a valgrind warning in b-adapt 2

New in x264 Video Codec r1240 (Aug 31, 2009)

  • fix asm symbols for oprofile (regression in r1221)

New in x264 Video Codec r1239 (Aug 29, 2009)

  • 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.

New in x264 Video Codec r1238 (Aug 29, 2009)

  • Fix bug in b16x16 qpel RD
  • Incorrect cost was used to initialize the search.

New in x264 Video Codec r1237 (Aug 29, 2009)

  • 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.

New in x264 Video Codec r1236 (Aug 29, 2009)

  • 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.

New in x264 Video Codec r1235 (Aug 27, 2009)

  • Fix keyint=1 + VBV + rc-lookahead

New in x264 Video Codec r1234 (Aug 27, 2009)

  • Faster x264_exp2fix8
  • 22->13 cycles on Core 2 with mfpmath=sse

New in x264 Video Codec r1233 (Aug 27, 2009)

  • compile x86 with fpmath=sse by default

New in x264 Video Codec r1232 (Aug 26, 2009)

  • 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.

New in x264 Video Codec r1231 (Aug 26, 2009)

  • 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.

New in x264 Video Codec r1230 (Aug 26, 2009)

  • 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

New in x264 Video Codec r1229 (Aug 26, 2009)

  • 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.

New in x264 Video Codec r1228 (Aug 26, 2009)

  • GSOC merge part 6: ARM NEON quant assembly functions (partial)
  • (de)quant 4x4, (de)quant 8x8, (de)quant DC, coeff_last

New in x264 Video Codec r1227 (Aug 26, 2009)

  • GSOC merge part 5: ARM NEON dct assembly functions
  • (i)dct4x4dc, (i)dct4x4, (i)dct8x8, (i)dct_dc, zigzag_scan_frame_4x4

New in x264 Video Codec r1226 (Aug 26, 2009)

  • 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

New in x264 Video Codec r1225 (Aug 26, 2009)

  • GSOC merge part 3: ARM NEON pixel assembly functions
  • SAD, SADX3/X4, SSD, SATD, SA8D, Hadamard_AC, VAR, VAR2, SSIM

New in x264 Video Codec r1224 (Aug 26, 2009)

  • 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.

New in x264 Video Codec r1223 (Aug 26, 2009)

  • 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).

New in x264 Video Codec r1222 (Aug 26, 2009)

  • Fix bug in calculation of I-frame costs with AQ

New in x264 Video Codec r1221 (Aug 26, 2009)

  • GSOC merge part 1: Framework for ARM assembly optimizations
  • x264 will detect which ARM core it's building for and only build NEON asm if the target is ARMv6 or above, then enable NEON at runtime.

New in x264 Video Codec r1220 (Aug 26, 2009)

  • Fix a bug in checkasm and two OSX fixes
  • MC chroma checkasm test could crash in some situations
  • Remove -lmx, as it's not needed and the iPhone doesn't have it.
  • Remove unused sqrtf emulation; it breaks if math.h is included.

New in x264 Video Codec r1219 (Aug 26, 2009)

  • Improve QPRD
  • Always check the last macroblock's QP, even if the normal search doesn't reach it.
  • Raise the failure threshold when moving towards the last macroblock's QP.
  • 0.2-1% improved compression.

New in x264 Video Codec r1218 (Aug 26, 2009)

  • Fix MB-tree with keyint

New in x264 Video Codec r1217 (Aug 26, 2009)

  • Fix bug in VBV lookahead + no MB-tree
  • I-frames need to have VBV lookahead run on them as well.

New in x264 Video Codec r1216 (Aug 26, 2009)

  • Add support for frame-accurate parameter changes
  • Parameter structs can now be passed with individual frames.
  • The previous method would only change the parameter of what was currently being encoded, which due to delay might be very far from an intended exact frame.
  • Also add support for changing aspect ratio. Only works in a stream with repeating headers and requires the caller to force an IDR to ensure instant effect.

New in x264 Video Codec r1215 (Aug 26, 2009)

  • Fix x264_encoder_reconfig with multithreading
  • New behavior: reconfigging the encoder will result in changes being applied
  • to each of the encoding threads as they finish encoding the current frame.

New in x264 Video Codec r1214 (Aug 18, 2009)

  • Fix two bugs in QPRD
  • QPRD could in some cases force blocks to skip when they shouldn't be ~(+0.01db)
  • Force QPRD to abide by qpmin/qpmax restrictions.

New in x264 Video Codec r1213 (Aug 18, 2009)

  • Lookahead VBV
  • Use the large-scale lookahead capability introduced in MB-tree for ratecontrol purposes.(Does not require MB-tree, however.)
  • Greatly improved quality and compliance in 1-pass VBV mode, especially in CBR; +2db OPSNR or more in some cases.
  • Fix some other bugs in VBV, which should improve non-lookahead mode as well.
  • Change the tolerance algorithm in row VBV to allow for more significant mispredictions when buffer is nearly full.
  • Note that due to the fixing of an extremely long-standing bug (>1 year), bitrates may change by nontrivial amounts in CRF without MB-tree

New in x264 Video Codec r1212 (Aug 18, 2009)

  • Fix bug in b-adapt 1
  • B-adapt 1 didn't use more than MAX(1,bframes-1) B-frames when MB-tree was off.

New in x264 Video Codec r1211 (Aug 18, 2009)

  • Fix a potential failure in VBV
  • If VBV does underflow, ratecontrol could be permanently broken for the rest of the clip.
  • Revert part of the previous VBV changes to fix this.

New in x264 Video Codec r1210 (Aug 15, 2009)

  • new API function x264_encoder_delayed_frames.
  • fix x264cli on streams whose total length is less than the encoder latency.

New in x264 Video Codec r1206 (Aug 9, 2009)

  • simd part of x264_macroblock_tree_propagate.
  • 1.6x faster on conroe

New in x264 Video Codec r1201 (Aug 8, 2009)

  • Gracefully terminate in the case of a malloc failure
  • Fuzz tests show that all mallocs appear to be checked correctly now.

New in x264 Video Codec r1195 (Jul 29, 2009)

  • Fix another 10L in QPRD. An entry in subpel_iterations was missing. I have no idea how QPRD was working at all without this change.

New in x264 Video Codec r1193 (Jul 29, 2009)

  • 15% faster refine_bidir_satd, 10% faster refine_bidir_rd (or less with trellis=2) re-roll a loop (saves 44KB code size, which is the cause of most of this speed gain) don't re-mc mvs that haven't changed

New in x264 Video Codec r1192 (Jul 29, 2009)

  • 15% faster refine_bidir_satd, 10% faster refine_bidir_rd (or less with trellis=2) re-roll a loop (saves 44KB code size, which is the cause of most of this speed gain) don't re-mc mvs that haven't changed

New in x264 Video Codec r1190 (Jul 27, 2009)

  • Fix two bugs in QPRD
  • fprofile settings now actually fprofile QPRD.
  • Don't use i_mbrd before initializing it.

New in x264 Video Codec r1189 (Jul 27, 2009)

  • Fix 10l in QPRD
  • Trellis used wrong lambda with trellis=1

New in x264 Video Codec r1185 (Jul 23, 2009)

  • shut up valgrind warnings in trellis

New in x264 Video Codec r1184 (Jul 20, 2009)

  • New AQ algorithm option
  • "Auto-variance" uses log(var)^2 instead of log(var) and attempts to adapt strength per-frame.
  • Generates significantly better SSIM; on by default with --tune ssim.
  • Whether it generates visually better quality is still up for debate.
  • Available as --aq-mode 2.

New in x264 Video Codec r1183 (Jul 17, 2009)

  • Cacheline-split SSSE3 chroma MC
  • ~70% faster chroma MC on 32-bit Conroe
  • Also slightly faster SSSE3 intra_sad_8x8c

New in x264 Video Codec r1182 (Jul 17, 2009)

  • Improve documentation of qp/crf options

New in x264 Video Codec r1181 (Jul 11, 2009)

  • Merge array_non_zero into zigzag_sub
  • Faster lossless, cleaner code.
  • SSSE3 version of zigzag_sub_4x4_field, faster lossless interlaced coding.

New in x264 Video Codec r1180 (Jul 11, 2009)

  • Fix bug in reference frame autoadjustment
  • For some types of input file, x264 did the adjustment before width/height were known.

New in x264 Video Codec r1179 (Jul 8, 2009)

  • Fix fprofile settings to match changes in defaults
  • Also add b-adapt 2 to fprofile.

New in x264 Video Codec r1178 (Jul 8, 2009)

  • Slightly faster dequant_flat assembly
  • Eliminate some redundant shifts.

New in x264 Video Codec r1177 (Jul 8, 2009)

  • Totally new preset system for x264.c (not libx264), new defaults
  • Other new features include "tune" and "profile" settings; see --help for more details.
  • Unlike most other settings, "preset" and "tune" act before all other options.
  • However, "profile" acts afterwards, overriding all other options.
  • Our defaults have also changed: new defaults are --subme 7 --bframes 3 --8x8dct --no-psnr --no-ssim --threads auto --ref 3 --mixed-refs --trellis 1 --weightb --crf 23 --progress.
  • Users will hopefully find these changes to greatly improve usability.

New in x264 Video Codec r1176 (Jul 8, 2009)

  • Update Gabriel's email address in AUTHORS

New in x264 Video Codec r1175 (Jul 8, 2009)

  • Early termination for chroma encoding
  • Faster chroma encoding by terminating early if heuristics indicate that the block will be DC-only.
  • This works because the vast majority of inter chroma blocks have no coefficients at all, and those that do are almost always DC-only.
  • Add two new helper DSP functions for this: dct_dc_8x8 and var2_8x8. mmx/sse2/ssse3 versions of each.
  • Early termination is disabled at very low QPs due to it not being useful there.
  • Performance increase is ~1-2% without trellis, up to 5-6% with trellis=2.
  • Increase is greater with lower bitrates.

New in x264 Video Codec r1174 (Jul 8, 2009)

  • Fix bug in checkasm
  • frame_init_lowres_core check didn't check the C plane.
  • However, all x86 and PPC assembly was correct regardless of the unit test being incorrect.

New in x264 Video Codec r1173 (Jun 26, 2009)

  • Add subpartition cost for sub-8x8 blocks
  • Improves sub-p8x8 mode decision.

New in x264 Video Codec r1171 (Jun 23, 2009)

  • Various CABAC optimizations and cleanups
  • Faster CABAC CBF context calculation for inter blocks.
  • Add x264_constant_p(), will probably be useful in the future as well.
  • Simpler subpartition functions.
  • Clean up and optimize mvd_cpn a bit more.

New in x264 Video Codec r1170 (Jun 22, 2009)

  • AltiVec version of frame_init_lowres_core. 22.4x faster than C on PPC7450 and 25x on PPC970MP.

New in x264 Video Codec r1169 (Jun 20, 2009)

  • MMX CABAC mvd sum calculation
  • Faster CABAC mvd coding.

New in x264 Video Codec r1165 (Jun 11, 2009)

  • configure check for uclinux

New in x264 Video Codec r1164 (Jun 11, 2009)

  • fix a crash on frame width

New in x264 Video Codec r1163 (May 28, 2009)

  • configure check for cc, rather than reporting lack of compiler as an asm error.
  • configure check for -mno-cygwin, since it's removed from gcc4.

New in x264 Video Codec r1162 (May 28, 2009)

  • a better way to keep track of mv candidates.
  • 2-4% faster dia, hex, and umh.

New in x264 Video Codec r1161 (May 28, 2009)

  • reorder some motion estimation patterns.
  • this change is useless on its own, but segregates the bitstream-changing part out of my next optimization.

New in x264 Video Codec r1160 (May 27, 2009)

  • Fix VBV warning broken in r915 x264 will now correctly warn about maxrate specified without bufsize even when a level is not set.

New in x264 Video Codec r1159 (May 25, 2009)

  • configure check for ssse3-capable binutils

New in x264 Video Codec r1158 (May 25, 2009)

  • Fix 10L in r1155
  • Broke --me esa/tesa due to forgetting to add handling for x264_cost_mv_fpel.

New in x264 Video Codec r1153 (May 19, 2009)

  • fix a race condition at the end of thread_input

New in x264 Video Codec r1152 (May 19, 2009)

  • Various trellis speed optimizations

New in x264 Video Codec r1151 (May 19, 2009)

  • Make i686 the default arch on x86_32
  • Disabling asm will default to a generic arch.
  • Also fix configure for gcc 4.4.

New in x264 Video Codec r1150 (May 19, 2009)

  • Faster signed golomb coding
  • 3% faster CAVLC RDO and bitstream writing.

New in x264 Video Codec r1149 (May 19, 2009)

  • Faster spatial direct MV prediction
  • unroll/tweak col_zero_flag

New in x264 Video Codec r1148 (May 10, 2009)

  • More CABAC and CAVLC optimizations
  • Simplified function calling for block_residual_write_(cabac|cavlc) and improved sigmap coding.
  • Tried making 0/1-bit specific versions of CABAC asm, but benefit was minimal under GCC 4.3.
  • Helped a decent bit under 3.4, but you shouldn't be using such old versions anyways

New in x264 Video Codec r1147 (May 10, 2009)

  • Various optimizations in frametype lookahead

New in x264 Video Codec r1146 (May 10, 2009)

  • Some cosmetics/cleanup
  • Move some macros to x86util.asm that should have been there to begin with.
  • Fix a typo that didn't cause any issues.

New in x264 Video Codec r1145 (Apr 22, 2009)

  • fix "incompatible types in initialization" compilation issues with GCC 4.3 (which is stricter than previous compiler version)

New in x264 Video Codec r1144 (Apr 21, 2009)

  • fix conversions between vectors with differing element types or numbers of subparts errors

New in x264 Video Codec r1143 (Apr 20, 2009)

  • Add "coded blocks" stat to output information.
  • This measures the total percentage of blocks, intra and inter, which have nonzero coefficients.
  • "y,uvAC,uvDC" refers to luma, chroma DC, and chroma AC blocks.
  • Note that skip blocks are included in this stat.

New in x264 Video Codec r1140 (Apr 15, 2009)

  • Slightly faster SSE4 SA8D, SSE4 Hadamard_AC, SSE2 SSIM
  • shufps is the most underrated SSE instruction on x86.

New in x264 Video Codec r1139 (Apr 9, 2009)

  • Various CABAC optimizations
  • Move calculation of b_intra out of the core residual loop and hardcode it where applicable.
  • Inlining cabac_mb_mvd was unnecessary and wasted tremendous amounts of code size. Inlining only cache_mvd is faster and significantly smaller.

New in x264 Video Codec r1138 (Apr 9, 2009)

  • CAVLC optimizations
  • faster bs_write_te, port CABAC context selection optimization to CAVLC.

New in x264 Video Codec r1137 (Apr 7, 2009)

  • Faster CABAC RDO
  • Since the bypass case is quite unlikely, especially when doing merged sigmap/level coding, it's faster to use a branch than a cmov.

New in x264 Video Codec r1136 (Apr 4, 2009)

  • Activate intra_sad_x3_8x8c in lookahead

New in x264 Video Codec r1134 (Mar 31, 2009)

  • intra_sad_x3_8x8 assembly

New in x264 Video Codec r1130 (Mar 27, 2009)

  • Faster probe_skip
  • Add a second chroma threshold after the DC transform.

New in x264 Video Codec r1129 (Mar 19, 2009)

  • Add missing "static" qualifier to two arrays
  • Should slightly improve performance.

New in x264 Video Codec r1128 (Mar 18, 2009)

  • SSE2 zigzag_interleave
  • Replace PHADD with FastShuffle (more accurate naming).
  • This flag represents asm functions that rely on fast SSE2 shuffle units, and thus are only faster on Phenom, Nehalem, and Penryn CPUs.

New in x264 Video Codec r1127 (Mar 10, 2009)

  • Faster integral_init
  • palignr to avoid unaligned loads is worth it in inith, but not initv.

New in x264 Video Codec r1125 (Mar 8, 2009)

  • Faster SSE2 pixel_var
  • Optimized using the DEINTB method from r1122. ~32% faster var_16x16 on Conroe.

New in x264 Video Codec r1123 (Mar 7, 2009)

  • Update some asm copyright headers

New in x264 Video Codec r1120 (Mar 4, 2009)

  • Remove pre-scenecut from fprofile commands as well
  • Also add psy-trellis to fprofile

New in x264 Video Codec r1119 (Mar 4, 2009)

  • Slightly faster 8x16 SAD on Penryn Core 2
  • Same as MMX 8x16 cacheline SAD, but calls SSE2 8x16 SAD in non-cacheline case.
  • Only Nehalem benefits from sizes smaller than 8x16, and Nehalem doesn't use cacheline functions, so no smaller versions are included.

New in x264 Video Codec r1116 (Mar 3, 2009)

  • Add AltiVec version of hadamard_ac. 2.4x faster than the C version

New in x264 Video Codec r1115 (Feb 27, 2009)

  • Fix regression in r1085
  • Deblocking was very slightly incorrect with partitions=all.
  • Bug found by BugMaster.

New in x264 Video Codec r1114 (Feb 16, 2009)

  • Optimize neighbor CBP calculation and fix related regression
  • r1105 introduced array overflow in cbp handling

New in x264 Video Codec r1113 (Feb 14, 2009)

  • Show FPS when importing a raw YUV file

New in x264 Video Codec r1112 (Feb 12, 2009)

  • Windows 64-bit support
  • A "make distclean" is probably required after updating to this revision.

New in x264 Video Codec r1110 (Feb 11, 2009)

  • fix 10l in 75b495f2723fcb77f
  • Original thread: date: Mon, Feb 9, 2009 at 9:37 PM / subject: [x264-devel] commit: Spare a vec_perm and a vec_mergeh though using a LUT of permutation vectors .

New in x264 Video Codec r1109 (Feb 10, 2009)

  • Spare a vec_perm and a vec_mergeh though using a LUT of permutation vectors.

New in x264 Video Codec r1106 (Feb 9, 2009)

  • Add decimation in i16x16 blocks
  • Up to +0.04db with CAVLC, generally a lot less with CABAC.

New in x264 Video Codec r1105 (Feb 9, 2009)

  • Much faster CABAC residual context selection
  • Up to ~17% faster CABAC RDO, ~36% faster intra-only CABAC RDO.
  • Up to 7% faster overall in extreme cases.

New in x264 Video Codec r1104 (Feb 9, 2009)

  • Faster coeff_last64 on 32-bit

New in x264 Video Codec r1103 (Feb 9, 2009)

  • More intra pred asm optimizations
  • SSSE3 version of predict_8x8_hu
  • SSE2 version of predict_8x8c_p
  • SSSE3 versions of both planar prediction functions
  • Optimizations to predict_16x16_p_sse2
  • Some unnecessary REP_RETs -> RETs.
  • SSE2 version of predict_8x8_vr by Holger.
  • SSE2 version of predict_8x8_hd.
  • Don't compile MMX versions of some of the pred functions on x86_64.
  • Remove now-useless x86_64 C versions of 4x4 pred functions.
  • Rewrite some of the x86_64-only C functions in asm.

New in x264 Video Codec r1102 (Feb 9, 2009)

  • Speed-up mc_chroma_altivec by using vec_mladd cleverly, and unrolling.
  • Also put width == 2 variant in its own scalar function because it's faster than a vectorized one.

New in x264 Video Codec r1101 (Feb 5, 2009)

  • Merging Holger's GSOC branch part 2: intra prediction
  • Assembly versions of most remaining 4x4 and 8x8 intra pred functions.
  • Assembly version of predict_8x8_filter.
  • A few other optimizations.
  • Primarily Core 2-optimized.

New in x264 Video Codec r1100 (Feb 4, 2009)

  • 10l: fix compilation with GCC 4.3+

New in x264 Video Codec r1099 (Feb 3, 2009)

  • Faster 8x8dct+CAVLC interleave
  • Integrate array_non_zero with the CAVLC 8x8dct interleave function.
  • Roughly 1.5-2x faster than the original separate array_non_zero method.

New in x264 Video Codec r1098 (Feb 3, 2009)

  • Measure CBP cost in i8x8 RD refinement
  • ~0.02-0.05db PSNR gain at high quants in intra-only encoding, pretty small otherwise.
  • Allows a small optimization in i8x8 encoding.

New in x264 Video Codec r1097 (Feb 2, 2009)

  • Take advantage of saturated signed horizontal sum instructions in the variance computation epilogue since there won't be any overflow triggering an overflow.

New in x264 Video Codec r1096 (Jan 30, 2009)

  • Massive overhaul of nnz/cbp calculation
  • Modify quantization to also calculate array_non_zero.
  • PPC assembly changes by gpoirior.
  • New quant asm includes some small tweaks to quant and SSE4 versions using ptest for the array_non_zero.
  • Use this new feature of quant to merge nnz/cbp calculation directly with encoding and avoid many unnecessary calls to dequant/zigzag/decimate/etc.
  • Also add new i16x16 DC-only iDCT with asm.
  • Since intra encoding now directly calculates nnz, skip_intra now backs up nnz/cbp as well.
  • Output should be equivalent except when using p4x4+RDO because of a subtlety involving old nnz values lying around.
  • Performance increase in macroblock_encode: ~18% with dct-decimate, 30% without at CRF 25.
  • Overall performance increase 0-6% depending on encoding settings

New in x264 Video Codec r1095 (Jan 29, 2009)

  • Add PowerPC support for "checkasm --bench", reading the time base register.
  • This isn't ideal since the `time base' register is running at a fraction of the processor cycle speed, so the measurement isn't as precise as x86's rdtsc.

New in x264 Video Codec r1094 (Jan 29, 2009)

  • fix detection of pthread and isfinite on OpenBSD

New in x264 Video Codec r1093 (Jan 28, 2009)

  • remove $ECHON kludge, which broke on SunOS. bring back `gcc -MT`.
  • remove auto-reconfigure on svn update, which has done nothing since we stopped using svn.
  • fix $AS on sparc (was disabled by mmx check).
  • fix --extra-asflags (was ignored).
  • mark bash scripts as bash, not sh
  • patch partly by Greg Robinson and Jugdish.

New in x264 Video Codec r1092 (Jan 28, 2009)

  • 1.6x faster satd_c (and sa8d and hadamard_ac) with pseudo-simd.
  • 60KB smaller binary.

New in x264 Video Codec r1091 (Jan 28, 2009)

  • Hack around a potential failure point in VBV
  • pred_b_from_p can become absurdly large in static scenes, leading to rare collapses of quality with VBV+B-frames+threads.
  • This isn't a final fix, but should resolve the problem in most cases in the meantime.

New in x264 Video Codec r1090 (Jan 27, 2009)

  • Much faster chroma encoding and other opts
  • ~15% faster chroma encode by reorganizing CBP calculation and adding special-case idct_dc function, since most coded chroma blocks are DC-only.
  • Small optimization in cache_save (skip_bp)
  • Fix array_non_zero to not violate strict aliasing (should eliminate miscompilation issues in the future)
  • Add in automatic substitutions for some asm instructions that have an equivalent smaller representation.

New in x264 Video Codec r1089 (Jan 26, 2009)

  • add AltiVec implementation of x264_mc_copy_w16_aligned

New in x264 Video Codec r1088 (Jan 26, 2009)

  • add AltiVec implementation of x264_pixel_var_16x16 and x264_pixel_var_8x8

New in x264 Video Codec r1087 (Jan 26, 2009)

  • add AltiVec 16 32 bits conversions macros

New in x264 Video Codec r1086 (Jan 20, 2009)

  • Replace 16x16=>32 mul + pack + add by a simple 16x16=>16 multiply-add.

New in x264 Video Codec r1085 (Jan 20, 2009)

  • Eliminate support for direct_8x8_inference=0
  • The benefit in the most extreme contrived situation was at most 0.001db PSNR, at the cost of slower decoding.
  • As this option was basically useless, it was a waste of code and prevented some other useful optimizations.
  • Remove some unused mc code related to sub-8x8 partitions.
  • Small deblocking speedup when p4x4 is used.
  • Also remove unused x264_nal_decode prototype from x264.h.

New in x264 Video Codec r1084 (Jan 19, 2009)

  • Add AltiVec and CPU numbers detection on OpenBSD

New in x264 Video Codec r1083 (Jan 18, 2009)

  • Add AltiVec implementation of predict_8x8c_p. 2.6x faster than scalar C.

New in x264 Video Codec r1082 (Jan 18, 2009)

  • Warn if direct auto wasn't set on the first pass
  • And, if it wasn't, run direct auto as if it was the first pass, rather than simply forcing temporal direct mode on all frames.
  • Also a small tweak to coeff_level_run asm.

New in x264 Video Codec r1081 (Jan 17, 2009)

  • Changes the PowerPC ppccommon.h header so it no longer checks for a particular OS such as Linux but instead looks for HAVE_ALTIVEC_H being set.
  • Fixes all *BSD/PowerPC builds.

New in x264 Video Codec r1080 (Jan 15, 2009)

  • update x264_hpel_filter_altivec's prototype to match the one of the C version.
  • It changed in commit 045ae4045a1827555b3eaab4fbf3c9809e98c58f (factorization of mallocs)
  • (NB: Altivec implementation wasn't allocating and writing to any scratch memory.)

New in x264 Video Codec r1077 (Jan 14, 2009)

  • Cache ref costs and use more accurate MV costs
  • New MV costs should improve quality slightly by improving the smoothness of the field of MV costs (and they're closer to CABAC's actual costs).
  • Despite being optimized for CABAC, they still help under CAVLC, albeit less.
  • MV cost change by Loren Merritt

New in x264 Video Codec r1074 (Jan 9, 2009)

  • Fix regression in r1066
  • With some combinations of video width and other settings, the scratch buffer was slightly too small. This caused heap corruption on some systems.

New in x264 Video Codec r1074 (Jan 9, 2009)

  • Fix regression in r1066
  • With some combinations of video width and other settings, the scratch buffer was slightly too small.
  • This caused heap corruption on some systems

New in x264 Video Codec r1073 (Jan 6, 2009)

  • Fix C99ism in r1066

New in x264 Video Codec r1072 (Jan 6, 2009)

  • Factorize in ppccommon.h the conditional inclusion of altivec.h on Linux systems.

New in x264 Video Codec r1071 (Jan 3, 2009)

  • Small tweaks to coeff asm
  • Factor out a few redundant pxors
  • Related cosmetics

New in x264 Video Codec r1065 (Dec 30, 2008)

  • Much faster CAVLC RDO and bitstream writing
  • Pure asm version of level/run coding. Over 2x faster than C.
  • Up to 40% faster CAVLC RDO. Overall benefit up to ~7.5% with RDO or ~5% with fast encoding settings.

New in x264 Video Codec r1063 (Dec 28, 2008)

  • Much faster CABAC RDO
  • Since RDO doesn't care about what order bit costs are calculated, merge sigmap and level coding into the same loop in RDO.
  • This is bit-exact for 4x4dct but slightly incorrect for 8x8dct due to the sigmap containing duplicated contexts.
  • However, the PSNR penalty of this is extremely small (~0.001db).
  • Speed benefit is about 15% in 4x4dct and 30% in 8x8dct residual bit cost calculation at QP20.
  • Overall encoding speed benefit is up to 5%, depending on encoding settings.
  • Also remove an old unnecessary CABAC table that hasn't been used for years.

New in x264 Video Codec r1062 (Dec 27, 2008)

  • VLC table optimizations
  • Slightly reorganize VLC tables for ~2% faster block_residual_write_cavlc.
  • Also a small optimization in p8x8 CAVLC.

New in x264 Video Codec r1061 (Dec 25, 2008)

  • Fix crash in --me esa/tesa introduced in r1058
  • Also suppress the last mingw warning message

New in x264 Video Codec r1057 (Dec 16, 2008)

  • More macroblock_cache optimizations
  • Patch partially by Loren Merritt

New in x264 Video Codec r1056 (Dec 16, 2008)

  • Faster macroblock_cache_rect
  • Explicit loop unrolling

New in x264 Video Codec r1055 (Dec 15, 2008)

  • Optimizations in predict_mv_direct
  • Add some early terminations and minor optimizations
  • This change may also fix the extremely rare direct+threading MV bug.

New in x264 Video Codec r1054 (Dec 14, 2008)

  • Fix visual corruption when picture width was not mod 32.
  • The previous Altivec implemention of mc_chroma assumed that i_src_stride was always mod 16.

New in x264 Video Codec r1052 (Dec 13, 2008)

  • More accurate refcost for p8x8 CAVLC
  • Slightly better quality, especially in non-RD mode, with CAVLC.

New in x264 Video Codec r1051 (Dec 11, 2008)

  • use lookup tables instead of actual exp/pow for AQ
  • Significant speed boost, especially on CPUs with atrociously slow floating point units (e.g. Pentium 4 saves 800 clocks per MB with this change).
  • Add x264_clz function as part of the LUT system: this may be useful later.
  • Note this changes output somewhat as the numbers from the lookup table are not exact.

New in x264 Video Codec r1047 (Dec 6, 2008)

  • fix compilation with GCC-4.3+

New in x264 Video Codec r1046 (Nov 30, 2008)

  • High Profile allows 25% higher maxbitrate/cpb
  • Correct level detection to take this into account.

New in x264 Video Codec r1040 (Nov 27, 2008)

  • dequant_4x4_dc assembly
  • About 3.5x faster DC dequant on Conroe

New in x264 Video Codec r1039 (Nov 27, 2008)

  • fix an overflow in dct4x4dc_mmx (unlikely to have occurred in any real video)

New in x264 Video Codec r1038 (Nov 26, 2008)

  • Remove nasm support
  • Nasm won't correctly parse the SSE4 code introduced a few revisions ago, so we're removing support.
  • Users should upgrade to yasm 0.6.1 or later.

New in x264 Video Codec r1037 (Nov 26, 2008)

  • Fix rare warning messages in ratecontrol due to r1020

New in x264 Video Codec r1036 (Nov 26, 2008)

  • Fix MSVC compilation and clean up MSVC build file
  • Remove Release64 which never worked anyways.

New in x264 Video Codec r1035 (Nov 26, 2008)

  • Faster width4 SSD+SATD, SSE4 optimizations
  • Do satd 4x8 by transposing the two blocks' positions and running satd 8x4.
  • Use pinsrd (SSE4) for faster width4 SSD
  • Globally replace movlhps with punpcklqdq (it seems to be faster on Conroe)
  • Move mask_misalign declaration to cpu.h to avoid warning in encoder.c.
  • These optimizations help on Nehalem, Phenom, and Penryn CPUs.

New in x264 Video Codec r1034 (Nov 26, 2008)

  • fix indentation, whitespace cleanup, more consistent indentation of macro backslashes

New in x264 Video Codec r1033 (Nov 26, 2008)

  • Change some macros to be more sensitive to memory alignment, thus avoiding useless loads/stores and calculations of permutation vectors.
  • Affected functions are all of mc_luma, mc_chroma, 'get_ref', SATD, SA8D and deblock.
  • Gains globally vary from ~5% - 15% on a depending on settings running on a 1.42 ghz G4.

New in x264 Video Codec r1032 (Nov 25, 2008)

  • refactor satd. 20KB smaller binary.
  • refactor sa8d. slightly faster.
  • more checkasm for hadamard.

New in x264 Video Codec r1029 (Nov 21, 2008)

  • A few tweaks to decimate asm
  • A little bit faster on both 32-bit and 64-bit

New in x264 Video Codec r1028 (Nov 13, 2008)

  • Nehalem optimization part 2: SSE2 width-8 SAD
  • Helps a bit on Phenom as well ~25% faster width8 multiSAD on Nehalem

New in x264 Video Codec r1026 (Nov 11, 2008)

  • Fix minor memory leak in r1022

New in x264 Video Codec r1024 (Nov 10, 2008)

  • Faster chroma encoding
  • 9-12% faster chroma encode.
  • Move all functions for handling chroma DC that don't have assembly versions to macroblock.c and inline them, along with a few other tweaks.

New in x264 Video Codec r1019 (Nov 5, 2008)

  • Initial Nehalem CPU optimizations
  • movaps/movups are no longer equivalent to their integer equivalents on the Nehalem, so that substitution is removed.
  • Nehalem has a much lower cacheline split penalty than previous Intel CPUs, so cacheline workarounds are no longer necessary.
  • Thanks to Intel for providing Avail Media with the pre-release Nehalem CPU needed to prepare these (and other not-yet-committed) optimizations.
  • Overall speed improvement with Nehalem vs Penryn at the same clock speed is around 40%.
  • Fix potential infinite loop in VBV under GCC 4.2
  • Encoder_reconfig: esa/tesa can only be enabled if they were on to begin with
  • Bug report by kemuri-_9.

New in x264 Video Codec r1016 (Oct 31, 2008)

  • Fix bug in hadamard_ac SSE assembly
  • Some extreme inputs could cause overflows.
  • Full sub8x8 RD mode decision
  • Small speed penalty with p4x4 enabled, but significant quality gain at subme >= 6
  • As before, gain is proportional to the amount of p4x4 actually useful in a given input at the given bitrate.
  • Optimize CABAC bit cost calculation
  • Speed up cabac mvd and add new precalculated transition/entropy table.
  • Add "noup" function for cabac operations to not update the state table when it isn't necessary.
  • 1-3% faster macroblock_size_cabac.
  • Cosmetics
  • Replace "git-command" with "git command" in version.sh for git 1.6 support
  • Add assembly version of CAVLC 8x8dct interleave
  • Faster CAVLC encoding and RDO with 8x8dct
  • Add support for psy-rd/trellis to encoder_reconfig
  • Fix Darwin speed regression
  • Further improve prediction of bitrate and VBV in threaded mode
  • Sub-8x8 Qpel-RD in P-frames
  • Improves quality when using p8x4/p4x8/p4x4 subpartitions
  • Benefit is proportional to how many sub-8x8 partitions are used; helps most at high bitrates and low resolutions.
  • Faster qpel-RD
  • 3-4% faster qpel-RD; avoid re-checking bmv/pmv during the hex search.
  • Some minor optimizations in RD refinement
  • Don't write b subpartition in CABAC RDO
  • Calculate nonzero count in i4x4 CAVLC RDO
  • Faster deblocking when p4x4 isn't used
  • Most of the MV checks can be skipped, resulting in faster strength calculation
  • Print profile and level information upon starting encode
  • Previously level was only printed as part of autodetect, and only in verbose mode.
  • Fix possible crash in trellis at very low QPs
  • Add assembly versions of decimate_score
  • 3-7x faster decimation, 1-3% faster overall
  • Fix typo in subme8/9 lossless qpel-RD
  • Slightly improves compression.
  • Extend trellis to support luma/chroma DC and chroma AC
  • Small speed loss in trellis 1, slightly larger in trellis 2, but significant quality improvement.

New in x264 Video Codec r999 (Oct 3, 2008)

  • rm gtk, avc2avi.

New in x264 Video Codec r997 (Oct 2, 2008)

  • Fix minor memory leak accidentally added with the addition of b-adapt 2

New in x264 Video Codec r996 (Oct 2, 2008)

  • Rework subme system, add RD refinement in B-frames
  • The new system is as follows: subme6 is RD in I/P frames, subme7 is RD in all frames, subme8 is RD refinement in I/P frames, and subme9 is RD refinement in all frames.
  • subme6 == old subme6, subme7 == old subme6+brdo, subme8 == old subme7+brdo, subme9 == no equivalent
  • --b-rdo has, accordingly, been removed. --bime has also been removed, and instead enabled automatically at subme >= 5.
  • RD refinement in B-frames (subme9) includes both qpel-RD and an RD version of bime.

New in x264 Video Codec r994 (Sep 29, 2008)

  • Replace High 4:4:4 profile lossless with High 4:4:4 Predictive. This improves lossless compression by about 4-25% depending on source. The benefit is generally higher for intra-only compression. Also add support for 8x8dct and i8x8 blocks in lossless mode; this improves compression very slightly. In some rare cases 8x8dct can hurt compression in lossless mode, but its usually helpful, albeit marginally. Note that 8x8dct is only available with CABAC as it is never useful with CAVLC.
  • High 4:4:4 Predictive replaced the previous profile in a 2007 revision to the H.264 standard. The only known compliant decoder for this profile is the latest version of CoreAVC.

New in x264 Video Codec r987 (Sep 22, 2008)

  • Fix deblocking + threads + AQ bug
  • At low QPs, with threads and deblocking on, deblocking could be improperly disabled.
  • Revision in which this bug was introduced is unknown; it may be as old as b_variable_qp in x264 itself.

New in x264 Video Codec r986 (Sep 22, 2008)

  • Resolve possible crash in bime, improve the fix in r985

New in x264 Video Codec r982 (Sep 20, 2008)

  • Disable I_PCM with psy-RD
  • psy-RD seems to put the PCM threshold a bit lower than it should be, so PCM is now disabled under psy-RD

New in x264 Video Codec r979 (Sep 17, 2008)

  • Use low-resolution lookahead motion vectors as an extra predictor
  • Improves quality considerably (0-5%) in 1pass/CRF mode, especially with lower --me values and complex motion.
  • Reverses the order of lowres lookahead search to improve the usefulness of the extra predictors.

New in x264 Video Codec r978 (Sep 17, 2008)

  • Add missing free() for f_qp_offset in frame.c

New in x264 Video Codec r977 (Sep 16, 2008)

  • Correct misprediction of bitrate in threaded mode
  • Improves bitrate accuracy in cases with large numbers of threads.
  • Loosely based on a patch by BugMaster.

New in x264 Video Codec r973 (Sep 16, 2008)

  • Fix regression in b-adapt patch: encoder_open failed for multipass encodes without bframes.

New in x264 Video Codec r969 (Sep 15, 2008)

  • Add optional more optimal B-frame decision method
  • This method (--b-adapt 2) uses a Viterbi algorithm somewhat similar to that used in trellis quantization.
  • Note that it is not fully optimized and is very slow with large --bframes values.
  • It also takes into account weightb, which should improve fade detection.
  • Additionally, changes were made to cache lowres intra results for each frame to avoid recalculating them. This should improve performance in both B-frame decision methods.
  • This can also be done for motion vectors, which will dramatically improve b-adapt 2 performance when it is complete.
  • This patch also reads b_adapt and scenecut settings from the first pass so that the x264 header information in the output file will have correct information (since frametype decision is only done on the first pass).

New in x264 Video Codec r965 (Sep 6, 2008)

  • Revert part of r963
  • In some rare (but significant) cases, the optimized nal_encode algorithm gave incorrect results.

New in x264 Video Codec r957 (Sep 3, 2008)

  • Improve progress indicator
  • Show average bitrate so far during encoding
  • Decrease update interval for longer encodes (max of 10 frames encoded between updates)

New in x264 Video Codec r956 (Sep 1, 2008)

  • Fix speed regression in r951
  • Row SATDs are only necessary in VBV mode, so don't need to be checked if VBV is off.

New in x264 Video Codec r954 (Sep 1, 2008)

  • fix SOFLAGS used when building gtk frontend
  • patch by Markus Kanet �rkvision A gmx P eu%

New in x264 Video Codec r953 (Aug 30, 2008)

  • remove the distinction between itex and ptex
  • (changes 2pass statsfile format)

New in x264 Video Codec r951 (Aug 28, 2008)

  • Fix some uses of uninitialized row_satd values in VBV
  • Resolves some issues with QP51 in I-frames with scenecut

New in x264 Video Codec r950 (Aug 27, 2008)

  • Activate trellis in p8x8 qpel RD
  • Also clean up macroblock.c with some refactoring
  • Note that this change significantly reduces subme7 trellis2 performance, but improves quality.
  • Issue originally reported by Alex_W.

New in x264 Video Codec r949 (Aug 26, 2008)

  • improve generation of Darwin libraries
  • Patch by vmrsss %vmrsss A gmail P com%

New in x264 Video Codec r948 (Aug 25, 2008)

  • improve generation of Darwin libraries
  • Patch by vmrsss %vmrsss A gmail P com%

New in x264 Video Codec r947 (Aug 22, 2008)

  • Fix compilation in gcc 3.4.x (issue in r946)
  • Due to a bug in gcc 3.4.x, in certain cases of inlining, the array_non_zero_int_mmx inline asssembly is miscompiled and causes a crash with --subme 7 --8x8dct.
  • This minor hack fixes this issue.

New in x264 Video Codec r944 (Aug 21, 2008)

  • drop support for x86_32 PIC.

New in x264 Video Codec r942 (Aug 21, 2008)

  • drop support for x86_32 PIC.

New in x264 Video Codec r940 (Aug 20, 2008)

  • Cleanups in macroblock_cache_save/load
  • A bit more loop unrolling, and moving some constant code to the global init function

New in x264 Video Codec r938 (Aug 19, 2008)

  • 4% faster deblock: special-case macroblock edges
  • Along with a bit of related code reorganization and macroification

New in x264 Video Codec r937 (Aug 18, 2008)

  • Add dedicated variance function instead of using SAD SSD
  • Faster variance calculation

New in x264 Video Codec r936 (Aug 16, 2008)

  • 6% faster deblock: remove some clips, earlier termiantion on low qps

New in x264 Video Codec r934 (Aug 12, 2008)

  • Asm cosmetics

New in x264 Video Codec r930 (Aug 11, 2008)

  • Prevent VBV from lowering quantizer too much
  • This code seemed to act up unexpectedly sometimes, creating a situation where in 1-pass VBV mode, a frame's quantizer would drop all the way to qpmin and then shoot back upwards to qpmax, causing serious visual issues.
  • This change may decrease bitrate in VBV mode, but that is preferable to the artifacting produced by this code.

New in x264 Video Codec r928 (Jul 31, 2008)

  • cosmetics: merge x86inc*.asm

New in x264 Video Codec r922 (Jul 30, 2008)

  • Improve intra RD refine, speed up residual_write_cabac
  • a do/while loop can be used for residual_write, but i8x8 had to be fixed so that it wouldn't call residual_write with zero coeffs
  • proper nnz handling added to cabac intra rd refine
  • chroma cbp added to 8x8 chroma rd
  • cbp was tested, but wasn't useful

New in x264 Video Codec r920 (Jul 27, 2008)

  • stats summary: print distribution of numbers of consecutive B-frames

New in x264 Video Codec r915 (Jul 21, 2008)

  • autodetect level based on resolution/bitrate/refs/etc, rather than defaulting to L5.1
  • if vbv is not enabled (and especially in crf/cqp), we have to guess max bitrate, so we might underestimate the required level

New in x264 Video Codec r914 (Jul 19, 2008)

  • fix bs_write_ue_big for values >= 0x10000.
  • (no immediate effect, since nothing writes such values yet)

New in x264 Video Codec r913 (Jul 16, 2008)

  • Fix lossless mode borked in r901

New in x264 Video Codec r912 (Jul 14, 2008)

  • Relax QPfile restrictions
  • Allow a QPfile to contain fewer frames than the total number of frames in the video and have ratecontrol fill in the rest.
  • Patch by kemuri9.

New in x264 Video Codec r910 (Jul 12, 2008)

  • Fix bug with PCM and adaptive quantization
  • In rare cases CABAC desync could occur, causing bitstream corruption

New in x264 Video Codec r906 (Jul 11, 2008)

  • Fix and enable I_PCM macroblock support
  • In RD mode, always consider PCM as a macroblock mode possibility
  • Fix bitstream writing for PCM blocks in CAVLC and CABAC, and a few other minor changes to make PCM work.
  • PCM macroblocks improve compression at very low QPs (1-5) and in lossless mode.

New in x264 Video Codec r901 (Jul 7, 2008)

  • Various optimizations and cosmetics
  • Update AUTHORS file with Gabriel and me
  • update XCHG macro to work correctly in if statements
  • Add new lookup tables for block_idx and fdec/fenc addresses
  • Slightly faster array_non_zero_count_mmx (patch by holger)
  • Eliminate branch in analyse_intra
  • Unroll loops in and clean up chroma encode
  • Convert some for loops to do/while loops for speed improvement
  • Do explicit write-combining on --me tesa mvsad_t struct
  • Shrink --me esa zero[] array
  • Speed up bime by reducing size of visited[][][] array

New in x264 Video Codec r828 (Apr 25, 2008)

  • more consistent include name (in line with other PPC includes)

New in x264 Video Codec r714 (Dec 27, 2007)

  • tweak x264_pixel_sad_x4_16x16_sse2 horizontal sum. 168 -> 166 cycles on core2.

New in x264 Video Codec r711 (Dec 12, 2007)

  • Add AltiVec implementation of
  • - x264_zigzag_scan_4x4_frame_altivec()
  • - x264_zigzag_scan_4x4ac_frame_altivec()
  • - x264_zigzag_scan_4x4_field_altivec()
  • - x264_zigzag_scan_4x4ac_field_altivec()
  • each around 1.3 tp 1.8x faster than C version
  • Patch by Noboru Asai % noboru P asai A gmail P com%

New in x264 Video Codec r708 (Dec 3, 2007)

  • mark asm functions as hidden

New in x264 Video Codec r700 (Nov 24, 2007)

  • add support for x86_64 on Darwin9.0 (Mac OS X 10.5, aka Leopard)

New in x264 Video Codec r688 (Nov 17, 2007)

  • cosmetics: use symbolic constants for frame padding radius

New in x264 Video Codec r682 (Nov 2, 2007)

  • fix a possible nondeterminism with me=umh threads.

New in x264 Video Codec r674 (Sep 10, 2007)

  • allow --vbv-init to take absolute values (in kbit), in addition to the previous fractions of vbv-bufsize.

New in x264 Video Codec r670 (Aug 20, 2007)

  • regression in r669: --enable-shared should imply --enable-pic on some archs.

New in x264 Video Codec r669 (Aug 14, 2007)

  • Add a --host flag to allow overriding config.guess; this is particularly useful with a 64-bits kernel running a 32-bits userland to build 32-bits apps.
  • Normalize any host triplet into a quadruplet via config.sub.
  • Move option parsing before any use of architecture information.

New in x264 Video Codec r659 (Jun 11, 2007)

  • exempt 1080p from the non-mod16 warning

New in x264 Video Codec r650 (Apr 16, 2007)

  • Remove the restriction on number of threads as a function of resolution (it was wrong anyway in the presence of B-frames), and raised the max number of threads in general (though more will have to be done before it can really scale to lots of cores)

New in x264 Video Codec r627 (Mar 5, 2007)

  • Compile fix for GCC-3.3

New in x264 Video Codec r616 (Jan 3, 2007)

  • Check whether 'echo -n' works, otherwise try printf (fixes build on current OS X 10.5)