[x264-devel] x264 Development Newsletter: Vol 2

Jason Garrett-Glaser darkshikari at gmail.com
Tue Sep 28 04:57:34 CEST 2010


This is the second x264 development newsletter.  If you missed the
first one, this is a regular email containing updates on fixes and
improvements in the most recent x264 push, along with updates on
what's coming next.

Fixes:

libx264 should now give correct DTS and print the correct bitrate if
the input PTS do not start at zero.  This doesn't affect x264CLI, but
does affect calling apps that don't start their PTS at zero.

libx264 ratecontrol should now work correctly in CFR mode with
timebase != 1/fps.  As documented, x264 was supposed to ignore the
timebase if CFR mode is set (for purposes of ratecontrol), but that's
not what actually happened; things just broke.  This should now be
fixed.  This is necessary for correct behavior with tune=zerolatency
in gstreamer.

A missing emms has been added to dump-yuv, fixing some Heisenbug
brokenness when dump-yuv was used.

Improvements:

Slice-max-size has been made more aggressive.  Previously we just made
some blind assumptions about the distribution of escape bytes and
other such inaccuracies -- now it should work absolutely.  It accounts
for a few extra bytes that are highly predictable (CABAC's extra byte,
CAVLC's skip runs).  The primary problem, however, was caused by the
terrible design of H.264's CABAC, which outputs a string of zeroes if
CABAC is perfectly adapted, thus forcing tons of escape bytes for any
perfectly uniform image.  Slice-max-size should be fixed in this case.

Chroma mode decision and subpel, mentioned in the last newsletter, is
finally in.  It's enabled at subme >= 9 and provides a ~0.4-1%
compression improvement.

New features:

High-bit-depth support has been finished in libx264 and x264cli.  The
assembly code is still yet to be committed, so it's a bit slow, but
libx264 now supports high-bit-depth input.  Additionally, the filter
framework now supports 16-bit, which will be useful for future filters
to avoid rounding error and banding.  It'll automatically perform
dither to go down from 16-bit to 8, 9, or 10-bit, thus making this
useful for 8-bit encoding as well.

High 10 Intra profile is supported now, which makes x264 now capable
of encoding AVC Intra 50.  See the commit message for a sample
commandline.

Upcoming:

High bit depth assembly code is coming soon, which should give a nice
(3x+) improvement to high bit depth encoding speed.

HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way
into the x264CLI filter framework.  This was previously being blocked
by the high-bit-depth modifications to the filter framework.

Adaptive MBAFF development is coming along, with B-frames being
finished up currently.

Dark Shikari

The x264 Development Team


More information about the x264-devel mailing list