New 2.2 version of x265

x265 version 2.2 has been released. This release contains new algorithms to limit the search of optimal transform units, a new motion search method, and optimizations to the bitstream. With this release, x265 also supports POWERPC platforms, with key functions optimized by using ALTIVEC kernels.

Full documentation is available at .

Release Notes for 2.2

Encoder enhancements
1. Enhancements to TU selection algorithm with early-outs for improved speed; use –limit-tu to exercise.
2. New motion search method SEA (Successive Elimination Algorithm) supported now as –me 4
3. Bit-stream optimizations to improve fields in PPS and SPS for bit-rate savings through –[no-]opt-qp-pps, –[no-]opt-ref-list-length-pps, and –[no-]multi-pass-opt-rps.
4. Enabled using VBV constraints when encoding without WPP.
5. All param options dumped in SEI packet in bitstream when info selected.
6. x265 now supports POWERPC-based systems. Several key functions also have optimized ALTIVEC kernels.

API changes
1. Options to disable SEI and optional-VUI messages from bitstream made more descriptive.
2. New option –scenecut-bias to enable controlling bias to mark scene-cuts via cli.
3. Support mono and mono16 color spaces for y4m input.
4. –min-cu-size of 64 no-longer supported for reasons of visual quality (was crashing earlier anyways.)
5. API for CSV now expects version string for better integration of x265 into other applications.

Bug fixes
1. Several fixes to slice-based encoding.
2. –log2-max-poc-lsb‘s range limited according to HEVC spec.
3. Restrict MVs to within legal boundaries when encoding.

New 2.1 version of x265

x265 version 2.1 has been released. This release contains experimental
support for slice-parallelism, enhancements to the API to support
user-defined SEI messages, and other bug fixes.

Full documentation is available at

Release Notes for 2.1

Encoder enhancements
1. Support for qg-size of 8
2. Experimental support for slice-parallelism.

API changes
1. Encode user-define SEI messages passed in through x265_picture object.
2. Disable SEI and VUI messages from the bitstream
3. Specify qpmin and qpmax
4. Control number of bits to encode POC.

Bug fixes
1. QP fluctuation fix for first B-frame in mini-GOP for 2-pass encoding
with tune-grain.
2. Assembly fix for crashes in 32-bit from dct_sse4.
3. Threadpool creation fix in windows platform.

New 2.0 version of x265

x265 version 2.0 has been released. This release supports many new features as well as support for arm assembly optimizations for most basic pixel and me operations, as well as sao cleanups and a fully tested reconfigure functionality.

Full documentation is available at

===== new features =====

• uhd-bd: Enforce ultra-hd blu-ray disc parameters (overrides any other settings)
• rskip: Enables skipping recursion to analyze lower cu sizes using heuristics at different rd-levels. Provides good visual quality gains at the highest quality presets.
• rc-grain: Enables a new rate control mode specifically for grainy content. Strictly prevents qp oscillations within and between frames to avoid grain fluctuations.
• tune grain: A fully refactored and improved option to encode film grain content including qp control as well as analysis options.
• asm: Arm assembly is now enabled by default, native or cross compiled builds supported on armv6 and later systems.

===== api and key behaviour changes =====

• x265_rc_stats added to x265_picture, containing all rc decision points for that frame
• ptl: High tier is now allowed by default, chosen only if necessary
• multi-pass: First pass now uses slow-firstpass by default, enabling better rc decisions in future passes
• pools: Fix behaviour on multi-socketed windows systems, provide more flexibility in determining thread and pool counts
• abr: Improve bits allocation in the first few frames, abr reset, vbv and cutree improved

===== misc =====

• an ssim calculation bug was corrected

New 1.9 version of x265

x265 version 1.9 has now been released. This release supports many new features as well as additional assembly optimizations for Main12, intra prediction and SAO. Recently added features lookahead-slices, limit-refs and limit-modes have been enabled by default in the supported presets.

Full documentation is available at

========================= New Features =========================
Quant offsets: This feature allows block level quantization offsets to be specified for every frame. An API-only feature.
–intra-refresh: Keyframes can be replaced by a moving column of intra blocks in non-keyframes.
–limit-modes: Intelligently restricts mode analysis.
–max-luma and –min-luma for luma clipping, optional for HDR use-cases
Emergency denoising is now enabled by default in very low bitrate, VBV encodes

========================== API Changes =========================
x265_frame_stats returns many additional fields: maxCLL, maxFALL, residual energy, scenecut and latency logging
–qpfile now supports frametype ‘K”
x265 now allows CRF ratecontrol in pass N (N greater than or equal to 2)
Chroma subsampling format YUV 4:0:0 is now fully supported and tested

===================== Presets and Performance =====================
Recently added features lookahead-slices, limit-modes, limit-refs have been enabled by default for applicable presets.
The default psy-rd strength has been increased to 2.0
Multi-socket machines now use a single pool of threads that can work cross-socket.

H265 codecs comparison from MSU

msu-compMSU held a large comparison of codecs in H.265 format, including codec x265. The free version of the document available for the following codecs:

  • f265 H.265 Encoder
  • Intel MSS HEVC GAcc
  • Intel MSS HEVC Software
  • Ittiam HEVC Hardware Encoder
  • Ittiam HEVC Software Encoder
  • Strongene Lentoid HEVC Encoder
  • SHBP H.265 Real time encoder
  • x265
  • It is compared with codecs of other standards:

  • InTeleMax TurboEnc
  • SIF Encoder
  • VP9 Video Codec
  • x264
  • The PDF file is available here:

    New 1.8 version of x265

    x265 version 1.8 has been released. This release supports 12bit input depths, a large amount of AVX2 optimizations, entropy coding optimizations, as well as new quality features.

    Full documentation is available at

    ============================API Changes ===========================

    Experimental support for Main12 is now enabled. Partial assembly support exists.
    Main12 and Intra/Still picture profiles are now supported. Still picture profile is detected based on x265_param::totalFrames.
    Three classes of encoding statistics are now available through the API.
    x265_stats – contains encoding statistics, available through x265_encoder_get_stats()
    x265_frame_stats and x265_cu_stats – contains frame encoding statistics, available through recon x265_picture
    x265_encoder_log() is now deprecated
    x265_param::csvfn is also deprecated
    –log-level now controls only console logging, frame level console logging has been removed.
    Support added for new color transfer characteristic ARIB STD-B67

    =========================== New Features ==========================

    This feature limits the references analysed for individual CUS.
    Provides a nice tradeoff between efficiency and performance.
    aq-mode 3
    A new aq-mode that provides additional biasing for low-light conditions.
    An improved scene cut detection logic that allows ratecontrol to manage visual quality at fade-ins and fade-outs better.

    ======================= Preset and Tune Options =======================

    tune grain
    Increases psyRdoq strength to 10.0, and rdoq-level to 2.
    Default value changed to 32.

    New 1.7 version of x265

    x265 version 1.7 has been released. This release contains a large amount of assembly code optimizations, some preliminary support for high dynamic range content, improvements for multi-library support, and some new quality features.

    Full documentation at:

    This release simplifies the multi-library support introduced in version 1.6. Any libx265 can now forward API requests to other installed libx265 libraries (by name) so applications like ffmpeg and the x265 CLI can select between 8bit and 10bit encodes at runtime without the need of a shim library or library load path hacks. See –output-depth, and…rary-interface

    For quality, x265 now allows you to configure the quantization group size smaller than the CTU size (for finer grained AQ adjustments). See –qg-size.

    x265 now supports limited mid-encode reconfigure via a new public method: x265_encoder_reconfig()

    For HDR, x265 now supports signaling the SMPTE 2084 color transfer function, the SMPTE 2086 mastering display color primaries, and the content light levels. See –master-display, –max-cll

    x265 will no longer emit any non-conformant bitstreams unless –allow-non-conformance is specified.

    The x265 CLI now supports a simple encode preview feature. See –recon-y4m-exec.

    The AnnexB NAL headers can now be configured off, via x265_param.bAnnexB This is not configurable via the CLI because it is a function of the muxer being used, and the CLI only supports raw output files. See –annexb

    * –lossless encodes are now signaled as level 8.5
    * –profile now has a -P short option
    * The regression scripts used by x265 are now public, and can be found at:
    * x265’s cmake scripts now support PGO builds, the test-harness can be used to drive the profile-guided build process.

    New 1.6 version of x265

    x265 1.6 has been released. The changes from the 1.5 release are mostly performance oriented, with heavy improvements for AVX2 capable platforms (Haswell and later Intel CPUs) and work efficiency improvements for multiple-socket machines.

    = API changes =

    –threads N replaced by –pools N,N and –lookahead-slices N –[no-]rdoq-level N – finer control over RDOQ effort –min-cu-size N – trade-off compression for performance –max-tu-size N – trade-off compression for performance –[no-]temporal-layers – code unreferenced B frames in temporal layer 1 –[no-]cip aliases added for –[no-]constrained-intra

    Added support for new color transfer functions “smpte-st-2084” and “smpte-st-428

    –limit-refs N was added, but not yet implemented

    Deprecated x265_setup_primitives() was removed from the public API and is no longer exported DLLs

    = Threading changes =

    The x265 thread pool has been made NUMA aware. The –threads parameter, which used to specify a global pool size, has been replaced with a –pools parameter which allows you to specify a pool size per NUMA node (aka CPU socket or package). The default is still to allocate one pool worker thread per logical core on the machine, but with –pools one can isolate those threads to a given socket.

    Other than socket isolation, the biggest visible change in the NUMA aware thread pools is the increase in work efficiency. The total utilization will generally decrease but the performance will increase since worker threads spend less time context switching. Also, the threading of the lookahead was made more work-efficient. Each lookahead job is a much larger piece of work.

    Before (1.5):

    disable thread pool: –threads 1
    default thread pool: –threads 0
    restrict to 4 threads: –threads 4

    After (1.6):

    disable thread pools: –pools 0
    default thread pools: –pools *
    restrict to 4 threads: –pools 4
    restrict to 4 threads on socket 1: –pools -,4 restrict to all threads on socket 0: –pools +,-

    = Multi-lib interface =

    In order to support runtime selection of a libx265 shared library, we have introduced an x265_api structure and an x265_api_get() function.
    Applications which use this interface to acquire the libx265 functional interface will be able to use shim libraries to bind a particular build of libx265 at run time. See the API documentation for full details.

    Little comparison of x264 and x265 for anime source

    We compare a small SD-part from anime (~14 MB) encoded with CRF mode using x264 and x265. CRF was chosen in such a way that the size of both encodes had similar size. As a result, we stopped at these settings:

    x264 (core 144):
    Type: 10 bit
    Encoding settings: --crf 36.9 --preset placebo --no-mbtree --direct spatial --no-dct-decimate
    Size of video track: 96.1 KB
    Bitrate: 219 kbps

    Download encoded video

    UPDATE (More optimal x264 encode sent by nobody555):
    Encoding settings: –crf 33 –preset placebo –psy-rd 0
    Size of video track: 96.7 KB

    Download encoded video

    x265 (rev. 9327 (1.4+273)):
    Type: 10 bit
    Encoding settings: --crf 30 --preset placebo
    Size of video track: 96.4 KB
    Bitrate: 219 kbps

    Download encoded video

    New 1.5 version of x265

    We’re pleased to announce that x265 has reached another milestone! The v1.5 release of x265 has major improvements in Main10 compression efficiency and performance over the 1.4 release, general improvements in Main performance. Psycho-visual optimizations are now enabled by default in the presets which can support it (medium, slow, slower, veryslow and placebo).

    Feature additions:

    * analysis re-use features have been completed
    * rate control zones have been introduced
    * –tune grain introduced
    * deblocking tC and Beta offsets are now configurable
    * denoise is seperately configurable for inter and intra CUs
    * frame based CSV logging has been improved
    * New support for VTune task profiles

    Presets and defaults:

    ultrafast no longer disables the deblocking loop filter
    psy-rd defaults to 0.3 (was 0, disabled)
    psy-rdoq defaults to 1.0 (was 0, disabled)
    aq-mode defaults to 1 (was 2, auto-variance)
    4:2:2 and 4:4:4 encodes no longer generate compliance warnings

    API changes:

    param.rc.rateTolerance has been removed and replaced with a simpler param.rc.bStrictCbr flag.

    --log-level debug is now --log-level 4 instead of --log-level 3. A new ‘frame’ log level was inserted at level 3 in order to support frame level CSV logging without also enabling frame level console logging. Using the string name ‘debug’ is unambiguous as its behavior has not changed.

    The online documentation has all the details: