1. 17 Jul, 2019 1 commit
  2. 06 Mar, 2019 1 commit
  3. 06 Aug, 2018 2 commits
  4. 17 Jan, 2018 1 commit
  5. 24 Dec, 2017 4 commits
    • Vittorio Giovara's avatar
      95cdb743
    • Vittorio Giovara's avatar
      c98d02be
    • Vittorio Giovara's avatar
      Unify 8-bit and 10-bit CLI and libraries · 71ed44c7
      Vittorio Giovara authored
      Add 'i_bitdepth' to x264_param_t with the corresponding '--output-depth' CLI
      option to set the bit depth at runtime.
      
      Drop the 'x264_bit_depth' global variable. Rather than hardcoding it to an
      incorrect value, it's preferable to induce a linking failure. If applications
      relies on this symbol this will make it more obvious where the problem is.
      
      Add Makefile rules that compiles modules with different bit depths. Assembly
      on x86 is prefixed with the 'private_prefix' define, while all other archs
      modify their function prefix internally.
      
      Templatize the main C library, x86/x86_64 assembly, ARM assembly, AARCH64
      assembly, PowerPC assembly, and MIPS assembly.
      
      The depth and cache CLI filters heavily depend on bit depth size, so they
      need to be duplicated for each value. This means having to rename these
      filters, and adjust the callers to use the right version.
      
      Unfortunately the threaded input CLI module inherits a common.h dependency
      (input/frame -> common/threadpool -> common/frame -> common/common) which
      is extremely complicated to address in a sensible way. Instead duplicate
      the module and select the appropriate one at run time.
      
      Each bitdepth needs different checkasm compilation rules, so split the main
      checkasm target into two executables.
      71ed44c7
    • Vittorio Giovara's avatar
      Change default QP parameters initialization · 2451a728
      Vittorio Giovara authored
      qp is modified to require a valid value before use, while qp_max is set
      to maximum allowable value (and clipped later on).
      
      This is needed so that param functions do not depend on bit depth size.
      2451a728
  6. 14 Jun, 2017 2 commits
    • Henrik Gramner's avatar
      Add support for levels 6, 6.1, and 6.2 · 6f8aa71c
      Henrik Gramner authored
      These levels were added in the 2016-10 revision of the H.264 specification and
      improves support for content with high resolutions and/or high frame rates.
      
      Level 6.2 supports 8K resolution at 120 fps.
      
      Also shrink the x264_levels array by using smaller data types.
      6f8aa71c
    • Anton Mitrofanov's avatar
      Fix CABAC+8x8dct in 4:4:4 · d46a5a46
      Anton Mitrofanov authored
      Use the correct ctxIdxInc calculation for coded_block_flag.
      d46a5a46
  7. 21 May, 2017 2 commits
    • Henrik Gramner's avatar
      x86: AVX-512 support · 472ce364
      Henrik Gramner authored
      AVX-512 consists of a plethora of different extensions, but in order to keep
      things a bit more manageable we group together the following extensions
      under a single baseline cpu flag which should cover SKL-X and future CPUs:
       * AVX-512 Foundation (F)
       * AVX-512 Conflict Detection Instructions (CD)
       * AVX-512 Byte and Word Instructions (BW)
       * AVX-512 Doubleword and Quadword Instructions (DQ)
       * AVX-512 Vector Length Extensions (VL)
      
      On x86-64 AVX-512 provides 16 additional vector registers, prefer using
      those over existing ones since it allows us to avoid using `vzeroupper`
      unless more than 16 vector registers are required. They also happen to
      be volatile on Windows which means that we don't need to save and restore
      existing xmm register contents unless more than 22 vector registers are
      required.
      
      Also take the opportunity to drop X264_CPU_CMOV and X264_CPU_SLOW_CTZ while
      we're breaking API by messing with the cpu flags since they weren't really
      used for anything.
      
      Big thanks to Intel for their support.
      472ce364
    • Henrik Gramner's avatar
      Support YUYV and UYVY packed 4:2:2 raw input · dcf40697
      Henrik Gramner authored
      Packed YUV is arguably more common than planar YUV when dealing with raw
      4:2:2 content.
      
      We can utilize the existing plane_copy_deinterleave() functions with some
      additional minor constraints (we cannot assume any particular alignment
      or overread the input buffer).
      
      Enables assembly optimizations on x86.
      dcf40697
  8. 21 Jan, 2017 1 commit
  9. 01 Dec, 2016 1 commit
    • Anton Mitrofanov's avatar
      Cosmetics · b2b39dae
      Anton Mitrofanov authored
      Also make x264_weighted_reference_duplicate() static.
      b2b39dae
  10. 13 Jun, 2016 1 commit
  11. 16 Jan, 2016 1 commit
  12. 18 Aug, 2015 1 commit
  13. 25 Jul, 2015 3 commits
    • Kaustubh Raste's avatar
      mips: Initial MSA support · ce0757d9
      Kaustubh Raste authored
      MSA is the MIPS SIMD Architecture.
      
      Add X264_CPU_MSA define.
      Update configure to detect MIPS platform and set flags.
      CPU-specific gcc options are expected through --extra-cflags.
      
      Sample command line for mips32r5:
          ./configure --host=mipsel-linux-gnu --cross-prefix=<TOOLCHAIN>/mips-mti-linux-gnu-
          --extra-cflags="-EL -mips32r5 -msched-weight -mload-store-pairs"
      Signed-off-by: default avatarKaustubh Raste <kaustubh.raste@imgtec.com>
      ce0757d9
    • Anton Mitrofanov's avatar
      Use forced frame types in slicetype analysis · aa275158
      Anton Mitrofanov authored
      This should improve MBTree and VBV when a lot of forced frame types are used.
      aa275158
    • Xiaolei Yu's avatar
      NV21 input support · 627f891c
      Xiaolei Yu authored
      Eliminates an extra copy when encoding Android camera preview images.
      
      Checkasm test by Janne Grunau.
      ARM assembly with improvements from Janne Grunau.
      627f891c
  14. 16 Jul, 2015 1 commit
  15. 23 Feb, 2015 3 commits
  16. 20 Dec, 2014 1 commit
  17. 12 Dec, 2014 1 commit
  18. 26 Aug, 2014 1 commit
  19. 20 Jul, 2014 1 commit
  20. 12 Mar, 2014 1 commit
    • Fiona Glaser's avatar
      x264.h: fix documentation · b7a50c16
      Fiona Glaser authored
      The full details of the return values of encoder_encode and encoder_headers
      were mistakenly removed a while ago; re-add them.
      b7a50c16
  21. 21 Jan, 2014 2 commits
  22. 08 Jan, 2014 1 commit
  23. 30 Oct, 2013 2 commits
    • Anton Mitrofanov's avatar
      Remove --visualize option. · 95d196ef
      Anton Mitrofanov authored
      It probably wasn't used or maintained for last few years.
      95d196ef
    • Fiona Glaser's avatar
      Add --filler option · c084f6c0
      Fiona Glaser authored
      Allows generation of hard-CBR streams without using NAL HRD.
      Useful if you want to be able to reconfigure the bitrate (which you can't do
      with NAL HRD on).
      c084f6c0
  24. 23 Aug, 2013 2 commits
    • Henrik Gramner's avatar
      Windows Unicode support · fa3cac51
      Henrik Gramner authored
      Windows, unlike most other operating systems, uses UTF-16 for Unicode strings while x264 is designed for UTF-8.
      
      This patch does the following in order to handle things like Unicode filenames:
      * Keep strings internally as UTF-8.
      * Retrieve the CLI command line as UTF-16 and convert it to UTF-8.
      * Always use Unicode versions of Windows API functions and convert strings to UTF-16 when calling them.
      * Attempt to use legacy 8.3 short filenames for external libraries without Unicode support.
      fa3cac51
    • Kieran Kunhya's avatar
      AVC-Intra support · 9b94896b
      Kieran Kunhya authored
      This format has been reverse engineered and x264's output has almost exactly
      the same bitstream as Panasonic cameras and encoders produce. It therefore does
      not comply with SMPTE RP2027 since Panasonic themselves do not comply with
      their own specification. It has been tested in Avid, Premiere, Edius and
      Quantel.
      
      Parts of this patch were written by Fiona Glaser and some reverse
      engineering was done by Joseph Artsimovich.
      9b94896b
  25. 05 Jul, 2013 1 commit
    • Henrik Gramner's avatar
      x86: Remove X264_CPU_SSE_MISALIGN functions · ff41804e
      Henrik Gramner authored
      Prevents a crash if the misaligned exception mask bit is cleared for some reason.
      
      Misaligned SSE functions are only used on AMD Phenom CPUs and the benefit is miniscule.
      They also require modifying the MXCSR control register and by removing those functions
      we can get rid of that complexity altogether.
      
      VEX-encoded instructions also supports unaligned memory operands. I tried adding AVX
      implementations of all removed functions but there were no performance improvements on
      Ivy Bridge. pixel_sad_x3 and pixel_sad_x4 had significant code size reductions though
      so I kept them and added some minor cosmetics fixes and tweaks.
      ff41804e
  26. 03 Jul, 2013 2 commits