]> git.sesse.net Git - x264/commit
Periodic intra refresh
authorFiona Glaser <fiona@x264.com>
Tue, 22 Dec 2009 23:59:29 +0000 (18:59 -0500)
committerFiona Glaser <fiona@x264.com>
Thu, 14 Jan 2010 04:46:56 +0000 (23:46 -0500)
commitcde39046222b112261179144033e7a51430783d0
tree6c127ae0ae1e6f3cb62e7c2ed878b4f53fdb8829
parent30d76a5eee9355c5d3e81fc7eae65f926dec16a9
Periodic intra refresh
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.
18 files changed:
common/bs.h
common/common.c
common/common.h
common/frame.c
common/frame.h
encoder/analyse.c
encoder/encoder.c
encoder/lookahead.c
encoder/me.c
encoder/ratecontrol.c
encoder/set.c
encoder/set.h
encoder/slicetype.c
output/flv.c
output/matroska.c
output/mp4.c
x264.c
x264.h