1. 14 Sep, 2009 1 commit
    • Fiona Glaser's avatar
      Make MV costs global instead of static · b1eac265
      Fiona Glaser authored
      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.
      b1eac265
  2. 06 Sep, 2009 2 commits
  3. 31 Aug, 2009 1 commit
    • Fiona Glaser's avatar
      Multi-slice encoding support · 4ccbb199
      Fiona Glaser authored
      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.
      4ccbb199
  4. 28 Aug, 2009 2 commits
  5. 27 Aug, 2009 1 commit
  6. 23 Aug, 2009 1 commit
    • David Conrad's avatar
      GSOC merge part 2: ARM stack alignment · ca7da1ae
      David Conrad authored
      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.
      ca7da1ae
  7. 19 Aug, 2009 1 commit
    • Fiona Glaser's avatar
      Improve QPRD · bde792fe
      Fiona Glaser authored
      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.
      bde792fe
  8. 17 Aug, 2009 1 commit
    • Fiona Glaser's avatar
      Fix two bugs in QPRD · ba0c0351
      Fiona Glaser authored
      QPRD could in some cases force blocks to skip when they shouldn't be ~(+0.01db)
      Force QPRD to abide by qpmin/qpmax restrictions.
      ba0c0351
  9. 08 Aug, 2009 1 commit
  10. 07 Aug, 2009 1 commit
    • Fiona Glaser's avatar
      Macroblock-tree ratecontrol · 835ccc3c
      Fiona Glaser authored
      On by default; can be turned off with --no-mbtree.
      Uses a large lookahead to track temporal propagation of data and weight quality accordingly.
      Requires a very large separate statsfile (2 bytes per macroblock) in multi-pass mode.
      Doesn't work with b-pyramid yet.
      Note that MB-tree inherently measures quality different from the standard qcomp method, so bitrates produced by CRF may change somewhat.
      This makes the "medium" preset a bit slower.  Accordingly, make "fast" slower as well, and introduce a new preset "faster" between "fast" and "veryfast".
      All presets "fast" and above will have MB-tree on.
      Add a new option, --rc-lookahead, to control the distance MB tree looks ahead to perform propagation analysis.
      Default is 40; larger values will be slower and require more memory but give more accurate results.
      This value will be used in the future to control ratecontrol lookahead (VBV).
      Add a new option, --no-psy, to disable all psy optimizations that don't improve PSNR or SSIM.
      This disables psy-RD/trellis, but also other more subtle internal psy optimizations that can't be controlled directly via external parameters.
      Quality improvement from MB-tree is about 2-70% depending on content.
      Strength of MB-tree adjustments can be tweaked using qcompress; higher values mean lower MB-tree strength.
      Note that MB-tree may perform slightly suboptimally on fades; this will be fixed by weighted prediction, which is coming soon.
      835ccc3c
  11. 28 Jul, 2009 1 commit
    • Fiona Glaser's avatar
      Faster bidir_rd plus some bugfixes · b08410d0
      Fiona Glaser authored
      Cache chroma MC during refine_bidir_rd and use both the luma and chroma caches to skip MC in macroblock_encode.
      Fix incorrect call to rd_cost_part; refine_bidir_rd output was incorrect for i8>0.
      Remove some redundant clips.
      ~12% faster refine_bidir_rd.
      b08410d0
  12. 27 Jul, 2009 1 commit
    • Fiona Glaser's avatar
      Fix two bugs in QPRD · 9ea7b69d
      Fiona Glaser authored
      fprofile settings now actually fprofile QPRD.
      Don't use i_mbrd before initializing it.
      9ea7b69d
  13. 26 Jul, 2009 3 commits
    • Fiona Glaser's avatar
      Fix 10l in QPRD · 11f50441
      Fiona Glaser authored
      Trellis used wrong lambda with trellis=1
      11f50441
    • Fiona Glaser's avatar
      Fix a nondeterminism with threads and subme>7 · fa3b8139
      Fiona Glaser authored
      Also add a few more checks to eliminate the need for spel_border.
      fa3b8139
    • Fiona Glaser's avatar
      Add QPRD support as subme=10 · 4304c427
      Fiona Glaser authored
      Refactor trellis lambda selection to be done in analyse_init instead of in trellis.
      This will allow for more easy adaption of lambda later on; for now it allows constant lambda across variable QPs.
      QPRD is only available with adaptive quantization enabled and generally improves SSIM and visual quality.
      Additionally, weight the SSD values from RD based on the relative QP offset for chroma; helps visually at high QPs where chroma has a lower QP than luma.
      This fixes some visual artifacts created by QPRD at high QPs.
      Note that this generally hurts PSNR and SSIM, and so is only on when psy-RD is on.
      4304c427
  14. 24 May, 2009 2 commits
  15. 18 Apr, 2009 1 commit
  16. 17 Apr, 2009 1 commit
  17. 08 Apr, 2009 1 commit
  18. 31 Mar, 2009 1 commit
  19. 30 Mar, 2009 2 commits
  20. 19 Mar, 2009 1 commit
  21. 04 Mar, 2009 1 commit
    • Fiona Glaser's avatar
      Remove non-pre scenecut · 42f27d04
      Fiona Glaser authored
      Add support for no-b-adapt + pre-scenecut (patch by BugMaster)
      Pre-scenecut was generally better than regular scenecut in terms of accuracy and regular scenecut didn't work in threaded mode anyways.
      Add no-scenecut option (scenecut=0 is now no scenecut; previously it was -1)
      Fix an incorrect bias towards P-frames near scenecuts with B-adapt 2.
      Simplify pre-scenecut code.
      42f27d04
  22. 04 Feb, 2009 1 commit
  23. 03 Feb, 2009 1 commit
  24. 30 Jan, 2009 1 commit
    • Fiona Glaser's avatar
      Massive overhaul of nnz/cbp calculation · e394bd60
      Fiona Glaser authored
      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.
      e394bd60
  25. 14 Jan, 2009 2 commits
  26. 06 Jan, 2009 1 commit
  27. 12 Dec, 2008 1 commit
  28. 29 Nov, 2008 1 commit
  29. 29 Oct, 2008 1 commit
    • Fiona Glaser's avatar
      Full sub8x8 RD mode decision · fb1af79e
      Fiona Glaser authored
      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.
      fb1af79e
  30. 22 Oct, 2008 1 commit
    • Fiona Glaser's avatar
      Sub-8x8 Qpel-RD in P-frames · 5993b7e9
      Fiona Glaser authored
      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.
      5993b7e9
  31. 03 Oct, 2008 1 commit
    • Fiona Glaser's avatar
      Resolve quality regression in r996 · be4be30f
      Fiona Glaser authored
      Accidentally removed the wrong line of code.  I think this classifies as a "10l".
      Thanks to techouse for initial bug report and skystrife for helping me find it.
      be4be30f
  32. 02 Oct, 2008 1 commit
    • Fiona Glaser's avatar
      Rework subme system, add RD refinement in B-frames · 60455fff
      Fiona Glaser authored
      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.
      60455fff
  33. 28 Sep, 2008 1 commit
    • Fiona Glaser's avatar
      Replace High 4:4:4 profile lossless with High 4:4:4 Predictive. · a9e86d24
      Fiona Glaser authored
      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.
      As I write this, JM does not actually correctly decode this profile.
      Hopefully this lack of support will soon change with this commit, as x264 will be (to my knowledge) the first compliant encoder.
      a9e86d24