1. 14 Jan, 2010 15 commits
    • Fiona Glaser's avatar
      Eliminate intentional array overflow in quant matrix handling · c37a5100
      Fiona Glaser authored
      While it probably never caused problems, it was incredibly ugly and evil.
    • Fiona Glaser's avatar
      Faster --me tesa · 0210f805
      Fiona Glaser authored
    • Anton Mitrofanov's avatar
      Fix static pthreads + dynamically linked x264 on win32 · da619d5d
      Anton Mitrofanov authored
      Add the necessary static pthread initialization code to a new DLLmain function.
    • Steven Walters's avatar
      Add getopt_long to the included getopt.c · 229d8d76
      Steven Walters authored
      Fixes option handling on OSs that have a nonworking/missing getopt (e.g. Solaris).
    • Fiona Glaser's avatar
      Faster psy-trellis init · 62ece1c2
      Fiona Glaser authored
      Remove some unncessary zigzags.
    • Fiona Glaser's avatar
      Simplfy intra mode availability handling · 85dc3f9f
      Fiona Glaser authored
      Slightly faster, 1.5kb smaller binary size, less code.
    • Fiona Glaser's avatar
      Fix free callback, add x264_encoder_parameters function · 398d0eb3
      Fiona Glaser authored
      x264 would try to use the passed param struct after freeing if the param_free callback was set.
      Probably didn't cause any issues, as probably no programs used the callback in this location yet.
      A new x264_encoder_parameters function is now available in the API.
      This function lets the calling application grab the current state of the encoder's parameters.
      Use this in x264cli to ensure that the param struct used for set_param is updated with whatever changes x264_encoder_open has made to it.
      Patch partially by Anton Mitrofanov <BugMaster@narod.ru>.
    • David Conrad's avatar
      Fix x264 compilation on Apple GCC · aa48c1fb
      David Conrad authored
      Apple's GCC stupidly ignores the ARM ABI and doesn't give any stack alignment beyond 4.
    • Fiona Glaser's avatar
      Faster weightp motion search · fd1cf294
      Fiona Glaser authored
      For blind-weight dupes, copy the motion vector from the main search and qpel-refine instead of doing a full search.
      Fix the p8x8 early termination, which had unexpected results when combined with blind weighting.
      Overall, marginally reduces compression but should potentially improve speed by over 5%.
    • Fiona Glaser's avatar
      More correct padding constants for lowres planes · bc0ae2ef
      Fiona Glaser authored
      Since lowres analysis isn't interlace-aware, we don't need to double the vertical padding for interlaced video.
    • Fiona Glaser's avatar
      Fix some invalid reads caught by valgrind · 5d40e878
      Fiona Glaser authored
      Temporal predictor calculation was misled by invalid reference counts for I-frames.
    • Fiona Glaser's avatar
      Periodic intra refresh · cde39046
      Fiona Glaser authored
      Uses SEI recovery points, a moving vertical "bar" of intra blocks, and motion vector restrictions to eliminate keyframes.
      Attempt to hide the visual appearance of the intra bar when --no-psy isn't set.
      Enabled with --intra-refresh.
      The refresh interval is controlled using keyint, but won't exceed the number of macroblock columns in the frame.
      Greatly benefits low-latency streaming by making it possible to achieve constant framesize without intra-only encoding.
      Combined with slice-max size for one slice per packet, tests suggest effective resiliance against packet loss as high as 25%.
      x264 is now the best free software low-latency video encoder in the world.
      Accordingly, change the API to add b_keyframe to the parameters present in output pictures.
      Calling applications should check this to see if a frame is seekable, not the frame type.
      Also make x264's motion estimation strictly abide by horizontal MV range limits in order for PIR to work.
      Also fix a major bug in sliced-threads VBV handling.
      Also change "auto" threads for sliced threads to "cores" instead of "1.5*cores" after performance testing.
      Also simplify ratecontrol's checking of first pass options.
      Also some minor tweaks to row-based VBV that should improve VBV accuracy on small frames.
    • Kieran Kunhya's avatar
      LAVF/FFMS input support, native VFR timestamp handling · 30d76a5e
      Kieran Kunhya authored
      libx264 now takes three new API parameters.
      b_vfr_input tells x264 whether or not the input is VFR, and is 1 by default.
      i_timebase_num and i_timebase_den pass the timebase to x264.
      x264_picture_t now returns the DTS of each frame: the calling app need not calculate it anymore.
      Add libavformat and FFMS2 input support: requires libav* and ffms2 libraries respectively.
      FFMS2 is _STRONGLY_ preferred over libavformat: we encourage all distributions to compile with FFMS2 support if at all possible.
      FFMS2 can be found at http://code.google.com/p/ffmpegsource/.
      --index, a new x264cli option, allows the user to store (or load) an FFMS2 index file for future use, to avoid re-indexing in the future.
      Overhaul the muxers to pass through timestamps instead of assuming CFR.
      Also overhaul muxers to correctly use b_annexb and b_repeat_headers to simplify the code.
      Remove VFW input support, since it's now pretty much redundant with native AVS support and LAVF support.
      Finally, overhaul a large part of the x264cli internals.
      --force-cfr, a new x264cli option, allows the user to force the old method of timestamp handling.  May be useful in case of a source with broken timestamps.
      Avisynth, YUV, and Y4M input are all still CFR.  LAVF or FFMS2 must be used for VFR support.
      Do note that this patch does *not* add VFR ratecontrol yet.
      Support for telecined input is also somewhat dubious at the moment.
      Large parts of this patch by Mike Gurlitz <mike.gurlitz@gmail.com>, Steven Walters <kemuri9@gmail.com>, and Yusuke Nakamura <muken.the.vfrmaniac@gmail.com>.
    • Fiona Glaser's avatar
      More help typo fixes · 8c8bfe19
      Fiona Glaser authored
    • Loren Merritt's avatar
      Fix x264_clz on inputs > 1<<31 · 65f988b7
      Loren Merritt authored
      (though x264 never generates such inputs)
  2. 15 Dec, 2009 2 commits
    • Fiona Glaser's avatar
      Don't do sum/ssd analysis if weightp == 1 · b7fa2857
      Fiona Glaser authored
      Typo fixes in comments and help.
    • Fiona Glaser's avatar
      Fix two bugs in 2-pass ratecontrol · f30aed6d
      Fiona Glaser authored
      last_qscale_for wasn't set during the 2pass init code.
      abr_buffer was way too small in the case of multiple threads, so accordingly increase its buffer size based on the number of threads.
      May significantly increase quality with many threads in 2-pass mode, especially in cases with extremely large I-frames, such as anime.
  3. 11 Dec, 2009 5 commits
    • Steven Walters's avatar
      Avisynth-MT and 2.6 compatibility fixes · 7f0ef681
      Steven Walters authored
      Explain to the user why YV12 conversion is forced with Avisynth 2.6.
      Fix encoding with Avisynth-MT scripts by inserting the necessary Distributor() call; speeds such scripts back up to expected levels.
    • Steven Walters's avatar
      Fix zone parsing on mingw · e09a20eb
      Steven Walters authored
      Due to MinGW evidently being in the hands of a pack of phenomenal idiots, MinGW does not have strtok_r, a basic string function.
      As such, remove the dependency on strtok_r in zone parsing.
      Previously, using zones for anything other than ratecontrol failed.
    • Fiona Glaser's avatar
      More lookahead optimizations · 84ccdd3a
      Fiona Glaser authored
      Under subme 1, don't do any qpel search at all and round temporal MVs accordingly.
      Drop internal subme with subme 1 to do fullpel predictor checks only.
      Other minor optimizations.
    • Fiona Glaser's avatar
      Various minor missing changes from previous commits · bf70233e
      Fiona Glaser authored
      Boolify sliced threads too
      Remove unused constants from dct-a.asm
      Fix a few typos/minor errors in preset documentation
    • Fiona Glaser's avatar
      Fix regression in direct=auto/temporal in r1364 · 0b34d467
      Fiona Glaser authored
      Bug caused rare race condition in frame reference handling.
      This resulted in invalid bitstreams in some B-frames and, very rarely, crashes.
  4. 09 Dec, 2009 9 commits
  5. 05 Dec, 2009 5 commits
  6. 01 Dec, 2009 1 commit
  7. 30 Nov, 2009 2 commits
    • Fiona Glaser's avatar
      10L in r1353 · ade48a91
      Fiona Glaser authored
      Broke mp4 output.
    • Steven Walters's avatar
      Enhanced Avisynth input support · 025f01db
      Steven Walters authored
      Requires avisynth_c.h from the Avisynth API headers.
      Reports errors properly from Avisynth script input.
      Automatically construct input scripts for almost any input file.
      Tries ffmpegsource2, DSS2, directshowsource, and many other sourcing methods, based on the input file extension.
      Automatically converts to YV12.
  8. 27 Nov, 2009 1 commit
    • Fiona Glaser's avatar
      Much faster weightp · 979c14da
      Fiona Glaser authored
      Move sum/ssd calculation out of lookahead and do it only once per frame.
      Also various minor optimizations, cosmetics, and cleanups.