1. 25 Jan, 2011 2 commits
    • Fiona Glaser's avatar
      VBV emergency mode · e6025413
      Fiona Glaser authored
      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.
      e6025413
    • Sean McGovern's avatar
      Bump dates to 2011 · ee9bc136
      Sean McGovern authored
      ee9bc136
  2. 10 Jan, 2011 6 commits
    • Fiona Glaser's avatar
      VFR/framerate-aware ratecontrol, part 2 · c583687f
      Fiona Glaser authored
      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.
      c583687f
    • Fiona Glaser's avatar
      Improve reference ordering in interleaved 3D video · 247f504d
      Fiona Glaser authored
       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.
      247f504d
    • Fiona Glaser's avatar
      Cosmetics: fref0/1 -> fref[2] and i_ref0/1 -> i_ref[2] · c081c854
      Fiona Glaser authored
      A much-needed refactoring, plus makes the next patch easier.
      c081c854
    • Fiona Glaser's avatar
    • Anton Mitrofanov's avatar
      7882a05d
    • Anton Mitrofanov's avatar
  3. 07 Dec, 2010 1 commit
  4. 25 Nov, 2010 1 commit
    • 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
  5. 19 Nov, 2010 1 commit
    • Fiona Glaser's avatar
      Chroma weighted prediction · f92aa4ec
      Fiona Glaser authored
      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.
      
      Original patch by Dylan Yudaken <dyudaken@gmail.com>.
      f92aa4ec
  6. 17 Nov, 2010 1 commit
  7. 14 Nov, 2010 1 commit
    • Kieran Kunhya's avatar
      Fix HRD with intra-refresh · 1e902646
      Kieran Kunhya authored
      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.
      1e902646
  8. 10 Nov, 2010 2 commits
    • Anton Mitrofanov's avatar
      Fix bug in r1753 · 180d081f
      Anton Mitrofanov authored
      Overflow compensation fix broke CRF with --no-mbtree.
      180d081f
    • 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
  9. 09 Nov, 2010 3 commits
  10. 10 Oct, 2010 1 commit
  11. 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
  12. 29 Aug, 2010 1 commit
  13. 29 Jul, 2010 1 commit
  14. 22 Jul, 2010 1 commit
  15. 21 Jul, 2010 1 commit
  16. 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
  17. 09 Jul, 2010 1 commit
  18. 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
  19. 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
  20. 25 Jun, 2010 3 commits
    • 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 2-pass bitrate prediction · 1a3548cf
      Fiona Glaser authored
      Adapt based on distance to the end in bits, not in frames.
      Helps in videos with absurdly simple end sections, e.g. black frames.
      1a3548cf
    • 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
  21. 09 Jun, 2010 2 commits
  22. 02 Jun, 2010 2 commits
  23. 31 May, 2010 1 commit
  24. 26 May, 2010 1 commit
  25. 18 May, 2010 1 commit
  26. 06 May, 2010 1 commit
    • Fiona Glaser's avatar
      Don't force row QPs to integer values with VBV · 9ce27834
      Fiona Glaser authored
      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.
      9ce27834