1. 03 Jul, 2012 1 commit
    • Anton Mitrofanov's avatar
      Fix crash with --fps 0 · 5e3aaf1a
      Anton Mitrofanov authored
      Fix some integer overflows and check input parameters better.
      Also fix incorrect type specifiers for demuxer info printing.
      5e3aaf1a
  2. 18 May, 2012 1 commit
    • Fiona Glaser's avatar
      Threaded lookahead · df700eae
      Fiona Glaser authored
      Split each lookahead frame analysis call into multiple threads.  Has a small
      impact on quality, but does not seem to be consistently any worse.
      
      This helps alleviate bottlenecks with many cores and frame threads. In many
      case, this massively increases performance on many-core systems.  For example,
      over 100% faster 1080p encoding with --preset veryfast on a 12-core i7 system.
      Realtime 1080p30 at --preset slow should now be feasible on real systems.
      
      For sliced-threads, this patch should be faster regardless of settings (~10%).
      
      By default, lookahead threads are 1/6 of regular threads.  This isn't exacting,
      but it seems to work well for all presets on real systems.  With sliced-threads,
      it's the same as the number of encoding threads.
      df700eae
  3. 04 Feb, 2012 1 commit
  4. 22 Oct, 2011 1 commit
  5. 21 Sep, 2011 2 commits
    • Henrik Gramner's avatar
      4:2:2 encoding support · 5b0cb86f
      Henrik Gramner authored
      5b0cb86f
    • Loren Merritt's avatar
      SSSE3/SSE4 9-way fully merged i4x4 analysis (sad/satd_x9) · 3d82e875
      Loren Merritt authored
      i4x4 analysis cycles (per partition):
      penryn   sandybridge
      184-> 75  157-> 54  preset=superfast (sad)
      281->165  225->124  preset=faster    (satd with early termination)
      332->165  263->124  preset=medium
      379->165  297->124  preset=slower    (satd without early termination)
      
      This is the first code in x264 that intentionally produces different behavior
      on different cpus: satd_x9 is implemented only on ssse3+ and checks all intra
      directions, whereas the old code (on fast presets) may early terminate after
      checking only some of them. There is no systematic difference on slow presets,
      though they still occasionally disagree about tiebreaks.
      
      For ease of debugging, add an option "--cpu-independent" to disable satd_x9
      and any analogous future code.
      3d82e875
  6. 05 Aug, 2011 1 commit
  7. 22 Jul, 2011 2 commits
  8. 10 Jul, 2011 2 commits
  9. 13 Jun, 2011 1 commit
  10. 13 Apr, 2011 1 commit
    • Fiona Glaser's avatar
      Consolidate Blu-ray hacks into --bluray-compat · e54ea0c8
      Fiona Glaser authored
      This option is now required for Blu-ray compatibility.
      --open-gop bluray is now gone (using bluray-compat and open-gop implies a Blu-ray compatible open-gop).
      This option doesn't automatically enforce every aspect of Blu-ray compatibility (e.g. resolution, framerate, level, etc).
      e54ea0c8
  11. 12 Apr, 2011 1 commit
  12. 24 Mar, 2011 1 commit
  13. 25 Jan, 2011 1 commit
  14. 10 Jan, 2011 2 commits
  15. 14 Dec, 2010 1 commit
  16. 07 Dec, 2010 1 commit
  17. 25 Nov, 2010 2 commits
    • Alex Wright's avatar
      Make --weightp 1 a better speed tradeoff · 7e3019a3
      Alex Wright authored
      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).
      7e3019a3
    • Fiona Glaser's avatar
      Change qpmin default to 0 · ca8f00c7
      Fiona Glaser authored
      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.
      ca8f00c7
  18. 19 Nov, 2010 1 commit
  19. 17 Nov, 2010 1 commit
  20. 10 Nov, 2010 2 commits
    • Fiona Glaser's avatar
      Improve quantizer handling · 2f2ab0fa
      Fiona Glaser authored
      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.
      2f2ab0fa
    • Loren Merritt's avatar
      Add numeric names for the presets (0==ultrafast ... 9==placebo) · 3d96daca
      Loren Merritt authored
      This mapping will of course change if new presets are added in between, but will always be ordered from fastest to slowest.
      3d96daca
  21. 10 Oct, 2010 1 commit
    • Yusuke Nakamura's avatar
      Move DTS compression from libx264 to x264cli · e4b44c2e
      Yusuke Nakamura authored
      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.
      e4b44c2e
  22. 28 Sep, 2010 1 commit
    • Oskar Arvidsson's avatar
      Finish support for high-depth video throughout x264 · 0467589e
      Oskar Arvidsson authored
      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.
      0467589e
  23. 18 Sep, 2010 1 commit
    • Fiona Glaser's avatar
      Update source file headers · 213a99d0
      Fiona Glaser authored
      Update dates, improve file descriptions, make things more consistent.
      Also add information about commercial licensing.
      213a99d0
  24. 03 Sep, 2010 1 commit
    • Takashi Hirata's avatar
      Add support for level 1b · ceba5dd5
      Takashi Hirata authored
      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.
      ceba5dd5
  25. 15 Jul, 2010 2 commits
    • Loren Merritt's avatar
      Convert x264 to use NV12 pixel format internally · 387828ed
      Loren Merritt authored
      ~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.
      387828ed
    • Fiona Glaser's avatar
      Improve scenecut detection a bit · b4217e40
      Fiona Glaser authored
      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.
      b4217e40
  26. 04 Jul, 2010 1 commit
    • Oskar Arvidsson's avatar
      Support for 9 and 10-bit encoding · c91f43a4
      Oskar Arvidsson authored
      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.
      c91f43a4
  27. 03 Jul, 2010 1 commit
    • Fiona Glaser's avatar
      Support infinite keyint (--keyint infinite). · b7789b1f
      Fiona Glaser authored
      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).
      b7789b1f
  28. 25 Jun, 2010 4 commits
    • Fiona Glaser's avatar
      Interactive encoder control: error resilience · edc1135e
      Fiona Glaser authored
      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.
      edc1135e
    • Fiona Glaser's avatar
      Lookaheadless MB-tree support · 669cc1de
      Fiona Glaser authored
      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.
      669cc1de
    • Lamont Alston's avatar
      Open-GOP support · d020c427
      Lamont Alston authored
      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.
      d020c427
    • Fiona Glaser's avatar
      Improve HRD accuracy · 5a57688f
      Fiona Glaser authored
      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.
      5a57688f
  29. 14 Jun, 2010 2 commits