<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Saintdev</id>
	<title>VideoLAN Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Saintdev"/>
	<link rel="alternate" type="text/html" href="https://wiki.videolan.org/Special:Contributions/Saintdev/"/>
	<updated>2026-11-04T15:37:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_TODO&amp;diff=22185</id>
		<title>X264 TODO</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_TODO&amp;diff=22185"/>
		<updated>2012-03-04T05:09:25Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: /* Quantization */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains an incomplete list of things available in x264 for you to do. It&#039;s organized into sections covering various parts of x264. &lt;br /&gt;
&lt;br /&gt;
Some useful resources: [http://www.x264.nl/developers/Dark_Shikari/?dir=./src Dark Shikari&#039;s pile of junk], [http://akuvian.org/src/x264/ Pengvado&#039;s pile of junk]. &lt;br /&gt;
&lt;br /&gt;
If you&#039;re interested in doing any of this, drop by #x264dev on Freenode IRC. There are no experience or educational requirements for doing any of this, though you are expected to know how to code. &lt;br /&gt;
&lt;br /&gt;
Bolded features may have companies willing to sponsor or provide bounties. This is not complete either; just because it&#039;s not bolded doesn&#039;t mean there aren&#039;t resources out there. If your company is interested in offering a bounty, drop by IRC. &lt;br /&gt;
&lt;br /&gt;
=== Motion Estimation ===&lt;br /&gt;
&lt;br /&gt;
*Sequential elimination (SEA), used for exhaustive search, might be more generally applicable to algorithms like UMH, by letting us skip a lot of SADs. The downside is we won&#039;t be able to use SAD_X4 anymore. &lt;br /&gt;
*(T)ESA is currently wrong for motion searches done on weightp duplicates. This effect is miniscule, but it still should be fixed. &lt;br /&gt;
*Hierarchical motion estimation might be a useful way to catch very long motion vectors without the cost of UMH or ESA. It might also help regularize motion. &lt;br /&gt;
*Somehow take into account the effect of motion vector decision on future blocks. &lt;br /&gt;
**Hierarchical motion estimation &lt;br /&gt;
**Approximations from lookahead MVs &lt;br /&gt;
**Iterative ME (as per Snow) &lt;br /&gt;
**Trellis motion estimation &lt;br /&gt;
*We don&#039;t need to check all 11 predictors all the time for 16x16 fullpel motion search. &lt;br /&gt;
**But how do we know which ones we can afford to skip, and when? &lt;br /&gt;
**Xvid and libtheora have algorithms for this, but the former&#039;s is almost surely 100% useless and the latter doesn&#039;t seem impressive either. &lt;br /&gt;
*libtheora does fullpel motion estimation on the source pixels instead of decoded pixels. Does this give a better starting point for the subpel search and discourage &amp;quot;weird&amp;quot; MVs? &lt;br /&gt;
*With extremely fast encoding settings (subme 0), can we rip off lookahead MVs instead of doing a real search? &lt;br /&gt;
*Try sub-8x8 partitions in B-frames. Is it at all useful? &lt;br /&gt;
*Try bidir motion estimation for fullpel. That is, considering L1&#039;s MV when doing L0 (or vice versa). Xvid does this. How much does it help? &lt;br /&gt;
*Fullpel chroma ME? &lt;br /&gt;
**For TESA?&lt;br /&gt;
&lt;br /&gt;
=== Intra Analysis ===&lt;br /&gt;
&lt;br /&gt;
*Make the early terminations smarter. Currently they&#039;re just hacks -- some statistical analysis might be useful. &lt;br /&gt;
*SAD (subme 1) i8x8 vs i4x4 decision is a bit bad. Can it be improved without significant speed loss?&lt;br /&gt;
&lt;br /&gt;
=== Mode Decision ===&lt;br /&gt;
&lt;br /&gt;
*Can we find more ways to skip more motion searches in multiref? &lt;br /&gt;
*On extremely fast encoding settings, fast skip is actually kind of slow. But anything dumber (e.g. SAD) is completely useless. Is there some better balance that can be achieved here? &lt;br /&gt;
*See the TODOs for deblock-aware RD in common/deblock.c. &lt;br /&gt;
*Is there a faster way than SA8D/SATD to do 8x8dct vs 4x4dct mode decision? At very fast settings, the time this uses is nontrivial. &lt;br /&gt;
*Is there a faster way than RD to do 8x8dct vs 4x4dct mode decision that&#039;s still better than SATD? RD takes over an order of magnitude more time than SATD, so it might be useful to have something in the middle. &lt;br /&gt;
*Is there some value to swapping the mode decision metric from SATD to SA8D if we think that the macroblock will use 8x8dct? [http://akuvian.org/src/x264/x264_dct8_guess.diff This has been tried before], but only helped if our guess was extremely good (better than we could get in reality). &lt;br /&gt;
*With trellis 2, can we skip most of CABAC and CAVLC bit cost calculation? &lt;br /&gt;
*How about a &amp;quot;brute force&amp;quot; mode decision that takes no shortcuts (no early ref termination in p8x8, no SATD thresholds, etc)?&lt;br /&gt;
&lt;br /&gt;
=== Psy ===&lt;br /&gt;
&lt;br /&gt;
*Psy-RD is a hack. It works, but it&#039;s a hack. If you apply QNS with Psy-RD as the metric, it goes way overboard and gives terrible results. This means that Psy-RD only works because normal mode decision is limited in the way it can modify the image to better suit the metric. Is there a way to make it better? &lt;br /&gt;
*Should RD be linear at all? Perhaps we should weight more heavily against low quality blocks and also try to ignore minuscule distortion that viewers can&#039;t see. &lt;br /&gt;
*Psy-trellis (and maybe psy-RD?) are too strong at very high QPs. &lt;br /&gt;
*Psy-trellis should be merged with Psy-RD. There are patches for this, but they probably won&#039;t be committed until psy-RD itself is fixed. &lt;br /&gt;
*RD should take into account local variance. &lt;br /&gt;
*Lambda should be varied on a per-DCT-block basis instead of a per-macroblock basis. &lt;br /&gt;
*Lambda should be picked independent of quantizer (i.e. with greater precision). &lt;br /&gt;
*Classic problem: a block is mostly high complexity but has a small area of low complexity. How do we judge whether that area is important? Good example: sharp text on background with film grain; grain gets blurred out because of the text. &lt;br /&gt;
**If we think it&#039;s important all the time, we ruin the quality of many clips that rely on raising complexity on edges (Touhou). &lt;br /&gt;
*Should motion estimation lambda be as high as it is at very high quantizers? There&#039;s some value to capturing &amp;quot;true motion&amp;quot;... &lt;br /&gt;
*Macroblock tree correlates pretty well with visual perception in that its concept of a &amp;quot;high complexity&amp;quot; matches well with the visual concept. Except for local illumination changes. Talk to Dark Shikari for a patch.&lt;br /&gt;
&lt;br /&gt;
=== Lookahead ===&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Lookahead should be multithreaded, either by splitting the frame (sliced threads) or running multiple frame analysis calls at once.&#039;&#039;&#039; &lt;br /&gt;
*Temporal MV predictors in lookahead? There&#039;s a patch for these somewhere, but they biased heavily in favor of B-frames, likely by improving the motion search. &lt;br /&gt;
*Should lookahead use variable lambda based on quantizer (esp. due to adaptive quant)? If so, should it take into account estimated ratecontrol quantizer, too? If so, how?&lt;br /&gt;
&lt;br /&gt;
=== Quantization ===&lt;br /&gt;
&lt;br /&gt;
*CAVLC &amp;quot;trellis&amp;quot; is a hack. It works, but it&#039;s a hack. Make it better. See the TODOs in encoder/rdo.c. &lt;br /&gt;
*There&#039;s room for something between trellis and deadzone in terms of complexity. libvpx has a good example -- it biases towards zero-runs in its &amp;quot;medium speed&amp;quot; quantizer. This can&#039;t be SIMD&#039;d easily, but is still vastly faster than trellis. A nonlinear quantizer (be more likely to round up larger coefficients) might also be useful. &lt;br /&gt;
*Floyd-Steinberg for quantization? Try pushing quantization error to nearby DCT coefficients. Should this go from high to low or low to high? &lt;br /&gt;
*Energy-preserving quantizer -- maintain L1 (or maybe L2? I&#039;m not sure) energy. Should we maintain it in the spatial domain (post-iDCT) or residual domain? Probably the former. &lt;br /&gt;
**See [https://github.com/saintdev/x264-devel/compare/enquant-base...energy-quant saintdev&#039;s github] for one attempt at this.&lt;br /&gt;
*Decimation is currently just a ripoff of the JVT recommended algorithm. Can we do this more optimally? With RD?&lt;br /&gt;
&lt;br /&gt;
=== Transform ===&lt;br /&gt;
&lt;br /&gt;
*Analyze the error characteristics of the fDCT. Is there any way to make it more accurate without much speed loss? Particularly at extremely low quantizers, this might help. &lt;br /&gt;
*Before forward transform, run a &amp;quot;blocking filter&amp;quot; that acts as the approximate inverse of the deblock filter. See [http://akuvian.org/src/x264/Shwang_loopfilter_thesis.pdf this paper].&lt;br /&gt;
&lt;br /&gt;
=== Interlacing ===&lt;br /&gt;
&lt;br /&gt;
*Lookahead currently blend-deinterlaces to get the lowres. Is this a good idea? Is there something better that isn&#039;t much slower? &lt;br /&gt;
*Constrained intra + adaptive MBAFF. Does anyone care about this? &lt;br /&gt;
*PAFF + MBAFF adaptive - PAFF performs better than Adaptive MBAFF on high motion scenes because it can predict from the previous field.&lt;br /&gt;
&lt;br /&gt;
=== Weighted Prediction ===&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;Make weightp work with interlacing. Preferably abuse reference duplication to make it useful for MBAFF.&#039;&#039;&#039; &lt;br /&gt;
*Finish K-means decision for weightp. Talk to DylanZA about getting his current patch for this one. &lt;br /&gt;
*Add explicit weighting for B-frames, too. This helps in nonlinear fades, among other cases. &lt;br /&gt;
*Improve weighted prediction analysis to do more searching based on an estimated offset vs scale gradient.&lt;br /&gt;
&lt;br /&gt;
=== Ratecontrol ===&lt;br /&gt;
&lt;br /&gt;
*VBV might be able to utilize the ability to re-encode a row of the frame for improved accuracy. &lt;br /&gt;
**Maybe re-encode everything in case of an underflow that row-reencoding can&#039;t fix? This might be better than underflowing. &lt;br /&gt;
*Current per-frame VBV is a hack. It only adapts per row and is O(N^2), where N is the number of rows. An O(N) solution would be able to react more often and thus be more accurate. &lt;br /&gt;
*Make the frame size and row size predictors better. They currently are kind of crappy. &lt;br /&gt;
*Ratecontrol code as a whole is a bit of a mess. It could be improved. There&#039;s a lot of cruft left over that is probably not needed now, like qblur. &lt;br /&gt;
*2-pass VBV is actually more likely to underflow than 1-pass because it doesn&#039;t adapt as aggressively and trusts first pass data a lot. This trust is often misplaced if the first pass was a fast one. This should be improved. &lt;br /&gt;
*2-pass macroblock-tree: if we added the ability to do macroblock-tree on real encoded data, we&#039;d get better results (particularly with repeating patterns and multiref, such as an anime character&#039;s mouth moving). &lt;br /&gt;
*Macroblock-tree: make it more psy-aware. Maybe we should cap how much it lowers the quantizer on extremely static scenes? This might tie into the &amp;quot;just-noticeable error&amp;quot; issue in RD.&lt;br /&gt;
&lt;br /&gt;
=== GPU ===&lt;br /&gt;
&lt;br /&gt;
*Motion estimation? &lt;br /&gt;
**Methods &lt;br /&gt;
***Hierarchical? &lt;br /&gt;
***2D Wave? &lt;br /&gt;
***Something else? &lt;br /&gt;
**&amp;quot;Easy&amp;quot;: lookahead motion estimation &lt;br /&gt;
***Extremely high parallelism, hundreds of frame searches (each with thousands of searches) at once. &lt;br /&gt;
**&amp;quot;Hard&amp;quot;: main motion estimation &lt;br /&gt;
***Difficult synchronization issues, not as heavily parallel in terms of number of macroblocks, but far more partition sizes and refs to search. &lt;br /&gt;
***But potentially more useful... &lt;br /&gt;
*Other things?&lt;br /&gt;
&lt;br /&gt;
=== x86 assembly ===&lt;br /&gt;
&lt;br /&gt;
*Optimize more for the Phenom. &lt;br /&gt;
*Yell at holger to commit his local patches. &lt;br /&gt;
*Make a merged SA8D/SATD for the 8x8dct mode decision, since the two share most of their calculation. Hadamard_ac already does this, but slightly differently.&lt;br /&gt;
&lt;br /&gt;
=== Other assembly ===&lt;br /&gt;
&lt;br /&gt;
*NEON assembly is nowhere near complete. &lt;br /&gt;
**Chroma MC needs to be rewritten for NV12 support. &lt;br /&gt;
*Altivec assembly is very lacking. &lt;br /&gt;
*SPARC VIS assembly is only available when high bit-depth is disabled.&lt;br /&gt;
&lt;br /&gt;
=== Other CPU optimizations ===&lt;br /&gt;
&lt;br /&gt;
*x264 needs more prefetching. How many L1 and L2 cache misses (particularly L1) can we get rid of via smart prefetching in the right places? Warning: this is often hard to benchmark. &lt;br /&gt;
*Different CPUs take different relative times for some functions. Is this enough (particularly across architectures) to justify different encoding settings for different CPUs?&lt;br /&gt;
&lt;br /&gt;
=== Other features ===&lt;br /&gt;
&lt;br /&gt;
*MPEG-2 encoding support &lt;br /&gt;
*VP8 encoding support &lt;br /&gt;
*Support for SMPTE timecodes &lt;br /&gt;
*Merge speedcontrol &lt;br /&gt;
*Mixed lossless/lossy encoding.&lt;br /&gt;
*Segment re-encoding&lt;br /&gt;
*Spec compliant AVC-Intra encoding (ask kierank for spec)&lt;br /&gt;
&lt;br /&gt;
=== x264CLI ===&lt;br /&gt;
&lt;br /&gt;
*Finish audio support. Talk to Kovensky about this one. &lt;br /&gt;
*Make the filtering system aware of fullrange vs TV range. &lt;br /&gt;
*Make the filtering system aware of BT.601 vs BT.709. &lt;br /&gt;
*Add more filters. &lt;br /&gt;
**Deinterlacers (YADIF). &lt;br /&gt;
**Denoisers (HQDN3D?). &lt;br /&gt;
**IVTC, decomb? &lt;br /&gt;
*Merge L-SMASH mp4 muxer. &lt;br /&gt;
*Add TS muxing support using HRD. Talk to kierank about this one. &lt;br /&gt;
*Add --device support. &lt;br /&gt;
*Add automatic --level restriction support.&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_asm_intro&amp;diff=20610</id>
		<title>X264 asm intro</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_asm_intro&amp;diff=20610"/>
		<updated>2011-12-13T03:05:28Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The discussions on this page have been edited for clarity, ease of reading, collation of later questions, and to trim out some noise. The original transcript can be found here: [[X264asm]] &lt;br /&gt;
&lt;br /&gt;
__TOC__ &lt;br /&gt;
&lt;br /&gt;
== Example 1: predict_4x4_dc  ==&lt;br /&gt;
&lt;br /&gt;
Open common/x86/predict-a.asm, go to predict_4x4_dc_mmxext ([http://git.videolan.org/?p=x264.git;a=blob;f=common/x86/predict-a.asm;h=a05e91beda809b5e113df8ba122496e756442df8;hb=HEAD#l292 git link]). This function does the following: &lt;br /&gt;
&amp;lt;pre&amp;gt;  A B C D&lt;br /&gt;
E X X X X&lt;br /&gt;
F X X X X&lt;br /&gt;
G X X X X&lt;br /&gt;
H X X X X&amp;lt;/pre&amp;gt; &lt;br /&gt;
It calculates (A+B+C+D+E+F+G+H+4)/8, and sets all the Xs equal to that value where those are 8-bit pixels in a 2D array with a stride of FDEC_STRIDE. &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; What is FDEC_STRIDE? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; x264 does all its pixel operations on the current macroblock in a temporary buffer of constant stride. It&#039;s faster that way, and better on cache. So for example, motion compensation will write to this buffer (or intra prediction). &lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; What&#039;s a stride? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; Stride is the distance between (x,y) and (x,y+1), so to get from one row to the next.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Now that you understand what the function does, let&#039;s look at the asm. &lt;br /&gt;
&amp;lt;pre&amp;gt;cglobal predict_4x4_dc_mmxext, 1,4&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;quot;cglobal&amp;quot; declares a function accessible from outside of asm. The function&#039;s name is &amp;lt;tt&amp;gt;x264_predict_4x4_dc_mmxext&amp;lt;/tt&amp;gt; (the &amp;lt;tt&amp;gt;x264_&amp;lt;/tt&amp;gt; is auto-added). The &amp;quot;1&amp;quot; means &amp;quot;we have one argument. Put it in &amp;lt;tt&amp;gt;r0&amp;lt;/tt&amp;gt;.&amp;quot;, (that argument is uint8_t *src). If we had a second argument, we&#039;d say &amp;quot;2&amp;quot; and the second one would go in &amp;lt;tt&amp;gt;r1&amp;lt;/tt&amp;gt; and if we had a third, it&#039;d go in &amp;lt;tt&amp;gt;r2&amp;lt;/tt&amp;gt;, etc. So at the start of the function, &amp;lt;tt&amp;gt;r0&amp;lt;/tt&amp;gt; contains uint8_t *src. &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; &amp;quot;that argument is uint8_t *src&amp;quot;, what does this mean? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; See the comment above: &amp;lt;tt&amp;gt;void predict_4x4_dc( uint8_t *src )&amp;lt;/tt&amp;gt; &lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; What tells the function that it&#039;s uint8_t? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; Nothing. It doesn&#039;t need to know. Types are a C-ism.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;4&amp;quot; means we want x264 to give us 4 registers to use. &amp;lt;tt&amp;gt;r0&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;r1&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;r2&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;r3&amp;lt;/tt&amp;gt;. This, of course, includes the &amp;lt;tt&amp;gt;r0&amp;lt;/tt&amp;gt; used for the parameter. So in short, after the first line: &amp;lt;tt&amp;gt;r0&amp;lt;/tt&amp;gt; = src, &amp;lt;tt&amp;gt;r1&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;r2&amp;lt;/tt&amp;gt;/&amp;lt;tt&amp;gt;r3&amp;lt;/tt&amp;gt; = free, &amp;lt;tt&amp;gt;r4&amp;lt;/tt&amp;gt; and up: can&#039;t use. &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; That&#039;s x86inc.asm&#039;s doing right? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; Yes, but we aren&#039;t going into that. &lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; I assume it means we can use them, but if you do, it&#039;ll screw around with something you don&#039;t want to? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; Yes, which is why you can&#039;t use it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; So now, this function as you can see has 4 real steps: &lt;br /&gt;
&lt;br /&gt;
#Sum up A through D &lt;br /&gt;
#Sum up E through H &lt;br /&gt;
#Do the math to get our final value &lt;br /&gt;
#Store it into the 16 output Xs&lt;br /&gt;
&lt;br /&gt;
So let&#039;s see how this asm implements these. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; First, we&#039;ll look at step 1 &lt;br /&gt;
&amp;lt;pre&amp;gt;pxor mm7, mm7&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;tt&amp;gt;mm7&amp;lt;/tt&amp;gt; is a 64-bit register. &amp;lt;tt&amp;gt;xor&amp;lt;/tt&amp;gt;, as you might know, is a nice way to zero things. &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; How do you tell how large a register is? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; &amp;lt;tt&amp;gt;mm*&amp;lt;/tt&amp;gt; is 64-bit, &amp;lt;tt&amp;gt;xmm*&amp;lt;/tt&amp;gt; is 128-bit. The mm registers have a fixed size, only the general purpose registers are wordsize-dependant on x86&lt;br /&gt;
&lt;br /&gt;
So, now &amp;lt;tt&amp;gt;mm7&amp;lt;/tt&amp;gt; is zero.&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;movd mm0, [r0-FDEC_STRIDE]&amp;lt;/pre&amp;gt; &lt;br /&gt;
This sets &amp;lt;tt&amp;gt;mm0&amp;lt;/tt&amp;gt; equal to {A,B,C,D,0,0,0,0} &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; Oh, and how do we know the mm* registers are free? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; They always are.&lt;br /&gt;
&lt;br /&gt;
In x86, b = byte, w = word (16-bit), d = doubleword (32-bit), q = quadword (64-bit), dq = double quadword (128-bit). So &amp;lt;tt&amp;gt;movd&amp;lt;/tt&amp;gt; = move doubleword = move 32 bits. So &amp;lt;tt&amp;gt;movd&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;mm0&amp;lt;/tt&amp;gt; will load data to the first 4 bytes and zero the rest. Thus &amp;lt;tt&amp;gt;mm0&amp;lt;/tt&amp;gt; is now ABCD0000. &amp;lt;tt&amp;gt;[r0-FDEC_STRIDE]&amp;lt;/tt&amp;gt; is equivalent to &amp;lt;tt&amp;gt;*(src-FDEC_STRIDE)&amp;lt;/tt&amp;gt; in C-style. Hence why it points to ABCD. &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; Are the &amp;quot;A B C D&amp;quot; on top of the &amp;quot;X X X X&amp;quot; or do they start on top of the &amp;quot;E&amp;quot;? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; Former&lt;br /&gt;
&amp;lt;pre&amp;gt;psadbw mm0, mm7&amp;lt;/pre&amp;gt; &lt;br /&gt;
This is what &amp;lt;tt&amp;gt;psadbw&amp;lt;/tt&amp;gt; does: &lt;br /&gt;
&amp;lt;pre&amp;gt;uint16_t psadbw( uint8_t in[8], uint8_t out[8] )&lt;br /&gt;
{&lt;br /&gt;
    uint16_t sum = 0;&lt;br /&gt;
    for(int i = 0; i &amp;amp;lt; 8; i++)&lt;br /&gt;
        sum += abs(in[i]-out[i]);&lt;br /&gt;
    return sum;&lt;br /&gt;
}&amp;lt;/pre&amp;gt; &lt;br /&gt;
Parse that for a moment &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; where is the sum stored? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; &amp;lt;tt&amp;gt;psadbw X, Y&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt; is where the output is stored. So &amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt; is overwritten. So it&#039;s stored in the low 16 bits of &amp;lt;tt&amp;gt;X&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Now, of course, &amp;lt;tt&amp;gt;mm7&amp;lt;/tt&amp;gt; is zero! So we get abs(A-0) + abs(B-0) + abs(C-0) + abs(D-0) + abs(0-0) ... Or A+B+C+D. So after &amp;lt;tt&amp;gt;psadbw&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;mm0&amp;lt;/tt&amp;gt; is A+B+C+D and &amp;lt;tt&amp;gt;mm7&amp;lt;/tt&amp;gt; is still zero. &lt;br /&gt;
&amp;lt;pre&amp;gt;movd r3d, mm0&amp;lt;/pre&amp;gt; &lt;br /&gt;
Now, we move the result to &amp;lt;tt&amp;gt;r3d&amp;lt;/tt&amp;gt;, a general purpose register. &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; Is &amp;lt;tt&amp;gt;r3d&amp;lt;/tt&amp;gt; one of the things that come with the 4 registers that are free? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; This is an optimization: on 64-bit, using 32-bit versions of registers results in smaller instruction opcode sizes. So it&#039;s really just &amp;lt;tt&amp;gt;r3&amp;lt;/tt&amp;gt;. &amp;lt;tt&amp;gt;r0&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;r1&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;r2&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;r3&amp;lt;/tt&amp;gt; are the 4 that are free. So we&#039;re using &amp;lt;tt&amp;gt;r3&amp;lt;/tt&amp;gt;. Note: the suffix &#039;d&#039; means the 32-bit version, as opposed to the native-size version.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Get moving with part 2 of the algorithm. &lt;br /&gt;
&lt;br /&gt;
Now &amp;lt;tt&amp;gt;r0&amp;lt;/tt&amp;gt; has our source pointer, and &amp;lt;tt&amp;gt;r3&amp;lt;/tt&amp;gt; has A+B+C+D. While the CPU is busy doing that, we&#039;ll go and do part 2, the E+F+G+H. Unfortunately, these bytes aren&#039;t in a straight line (&amp;quot;straight line&amp;quot; meaning &amp;quot;adjacent in memory&amp;quot;). So we can&#039;t just load EFGH and sad them. We&#039;ll have to do it the naive/slow way. So, now we&#039;re going to load E, F, G, H. Now you might notice some preprocessor commands here. &amp;lt;tt&amp;gt;%assign&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;%rep&amp;lt;/tt&amp;gt;, etc are preprocessor commands. &lt;br /&gt;
&lt;br /&gt;
So, first step: load E into &amp;lt;tt&amp;gt;r1d&amp;lt;/tt&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;pre&amp;gt;movzx r1d, byte [r0-1]&amp;lt;/pre&amp;gt; &lt;br /&gt;
&amp;lt;tt&amp;gt;movzx&amp;lt;/tt&amp;gt; means &amp;quot;move, with zero extend&amp;quot;. In C this would be: int r1d = r0[-1]; &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; My C is a bit rusty, what does that do? does it just take the location in memory before r0[0]? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; Yes, [] is just a dereference of a pointer. *(r0-1) = r0[-1] = (r0-1)[0] &lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; what is r0-1 in that ascii matrix? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; E.&lt;br /&gt;
&lt;br /&gt;
So, here&#039;s what these 7 lines look like after the macro runs: &lt;br /&gt;
&amp;lt;pre&amp;gt;movzx  r1d, byte [r0-1]&lt;br /&gt;
movzx  r2d, byte [r0+FDEC_STRIDE*1-1]&lt;br /&gt;
add    r1d, r2d&lt;br /&gt;
movzx  r2d, byte [r0+FDEC_STRIDE*2-1]&lt;br /&gt;
add    r1d, r2d&lt;br /&gt;
movzx  r2d, byte [r0+FDEC_STRIDE*3-1]&lt;br /&gt;
add    r1d, r2d&amp;lt;/pre&amp;gt; &lt;br /&gt;
in order: load E, load F, add F to E, load G, add G to E, load H, add H to E &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; Where is n stored? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; It isn&#039;t. It&#039;s a preprocessor variable. &lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; Oh, so it&#039;s like a macro? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; It is a macro. Note the pre-processed code above. Everything starting with&amp;amp;nbsp;% in yasm syntax is a macro.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Ok, now we have to do step 3: calculating A+B+C+D+E+F+G+H+4 / 8 &lt;br /&gt;
&amp;lt;pre&amp;gt;lea r1d, [r1+r3+4]&amp;lt;/pre&amp;gt; &lt;br /&gt;
First, let&#039;s go over x86 addressing. What you can put inside the brackets is not infinite. Here&#039;s the capabilities, specifically: [REG1 + REG2 * {1,2,4,8} + CONST]. A register, plus another register * 1/2/4/8, plus a constant (positive or negative). As you might note, this is pretty useful for accessing things like arrays. E.g. array[n+5], where array is an int array, would be: [array + n*4 + 20] &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; I suppose the [r0+FDEC_STRIDE*n-1] bit gets simplified on assembly to [register + const]? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; Yes, yasm sums up constants for you.&lt;br /&gt;
&lt;br /&gt;
So, as you might note, that&#039;s a pretty powerful addressing system. That&#039;s more powerful than, say... &amp;quot;add&amp;quot;. So why not expose it in an instruction to let us use it for math? So Intel did. &amp;lt;tt&amp;gt;lea X, [expr]&amp;lt;/tt&amp;gt; sets X equal to the value of expr just as fast as add. So that &amp;lt;tt&amp;gt;lea&amp;lt;/tt&amp;gt; does r1d = r1 + r3 + 4 &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; Wait, how does that work? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; &amp;lt;tt&amp;gt;lea&amp;lt;/tt&amp;gt; runs the [REG1 + REG2 * {1,2,4,8} + CONST] math on its second argument and adds to the first. &amp;lt;tt&amp;gt;lea&amp;lt;/tt&amp;gt; doesn&#039;t actually address it. It just calculates the result and stores it instead of going to memory. &lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; And it&#039;s faster than add? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; It&#039;s just as fast except that you can do more with it.&lt;br /&gt;
&lt;br /&gt;
Now, technically, you can do more adds per cycle than &amp;lt;tt&amp;gt;lea&amp;lt;/tt&amp;gt;, so you shouldn&#039;t go replacing all your adds with &amp;lt;tt&amp;gt;lea&amp;lt;/tt&amp;gt;. But if you can use it to do more than one thing at a time, it&#039;s a big win. So this lets us add &amp;lt;tt&amp;gt;r3&amp;lt;/tt&amp;gt;, and add 4, in one op. &lt;br /&gt;
&amp;lt;pre&amp;gt;shr r1d, 3&amp;lt;/pre&amp;gt; &lt;br /&gt;
There&#039;s one that you can probably figure out yourself - shift right. &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; Why are we shifting right? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; +4 for correct rounding, &amp;amp;gt;&amp;amp;gt; 3 to divide (&amp;amp;gt;&amp;amp;gt;3 = /(2^3) = /8).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Now for the final part: storing the results. &lt;br /&gt;
&amp;lt;pre&amp;gt;imul r1d, 0x01010101&amp;lt;/pre&amp;gt; &lt;br /&gt;
This is called a &amp;quot;splat&amp;quot; and you may have seen it in C as well. We&#039;re turning an 8-bit value into 4x that value, e.g. A -&amp;amp;gt; AAAA &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; how does this work? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; A * 0x01010101 = A A A A&lt;br /&gt;
&lt;br /&gt;
So now we have a 32-bit register, &amp;lt;tt&amp;gt;r1d&amp;lt;/tt&amp;gt; with one copy of A in each 8-bit nibble of that register. Now we go ahead and store this 4 times and we&#039;re done. &lt;br /&gt;
&lt;br /&gt;
Finally, we RET: x264 will automatically clean up after us. &lt;br /&gt;
&lt;br /&gt;
== Example 2: pixel_sad  ==&lt;br /&gt;
&lt;br /&gt;
Ok, next. You may have noticed that &amp;lt;tt&amp;gt;psadbw&amp;lt;/tt&amp;gt; is awesome. It does like 8 things in one. Whereas abs() is typically 4 instructions on x86. &amp;lt;tt&amp;gt;psadbw&amp;lt;/tt&amp;gt; does 8 subtracts, 8 absolute values on those results and then adds them up. That&#039;s 8 + 32 + 7 = 47 instructions in one (at least, 47 equivalent). &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; why is abs() so slow? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; abs() isn&#039;t slow, there&#039;s just no instruction for it. The typical algorithm is:&lt;br /&gt;
&amp;lt;pre&amp;gt;int sign = x &amp;amp;gt;&amp;amp;gt; 31;&lt;br /&gt;
(x ^ sign) - sign;&amp;lt;/pre&amp;gt; &lt;br /&gt;
:This needs a mov on x86, so that&#039;s 4 instructions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; So &amp;lt;tt&amp;gt;psadbw&amp;lt;/tt&amp;gt; is pretty awesome. It&#039;s very awesome for doing what its name implies you should do with it, that is -- SADs -- sum of absolute differences. So let&#039;s open sad-a.asm and hop down to line 95 ([http://git.videolan.org/?p=x264.git;a=blob;f=common/x86/sad-a.asm;h=0a96837aaa4c54f624b63c020872b74a790f1ffd;hb=HEAD#l95 git link]). Also open common/pixel.c and look at the first function: SAD ([http://git.videolan.org/?p=x264.git;a=blob;f=common/pixel.c;h=7fa497c7cf151df5795bb105895760fde89facb6;hb=HEAD#l44 git link]). This function is pretty simple. You should be able to see how it works. Look only at the C for now. &lt;br /&gt;
&lt;br /&gt;
So as you&#039;ll notice, the C SAD has 7 different versions for 16x16, 16x8, 8x16, etc and it&#039;s instantiated via a macro. So, for our asm, we also need 7 versions and we also don&#039;t want to write the function 7 times, just like in the case of C we didn&#039;t. &lt;br /&gt;
&lt;br /&gt;
So in the asm, we define a macro: &amp;lt;tt&amp;gt;%macro SAD 2&amp;lt;/tt&amp;gt; that means this macro has two parameters. They are accessed as&amp;amp;nbsp;%1 and&amp;amp;nbsp;%2. We call the macro 7 times, one for each size. The function takes 4 args (as you&#039;d expect) and needs 4 regs (just the args) &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; Is SAD_INC_2x%1P another macro? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; Yes, it&#039;s one of three macros, look above, each one does 2 rows worth of SAD for width 4, width 8, and width 16. It picks the right one based on the width and it&amp;amp;nbsp;%reps it based on the height.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Now, start analyzing the 3 macros above (the sad macros) and trying to figure out how they work. Note mm0 is the accumulator which is why it&#039;s zeroed at the start. &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; The order of args is the same as in the C function? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; Yes &lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; What does punpckldq do? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; Good question! punpck is a set of instructions that interleave their arguments in some fashion.&lt;br /&gt;
&lt;br /&gt;
To start with, it can be l or h, low or high. So punpckl__ ABCD, EFGH will use AB and EF. And punpbkh__ ABCD, EFGH will use CD and GH. &lt;br /&gt;
&lt;br /&gt;
The next two letters are the source size, and destination size. For example, &amp;lt;tt&amp;gt;punpcklbw&amp;lt;/tt&amp;gt; interleaves bytes, to create words. So &amp;lt;tt&amp;gt;punpcklbw ABCD, EFGH&amp;lt;/tt&amp;gt; gives you AEBF (if the letters are bytes). So &amp;lt;tt&amp;gt;punpckldq ABCDEFGH, IJKLMNOP&amp;lt;/tt&amp;gt; gives us ABCDIJKL. So in other words, it stuffs the two sets of 4 bytes we just loaded into one register &lt;br /&gt;
&lt;br /&gt;
So we can do only one SAD, instead of two. &amp;lt;tt&amp;gt;punpckldq ABCD0000, EFGH0000&amp;lt;/tt&amp;gt; results in ABCDEFGH. So it effectively concatenates mm1 and mm2 for us. If we didn&#039;t do this, we&#039;d have to do twice as many sads and adds. We do this because the registers are width 8, but our sad is width 4. So we need to stuff sad information side by side to fill the whole reg. &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; Why are we punpckldq&#039;ing the [r0+r1] and not [r0]? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; We&#039;re concatenating row 0 and row 1 of each input. &lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt;&amp;lt;tt&amp;gt;lea r0, [r0+2*r1]&amp;lt;/tt&amp;gt; Why are we doing this step? Doesn&#039;t it move r0 over 2*r1? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; We&#039;re incrementing the pointer by 2*stride&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Now you should understand what SAD_INC_2x4P does, the others work similarly except without the punpck magic because they don&#039;t need it. &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; Why is the lea out of order in SAD_INC_2x8P? By out of order i mean not next to each other. &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; No particular reason. &lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; So we rep the SAD for however many times so the 2x%1 is completed? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; Yes, so if it&#039;s height 8, we rep it 4 times &lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; Why are strides not hardcoded btw? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; SAD can be called on a reference frame thus variable stride &lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; I don&#039;t really get it... &lt;br /&gt;
:A&amp;amp;lt;&amp;amp;gt; It&#039;s called on frames, as opposed to some temporary block of memory.&lt;br /&gt;
&lt;br /&gt;
Now, for the kicker: the 16x16 SAD function declared here is 15 times faster than C. &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; What? Why is it so much faster? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; psadbw&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; Now let&#039;s get a bit to how we measure performance. For any asm instruction, there are three things that matter: latency, inverse throughput, and execution units. The first two are represented with notation like this: &amp;quot;3/1&amp;quot;. This means a psadbw takes 3 clocks to finish from when it&#039;s started and you can do one of them per cycle. Another example is &amp;lt;tt&amp;gt;mov&amp;lt;/tt&amp;gt;. Between two registers it is 1/0.33, takes 1 cycle, and you can do 3 per clock. &lt;br /&gt;
&lt;br /&gt;
Execution unit usage is a bit trickier. Not all execution units can do all instructions. Intel chips have 6 execution units: p0, p1, p2, p3, p4, p5 &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; Wait, what is latency? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; time from start to finish, in clocks &lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; and inverse throughput and execution units? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; Inverse throughput is how many you can do per clock. Execution units are the things in the chip that do stuff.&lt;br /&gt;
&lt;br /&gt;
Of these 6 execution units, three can do math: p0, p1, p5. &amp;lt;tt&amp;gt;psadbw&amp;lt;/tt&amp;gt;, for example, can only use one of these (p1), &amp;lt;tt&amp;gt;pxor&amp;lt;/tt&amp;gt; can use all three. &lt;br /&gt;
&lt;br /&gt;
Generally execution units aren&#039;t important until you get into serious optimizing but they can often affect the best instruction choices. For example, if an execution unit is sitting around doing nothing for a whole function. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; The instruction tables sheet here http://agner.org/optimize/ has all the information on latency, execution units, and inverse throughput for a wide variety of CPUs. &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; How about branching? I heard branching ruins things. &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; Not generally unless it&#039;s unpredictable, branch mispredictions are the cause. We can get to a case of that later.&lt;br /&gt;
&lt;br /&gt;
Now, let&#039;s just analyze SAD. Suppose we want to analyze the 8x8 SAD. In this function we do: 8 SADs, 8 adds (accumulates), 16 loads, plus the start, end, and calling overhead. 8 SADs: takes 8 cycles (inverse throughput of 1). 8 adds: takes 8 cycles (inverse throughput of 1), and can run at the same time as SADs. 16 loads: takes 16 cycles, and can run at the same time as the above. &lt;br /&gt;
&lt;br /&gt;
So the loads are the bottleneck. This is an important thing to understand: it&#039;s possible for one type of operation to bottleneck a function. Loads are a common example. In this case, SAD is *so fast* that it is effectively free, as we&#039;re sitting around waiting for loads the whole time. The actual run-time of the function is about 22 clocks. Which is fitting for 16 + start + end + overhead. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; So that&#039;s some basic performance analysis for you. How long the function should take in theory, how long each instruction takes in theory, and how you can be bottlenecked. &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; Is there anything that does this automatically for you? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; Analysis? not really. There are Intel performance counters and such on the chip but they&#039;re not magic. It might be useful to have some kind of tool to analyze asm functions. In general though, intuition is a powerful tool.&lt;br /&gt;
&lt;br /&gt;
== Example 3: pixel_avg2_w16_sse2  ==&lt;br /&gt;
&lt;br /&gt;
Let&#039;s move onto something else. Open common/x86/mc-a.asm, pixel_avg2_w16_sse2 ([http://git.videolan.org/?p=x264.git;a=blob;f=common/x86/mc-a.asm;h=22fb8720c83b72bcd34b41553f4153bb62847462;hb=HEAD#l842 git link]). This function interpolates between two inputs, and outputs to an output. The interpolation is the simplest possible: (A+B+1)&amp;amp;gt;&amp;amp;gt;1 &lt;br /&gt;
&lt;br /&gt;
Look at the function signature above: &amp;lt;tt&amp;gt;void pixel_avg2_w4( uint8_t *dst, int dst_stride&amp;lt;/tt&amp;gt; etc. This function takes inputs from src1 and src2, averages them together, and writes to dst. src1 and src2 have src_stride and dst has dst_stride. &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; What&#039;s the height? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; How many lines to interpolate.&lt;br /&gt;
&lt;br /&gt;
Now this function uses xmm registers (128-bit) so it does 16 bytes at a time. All 128-bit loads must be aligned unless movdqu is used. Since our inputs are unaligned, this is a lot of movdqu. &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; What does movdqu do? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; Loads 128 bits from an unaligned source. &lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; What is the difference between movdqa and movdqu? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; movdqa is for aligned data, movdqu is for unaligned data. The output is always aligned, as we control it, whereas the input is an arbitrary pointer into a reference frame and so it could be anything. &lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; Why subtract r2 from r4? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; Ah, now here&#039;s a fun trick. We need to increment three pointers, right? src1, src2, dst. But src1 and src2 have the same stride, so they&#039;re being incremented by the same amount. So we can take src2 and represent it as an offset from src1. Then we only have to increment src1. One lea removed per iteration, bam. &lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; And use r6 as the offset + stride? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; Yes&lt;br /&gt;
&lt;br /&gt;
Look through that function and see if there&#039;s anything you don&#039;t know about and ask questions. &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; How do you keep track of which argument is which? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; You can copy the description from w4 and annotate it.&lt;br /&gt;
&amp;lt;pre&amp;gt;; void pixel_avg2_w4( uint8_t *dst (r0), int dst_stride (r1),&lt;br /&gt;
;                     uint8_t *src1 (r2), int src_stride (r3),&lt;br /&gt;
;                     uint8_t *src2 (r4), int height (r5) );&amp;lt;/pre&amp;gt; &lt;br /&gt;
:There is also a system that can be covered later which helps you keep track of registers or, well, makes it easier to. &lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; pavgb, I assume, does some sort of averaging? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; Yes, (A+B+1)&amp;amp;gt;&amp;amp;gt;1 for each pair of input pixels.&lt;br /&gt;
&lt;br /&gt;
Now we come to one of the many jumps that exists in x86, jump if greater than, so if r5d &amp;amp;gt; 0. &lt;br /&gt;
&lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; How does the jump work without a compare instruction? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; The sub sets the same flags as a cmp. &lt;br /&gt;
:&amp;amp;lt;Q&amp;amp;gt; So why subtract two? &lt;br /&gt;
:&amp;amp;lt;A&amp;amp;gt; It handles two rows at a time.&lt;br /&gt;
&lt;br /&gt;
Here is something to note. The REP_RET you might have been wondering about. In short, if you have a RET after a jump, use REP_RET. Blame AMD.&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_TODO&amp;diff=18933</id>
		<title>X264 TODO</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_TODO&amp;diff=18933"/>
		<updated>2011-03-28T07:31:47Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: /* x86 assembly */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains an incomplete list of things available in x264 for you to do.  It&#039;s organized into sections covering various parts of x264.&lt;br /&gt;
&lt;br /&gt;
Some useful resources: [http://www.x264.nl/developers/Dark_Shikari/?dir=./src Dark Shikari&#039;s pile of junk], [http://akuvian.org/src/x264/ Pengvado&#039;s pile of junk].&lt;br /&gt;
&lt;br /&gt;
If you&#039;re interested in doing any of this, drop by #x264dev on Freenode IRC.  There are no experience or educational requirements for doing any of this, though you are expected to know how to code.&lt;br /&gt;
&lt;br /&gt;
Bolded features may have companies willing to sponsor or provide bounties.  This is not complete either; just because it&#039;s not bolded doesn&#039;t mean there aren&#039;t resources out there.  If your company is interested in offering a bounty, drop by IRC.&lt;br /&gt;
&lt;br /&gt;
===Motion Estimation===&lt;br /&gt;
* Sequential elimination (SEA), used for exhaustive search, might be more generally applicable to algorithms like UMH, by letting us skip a lot of SADs.  The downside is we won&#039;t be able to use SAD_X4 anymore.&lt;br /&gt;
* (T)ESA is currently wrong for motion searches done on weightp duplicates.  This effect is miniscule, but it still should be fixed.&lt;br /&gt;
* Hierarchical motion estimation might be a useful way to catch very long motion vectors without the cost of UMH or ESA.  It might also help regularize motion.&lt;br /&gt;
* Somehow take into account the effect of motion vector decision on future blocks.&lt;br /&gt;
** Hierarchical motion estimation&lt;br /&gt;
** Approximations from lookahead MVs&lt;br /&gt;
** Iterative ME (as per Snow)&lt;br /&gt;
** Trellis motion estimation&lt;br /&gt;
* We don&#039;t need to check all 11 predictors all the time for 16x16 fullpel motion search.&lt;br /&gt;
** But how do we know which ones we can afford to skip, and when?&lt;br /&gt;
** Xvid and libtheora have algorithms for this, but the former&#039;s is almost surely 100% useless and the latter doesn&#039;t seem impressive either.&lt;br /&gt;
* libtheora does fullpel motion estimation on the source pixels instead of decoded pixels.  Does this give a better starting point for the subpel search and discourage &amp;quot;weird&amp;quot; MVs?&lt;br /&gt;
* With extremely fast encoding settings (subme 0), can we rip off lookahead MVs instead of doing a real search?&lt;br /&gt;
* Try sub-8x8 partitions in B-frames.  Is it at all useful?&lt;br /&gt;
* Try bidir motion estimation for fullpel.  That is, considering L1&#039;s MV when doing L0 (or vice versa).  Xvid does this.  How much does it help?&lt;br /&gt;
* Fullpel chroma ME?&lt;br /&gt;
** For TESA?&lt;br /&gt;
&lt;br /&gt;
===Intra Analysis===&lt;br /&gt;
* Make the early terminations smarter.  Currently they&#039;re just hacks -- some statistical analysis might be useful.&lt;br /&gt;
* SAD (subme 1) i8x8 vs i4x4 decision is a bit bad.  Can it be improved without significant speed loss?&lt;br /&gt;
&lt;br /&gt;
===Mode Decision===&lt;br /&gt;
* Can we find more ways to skip more motion searches in multiref?&lt;br /&gt;
* On extremely fast encoding settings, fast skip is actually kind of slow.  But anything dumber (e.g. SAD) is completely useless.  Is there some better balance that can be achieved here?&lt;br /&gt;
* See the TODOs for deblock-aware RD in common/deblock.c.&lt;br /&gt;
* Is there a faster way than SA8D/SATD to do 8x8dct vs 4x4dct mode decision?  At very fast settings, the time this uses is nontrivial.&lt;br /&gt;
* Is there a faster way than RD to do 8x8dct vs 4x4dct mode decision that&#039;s still better than SATD?  RD takes over an order of magnitude more time than SATD, so it might be useful to have something in the middle.&lt;br /&gt;
* Is there some value to swapping the mode decision metric from SATD to SA8D if we think that the macroblock will use 8x8dct?  [http://akuvian.org/src/x264/x264_dct8_guess.diff This has been tried before], but only helped if our guess was extremely good (better than we could get in reality).&lt;br /&gt;
* With trellis 2, can we skip most of CABAC and CAVLC bit cost calculation?&lt;br /&gt;
* How about a &amp;quot;brute force&amp;quot; mode decision that takes no shortcuts (no early ref termination in p8x8, no SATD thresholds, etc)?&lt;br /&gt;
&lt;br /&gt;
===Psy===&lt;br /&gt;
* Psy-RD is a hack.  It works, but it&#039;s a hack.  If you apply QNS with Psy-RD as the metric, it goes way overboard and gives terrible results.  This means that Psy-RD only works because normal mode decision is limited in the way it can modify the image to better suit the metric.  Is there a way to make it better?&lt;br /&gt;
* Should RD be linear at all?  Perhaps we should weight more heavily against low quality blocks and also try to ignore minuscule distortion that viewers can&#039;t see.&lt;br /&gt;
* Psy-trellis (and maybe psy-RD?) are too strong at very high QPs.&lt;br /&gt;
* Psy-trellis should be merged with Psy-RD.  There are patches for this, but they probably won&#039;t be committed until psy-RD itself is fixed.&lt;br /&gt;
* RD should take into account local variance.&lt;br /&gt;
* Lambda should be varied on a per-DCT-block basis instead of a per-macroblock basis.&lt;br /&gt;
* Lambda should be picked independent of quantizer (i.e. with greater precision).&lt;br /&gt;
* Classic problem: a block is mostly high complexity but has a small area of low complexity.  How do we judge whether that area is important?  Good example: sharp text on background with film grain; grain gets blurred out because of the text.&lt;br /&gt;
** If we think it&#039;s important all the time, we ruin the quality of many clips that rely on raising complexity on edges (Touhou).&lt;br /&gt;
* Should motion estimation lambda be as high as it is at very high quantizers?  There&#039;s some value to capturing &amp;quot;true motion&amp;quot;...&lt;br /&gt;
* Macroblock tree correlates pretty well with visual perception in that its concept of a &amp;quot;high complexity&amp;quot; matches well with the visual concept.  Except for local illumination changes.  Talk to Dark Shikari for a patch.&lt;br /&gt;
&lt;br /&gt;
===Lookahead===&lt;br /&gt;
* &#039;&#039;&#039;Lookahead should be multithreaded, either by splitting the frame (sliced threads) or running multiple frame analysis calls at once.&#039;&#039;&#039;&lt;br /&gt;
* Temporal MV predictors in lookahead?  There&#039;s a patch for these somewhere, but they biased heavily in favor of B-frames, likely by improving the motion search.&lt;br /&gt;
* Should lookahead use variable lambda based on quantizer (esp. due to adaptive quant)?  If so, should it take into account estimated ratecontrol quantizer, too?  If so, how?&lt;br /&gt;
&lt;br /&gt;
===Quantization===&lt;br /&gt;
* CAVLC &amp;quot;trellis&amp;quot; is a hack.  It works, but it&#039;s a hack.  Make it better.  See the TODOs in encoder/rdo.c.&lt;br /&gt;
* There&#039;s room for something between trellis and deadzone in terms of complexity.  libvpx has a good example -- it biases towards zero-runs in its &amp;quot;medium speed&amp;quot; quantizer.  This can&#039;t be SIMD&#039;d easily, but is still vastly faster than trellis.  A nonlinear quantizer (be more likely to round up larger coefficients) might also be useful.&lt;br /&gt;
* Floyd-Steinberg for quantization?  Try pushing quantization error to nearby DCT coefficients.  Should this go from high to low or low to high?&lt;br /&gt;
* Energy-preserving quantizer -- maintain L1 (or maybe L2?  I&#039;m not sure) energy.  Should we maintain it in the spatial domain (post-iDCT) or residual domain?  Probably the former.&lt;br /&gt;
* Decimation is currently just a ripoff of the JVT recommended algorithm.  Can we do this more optimally?  With RD?&lt;br /&gt;
&lt;br /&gt;
===Transform===&lt;br /&gt;
* Analyze the error characteristics of the fDCT.  Is there any way to make it more accurate without much speed loss?  Particularly at extremely low quantizers, this might help.&lt;br /&gt;
* Before forward transform, run a &amp;quot;blocking filter&amp;quot; that acts as the approximate inverse of the deblock filter.  See [http://akuvian.org/src/x264/Shwang_loopfilter_thesis.pdf this paper].&lt;br /&gt;
&lt;br /&gt;
===Interlacing===&lt;br /&gt;
* &#039;&#039;&#039;Finish adaptive MBAFF.  Talk to horlicks about this one.&#039;&#039;&#039;&lt;br /&gt;
* Make slice-max-mbs/slice-max-size work with interlacing.  Pretty much requires a good portion of adaptive MBAFF.&lt;br /&gt;
* Lookahead currently blend-deinterlaces to get the lowres.  Is this a good idea?  Is there something better that isn&#039;t much slower?&lt;br /&gt;
* Constrained intra + adaptive MBAFF.  Does anyone care about this?&lt;br /&gt;
* PAFF + MBAFF adaptive - PAFF performs better than Adaptive MBAFF on high motion scenes because it can predict from the previous field.&lt;br /&gt;
&lt;br /&gt;
===Weighted Prediction===&lt;br /&gt;
* &#039;&#039;&#039;Make weightp work with interlacing.  Preferably abuse reference duplication to make it useful for MBAFF.&#039;&#039;&#039;&lt;br /&gt;
* Finish K-means decision for weightp.  Talk to DylanZA about getting his current patch for this one.&lt;br /&gt;
* Add explicit weighting for B-frames, too.  This helps in nonlinear fades, among other cases.&lt;br /&gt;
&lt;br /&gt;
===Ratecontrol===&lt;br /&gt;
* VBV might be able to utilize the ability to re-encode a row of the frame for improved accuracy.&lt;br /&gt;
** Maybe re-encode everything in case of an underflow that row-reencoding can&#039;t fix?  This might be better than underflowing.&lt;br /&gt;
* Current per-frame VBV is a hack.  It only adapts per row and is O(N^2), where N is the number of rows.  An O(N) solution would be able to react more often and thus be more accurate.&lt;br /&gt;
* Make the frame size and row size predictors better.  They currently are kind of crappy.&lt;br /&gt;
* Ratecontrol code as a whole is a bit of a mess.  It could be improved.  There&#039;s a lot of cruft left over that is probably not needed now, like qblur.&lt;br /&gt;
* 2-pass VBV is actually more likely to underflow than 1-pass because it doesn&#039;t adapt as aggressively and trusts first pass data a lot.  This trust is often misplaced if the first pass was a fast one.  This should be improved.&lt;br /&gt;
* 2-pass macroblock-tree: if we added the ability to do macroblock-tree on real encoded data, we&#039;d get better results (particularly with repeating patterns and multiref, such as an anime character&#039;s mouth moving).&lt;br /&gt;
* Macroblock-tree: make it more psy-aware.  Maybe we should cap how much it lowers the quantizer on extremely static scenes?  This might tie into the &amp;quot;just-noticeable error&amp;quot; issue in RD.&lt;br /&gt;
&lt;br /&gt;
===GPU===&lt;br /&gt;
* Motion estimation?&lt;br /&gt;
** Methods&lt;br /&gt;
*** Hierarchical?&lt;br /&gt;
*** 2D Wave?&lt;br /&gt;
*** Something else?&lt;br /&gt;
** &amp;quot;Easy&amp;quot;: lookahead motion estimation&lt;br /&gt;
*** Extremely high parallelism, hundreds of frame searches (each with thousands of searches) at once.&lt;br /&gt;
** &amp;quot;Hard&amp;quot;: main motion estimation&lt;br /&gt;
*** Difficult synchronization issues, not as heavily parallel in terms of number of macroblocks, but far more partition sizes and refs to search.&lt;br /&gt;
*** But potentially more useful...&lt;br /&gt;
* Other things?&lt;br /&gt;
&lt;br /&gt;
===x86 assembly===&lt;br /&gt;
* Optimize more for the Phenom.&lt;br /&gt;
* Optimize for Sandy Bridge.&lt;br /&gt;
* Work more on 10-bit asm.&lt;br /&gt;
* If you read this, join #x264dev on irc://irc.freenode.net and ping holger to commit his local patches.&lt;br /&gt;
* Make a merged SA8D/SATD for the 8x8dct mode decision, since the two share most of their calculation.  Hadamard_ac already does this, but slightly differently.&lt;br /&gt;
&lt;br /&gt;
===Other assembly===&lt;br /&gt;
* NEON assembly is nowhere near complete.&lt;br /&gt;
** Chroma MC needs to be rewritten for NV12 support.&lt;br /&gt;
* Altivec assembly is very lacking.&lt;br /&gt;
* SPARC VIS assembly is only available when high bit-depth is disabled.&lt;br /&gt;
&lt;br /&gt;
===Other CPU optimizations===&lt;br /&gt;
* x264 needs more prefetching.  How many L1 and L2 cache misses (particularly L1) can we get rid of via smart prefetching in the right places?  Warning: this is often hard to benchmark.&lt;br /&gt;
* Different CPUs take different relative times for some functions.  Is this enough (particularly across architectures) to justify different encoding settings for different CPUs?&lt;br /&gt;
&lt;br /&gt;
===Other features===&lt;br /&gt;
* MPEG-2 encoding support&lt;br /&gt;
* VP8 encoding support&lt;br /&gt;
* &#039;&#039;&#039;4:2:2 and 4:4:4 colorspace support&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;RGB?&#039;&#039;&#039;&lt;br /&gt;
* Support for timecodes&lt;br /&gt;
* Merge speedcontrol&lt;br /&gt;
* Mixed lossless/lossy encoding.&lt;br /&gt;
&lt;br /&gt;
===x264CLI===&lt;br /&gt;
* Finish audio support.  Talk to Kovensky about this one.&lt;br /&gt;
* Make the filtering system aware of fullrange vs TV range.&lt;br /&gt;
* Make the filtering system aware of BT.601 vs BT.709.&lt;br /&gt;
* Add more filters.&lt;br /&gt;
** Deinterlacers (YADIF).&lt;br /&gt;
** Denoisers (HQDN3D?).&lt;br /&gt;
** IVTC, decomb?&lt;br /&gt;
* Merge L-SMASH mp4 muxer.&lt;br /&gt;
* Add TS muxing support using HRD.  Talk to kierank about this one.&lt;br /&gt;
* Add --device support.&lt;br /&gt;
* Add automatic --level restriction support.&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18725</id>
		<title>X264 Development Newsletters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18725"/>
		<updated>2011-02-19T07:21:34Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an archive of the x264 Development Newsletters. &lt;br /&gt;
&lt;br /&gt;
== Volume 1  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/18/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
From now on, with each weekly-ish push of new patches, I&#039;ll try to post a newsletter as well to give an update of what&#039;s going on and the changes. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
Different versions of 64-bit MinGW gcc were inconsistent with regards to whether or not to add a _ prefix to called functions. This broke compilation because the assembly code wouldn&#039;t link in correctly. &lt;br /&gt;
&lt;br /&gt;
Intra refresh got a lot of fixes thanks to bug reports by Chris Brien &amp;amp;lt;chris.brien@tandberg.com&amp;amp;gt;. Because x264 uses column refresh instead of row refresh, it has to be more careful with regards to which pixels it can predict from. This should fix some cases where intra refresh didn&#039;t refresh the whole frame correctly. Furthermore, it turns out that the recovery_frame_cnt syntax element, signaling the length of the intra refresh, is limited by the max frame number. Accordingly, x264 will raise the max frame number to ensure that recovery_frame_cnt is in spec. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
I&#039;ve gone through the file headers and updated them to be more accurate and consistent in terms of dates and authorship. It now also mentions the commercial license, on request from a licensee. &lt;br /&gt;
&lt;br /&gt;
The new --disable-gpl configure option is now added for companies using the commercial license. x264 --version will print both the license information of itself and of the linked libavformat (for decoding). It&#039;ll also warn you if the combination you&#039;ve put together isn&#039;t distributable, such as a nonfree ffmpeg + GPL x264, or a GPL ffmpeg + non-GPL x264. &lt;br /&gt;
&lt;br /&gt;
x264 now passes the &amp;quot;full chroma input&amp;quot; flag to swscale. This should fix this quality issue when using point scaling: http://doom10.org/index.php?topic=585.0 . &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
Kieran Kunhya &amp;amp;lt;kieran@kunhya.com&amp;amp;gt; has finally committed his arbitrary SEI patch, which lets calling apps give x264 any SEI they want to include in the stream. This is useful for closed-captioning, frame packing, and all kinds of other SEIs that x264 doesn&#039;t explicitly support but which the calling application can create itself if necessary. The advantage of giving these to x264 instead of just inserting them separately is that it allows the resulting stream to remain HRD-compliant, since x264 knows they exist. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit-depth input and filtering! x264 supports 10-bit encoding, but currently only takes 8-bit input. This change will finally create a stable API for high bit-depth input and allow users to filter in higher precision. It will also add dithering support to x264CLI for downconversion of high-bit-depth material. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Chroma ME in B-frames will be coming soon, giving an extra bit of compression to those using slower presets. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
After high bit-depth input is complete, a large amount of assembly code will be committed as well, improving high bit-depth encoding performance greatly. &lt;br /&gt;
&lt;br /&gt;
Ubuntu Maverick will include an updated x264, r1653. &lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-September/007808.html Volume 2]  ==&lt;br /&gt;
&#039;&#039;9/27/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
libx264 should now give correct DTS and print the correct bitrate if the input PTS do not start at zero. This doesn&#039;t affect x264CLI, but does affect calling apps that don&#039;t start their PTS at zero. &lt;br /&gt;
&lt;br /&gt;
libx264 ratecontrol should now work correctly in CFR mode with timebase&amp;amp;nbsp;!= 1/fps. As documented, x264 was supposed to ignore the timebase if CFR mode is set (for purposes of ratecontrol), but that&#039;s not what actually happened; things just broke. This should now be fixed. This is necessary for correct behavior with tune=zerolatency in gstreamer. &lt;br /&gt;
&lt;br /&gt;
A missing emms has been added to dump-yuv, fixing some Heisenbug brokenness when dump-yuv was used. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
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&#039;s extra byte, CAVLC&#039;s skip runs). The primary problem, however, was caused by the terrible design of H.264&#039;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. &lt;br /&gt;
&lt;br /&gt;
Chroma mode decision and subpel, mentioned in the last newsletter, is finally in. It&#039;s enabled at subme &amp;amp;gt;= 9 and provides a ~0.4-1% compression improvement. &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
High-bit-depth support has been finished in libx264 and x264cli. The assembly code is still yet to be committed, so it&#039;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&#039;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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-October/007858.html Volume 3]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;10/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the third x264 development newsletter. If you missed the first two, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The sigint handler in x264cli is now volatile, like it should have been. This likely didn&#039;t actually affect anything on any real system, but it&#039;s more correct. &lt;br /&gt;
&lt;br /&gt;
-DNDEBUG broke the filtering system. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
The bugfix from last week regarding intra refresh predicting from topright blocks didn&#039;t work with 8x8dct. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
2-pass ratecontrol now works with CBR HRD. Previously, it ignored filler bits, and thus broke horribly. In general, you don&#039;t need 2-pass for CBR (and it probably doesn&#039;t help), but it should work better now. &lt;br /&gt;
&lt;br /&gt;
A missing mod4-stack check was added; this should fix ICC builds on Phenom CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
The build tree has been cleaned a bit. A bunch of old stuff, like the non-working regression test and doxy, have been removed. &lt;br /&gt;
&lt;br /&gt;
Some of the information in doc/ has been updated to be less absurdly out of date, or at least inform the reader that it is absurdly out of date. &lt;br /&gt;
&lt;br /&gt;
DTS compression has been moved out of the libx264 API and into the muxers, because it&#039;s a giant hack and it was making things ugly and messy (and starting to interfere with ratecontrol). &lt;br /&gt;
&lt;br /&gt;
Various asm functions have been improved, particularly the qpel MC functions. Should help performance a bit on Core 2 and similar CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007920.html Volume 4]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fourth x264 development newsletter. If you missed the first three, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The Altivec SATD gave wrong results with very small strides (e.g. 8). This made output on PPC slightly different from x86, due to different results in lookahead and chroma ME. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
FPS reporting on Windows 64-bit was very imprecise (the timers were only accurate to 1 second). This was due to _ftime using the wrong struct due to the Windows ABI&#039;s complete retardation. This has been fixed by using ftime instead. &lt;br /&gt;
&lt;br /&gt;
ssd_nv12 has been improved to eliminate overflow at high bit depths (this would, in theory, give wrong PSNR). &lt;br /&gt;
&lt;br /&gt;
SATD/SA8D/Hadamard_ac have been improved to eliminate overflow at high bit depths (this would cause wrong analysis results). &lt;br /&gt;
&lt;br /&gt;
Three ratecontrol bugs have been fixed: &lt;br /&gt;
&lt;br /&gt;
#B-frame size prediction has been fixed (it used quantizer instead of linearized qscale). This should improve VBV.&lt;br /&gt;
#Overflow compensation, originally designed for 1-pass ABR, has been disabled with CRF on, as it doesn&#039;t do anything useful with pure CRF and causes very bizarre results with CRF+VBV in areas of extremely high complexity. &lt;br /&gt;
#A bug in the way that clip_qscale caps the amount by which a frame can be higher quality than a previous frame (as a result of attempting to use up extra bits that would otherwise be wasted) has been fixed. This caused CBR to take extremely long times (e.g. seconds) to recover from extreme changes in complexity at low bitrates.&lt;br /&gt;
&lt;br /&gt;
A possible linking problem with lavf has been fixed. &lt;br /&gt;
&lt;br /&gt;
Some MV/ref prefetching code was in the wrong place. Fixing this may result in a tiny performance improvement.&lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
doc/threads.txt has been updated with modern benchmarks. This information may be useful to anyone looking to compare the impact of various threading strategies on quality and performance, as well as get an idea of how well x264 scales over multiple cores at various encoding speeds. &lt;br /&gt;
&lt;br /&gt;
The presets are now addressable numerically (0=ultrafast...9=placebo).&amp;lt;br&amp;gt;&lt;br /&gt;
The exact mappings may change in the future if new presets are added or old presets removed, but they will always be in linear order of fast to slow. &lt;br /&gt;
&lt;br /&gt;
The ffmpeg -vpre error message (if a user doesn&#039;t use a -vpre) has been made more descriptive, to better instruct users about how the ffmpeg -vpre system works. &lt;br /&gt;
&lt;br /&gt;
weightp -1 offset dupes are now disabled in high bit depth mode, as they&#039;re a hack to get around crappy rounding in 8-bit encoding, and thus don&#039;t help in high bit depth. &lt;br /&gt;
&lt;br /&gt;
PSNR and SSIM measurements are now VFR-aware! This means they will take into account the duration of frames. This may result in PSNR and SSIM results appearing dramatically different from other tools when used on variable framerate video. Don&#039;t fret; x264 is correct, they are not. Of course, results will stay the same for constant framerate video. This is the first step to VFR-aware MB-tree. &lt;br /&gt;
&lt;br /&gt;
Quantizer handling has been improved.&amp;lt;br&amp;gt;&lt;br /&gt;
Library change: i_qpplus1 now defaults to X264_QP_AUTO. This doesn&#039;t actually change anything, as X264_QP_AUTO is 0, but this may change in the future. As a reminder, all x264_picture_t structs must be initialized using x264_picture_init or x264_picture_alloc!&amp;lt;br&amp;gt;&lt;br /&gt;
CRF values now make sense in high bit depth: --crf 23 means roughly the same quality in 8-bit or 10-bit, instead of being 4 times higher quality in 10-bit than in 8-bit.&amp;lt;br&amp;gt;&lt;br /&gt;
This means that --qp 0 should be used for lossless, not --crf 0. The latter will not result in lossless compression when in high bit depth mode.&amp;lt;br&amp;gt;&lt;br /&gt;
Bit depth has been added to statsfiles, to prevent users from inadvertently using a statsfile with the wrong bit depth. &lt;br /&gt;
&lt;br /&gt;
Scenecut&#039;s flash detection has been improved to work more sanely in the case of flashes at the end of the videos.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is nearly ready. Speed boost has been measured as about 4.3x and is still improving. &lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is critical for some broadcast applications. Unlike most competing encoders, this VBV Emergency Mode does not drop frames or force all blocks to skip or some similarly extreme step: it adds a &amp;quot;denoising&amp;quot; step to reduce the complexity of the video, which scales upwards until it simply removes all content at the most extreme level. &lt;br /&gt;
&lt;br /&gt;
A pad filter is nearly ready for the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding mostly finished. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007950.html Volume 5]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/19/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fifth x264 development newsletter. If you missed the first four, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
HRD now works correctly when used with intra refresh. Thanks to a certain x264 commercial licensee for the bug report. &lt;br /&gt;
&lt;br /&gt;
QPfile parsing now works as it was supposed to have worked last time: users should be able to omit QP values. &lt;br /&gt;
&lt;br /&gt;
Allocate the correct amount of memory for weightp buffers with weightp + high bit depth (it allocated too much, not too little). &lt;br /&gt;
&lt;br /&gt;
Fix flash detection to work correctly near the end of the keyframe interval. &lt;br /&gt;
&lt;br /&gt;
Fix a crash in dump yuv with some resolutions. &lt;br /&gt;
&lt;br /&gt;
Various fixes have been made to ratecontrol in high-bit-depth mode. &lt;br /&gt;
&lt;br /&gt;
Constrained intra pred is working properly again in all cases. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
x264&#039;s SEI header now indicates whether the build used was GPL or proprietary. &lt;br /&gt;
&lt;br /&gt;
x264 is now compatible with FFMS2&#039;s most recent API break. &lt;br /&gt;
&lt;br /&gt;
configure now logs test programs that failed, not just the error output. &lt;br /&gt;
&lt;br /&gt;
Merge Oskar&#039;s (irock&#039;s) 10-bit asm branch: ~4.4x overall speed boost in high bit depth mode. &lt;br /&gt;
&lt;br /&gt;
Chroma weighted prediction: dramatically improved chroma compression and quality in fades. &lt;br /&gt;
&lt;br /&gt;
Custom cropping rectangle support: users can now specify --crop-rect to add values to the H.264 cropping header. This is supposedly useful for 3D television applications (to allow legacy decoders to access only one view of the image). &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is important for some broadcast applications. &lt;br /&gt;
&lt;br /&gt;
The pad filter and yadif are nearly ready for the x264CLI filter framework. Both now support high bit depth. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding finished and inter coding begun. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks). &lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
Since we started a couple of months ago, over 40 companies have contacted us regarding x264 licensing! &lt;br /&gt;
&lt;br /&gt;
At least one major Blu-ray authoring house is switching to x264 for their commercial Blu-rays. &lt;br /&gt;
&lt;br /&gt;
At least one commercial encoding application based on x264 is currently in the works. An announcement will come Soon™. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/008003.html Volume 6] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/25/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the sixth x264 development newsletter.  If you missed the first five, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Fix some crashes in high bit depth on some compilers due to insufficient array alignment.&lt;br /&gt;
&lt;br /&gt;
Fix a bug in chroma weightp which could cause corruption in rare cases.&lt;br /&gt;
&lt;br /&gt;
Fix some weird issues in the resize filter&#039;s rounding code.&lt;br /&gt;
&lt;br /&gt;
Fix the build on SPARC Solaris 10 machines.&lt;br /&gt;
&lt;br /&gt;
Fix high bit depth mode on SPARC.&lt;br /&gt;
&lt;br /&gt;
Fix an odd issue in VFR input + forced timebase.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
QPmin default is now 0.&lt;br /&gt;
&lt;br /&gt;
x264 --version now prints a lot more useful information.&lt;br /&gt;
&lt;br /&gt;
x264_encoder_reconfig now copies field order flags.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a new API function to return the maximum number of delayed frames with the current parameters (requested by Gstreamer).&lt;br /&gt;
&lt;br /&gt;
Google Code-In is in full swing, with two sets of patches committed:&amp;lt;br&amp;gt;&lt;br /&gt;
SSE versions of some high-bit-depth (i)DCT functions&amp;lt;br&amp;gt;&lt;br /&gt;
x264 now has a totally sweet Python regression test tool.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--weightp 1 is now a better speed tradeoff.  It also doesn&#039;t do any reference duplication, so it&#039;s suitable when encoding for broken decoders that don&#039;t handle reference duplication correctly (while still getting the benefits of fade detection).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks).&lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;A commercial encoding application based on x264 is currently in the works. An announcement will come this week.&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This week? Perhaps I should have said &amp;quot;today&amp;quot;!&lt;br /&gt;
&lt;br /&gt;
Pegasys Inc. switches to x264 for their flagship product, TMPGEnc.&lt;br /&gt;
&lt;br /&gt;
English: http://tmpgenc.pegasys-inc.com/en/press/10_1125.html&lt;br /&gt;
&lt;br /&gt;
日本語: http://tmpgenc.pegasys-inc.com/ja/press/10_1126.html&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-December/008041.html Volume 7] ==&lt;br /&gt;
&#039;&#039;12/07/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the seventh x264 development newsletter.  If you missed the first six, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Fix SPARC and Solaris building (really this time!)&lt;br /&gt;
&lt;br /&gt;
Three timecode input fixes: for nonzero starting pts, for a corner case in auto timebase generation, and fixing a spurious error in case of a frame read error.&lt;br /&gt;
&lt;br /&gt;
Actually fix fittobox resizing code.&lt;br /&gt;
&lt;br /&gt;
Fix incorrect handling of some pixfmts with non-mod2 resolutions in the resize filter.&lt;br /&gt;
&lt;br /&gt;
Fix a file handle leak in libx264 with certain file reading errors in statsfile handling.&lt;br /&gt;
&lt;br /&gt;
Fix intra refresh&#039;s quality masking: the ipratio wasn&#039;t correctly applied in threaded mode.&lt;br /&gt;
&lt;br /&gt;
Fix an overflow in fdct asm in 10-bit builds.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
Automatically restrict QPs to avoid quantization (under|over)flow, so you don&#039;t have to.  Will error out if this, combined with insane user constraints, makes encoding impossible.  This makes fprofiling work out of the box again.&lt;br /&gt;
&lt;br /&gt;
Use the Avisynth 2.6 API to detect Avisynth initialization failure and print the associated error (only available in Avisynth 2.6 alphas; doesn&#039;t affect older versions).&lt;br /&gt;
&lt;br /&gt;
Install an x264_config.h containing information about how x264 was configured.  This will allow ffmpeg to link with commercially licensed copies of libx264 without --enable-gpl.&lt;br /&gt;
&lt;br /&gt;
Massive amounts of high bit depth assembly code from Google Code-In (about two dozen functions).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks).&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-December/008070.html Volume 8] ==&lt;br /&gt;
&#039;&#039;12/15/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the eighth x264 development newsletter.  If you missed the first seven, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Weightp analysis now calculates offsets correctly in high bit depth mode.&lt;br /&gt;
&lt;br /&gt;
High bit depth intra pred x86 asm functions are now fixed (and thus re-enabled).&lt;br /&gt;
&lt;br /&gt;
That nasty gnu ld alignment bug on windows (ld refuses to align .bss to 16 bytes even when asked nicely) has been squashed with -fno-zero-initialized-in-bss.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
.gitignore is now even more useful than before.&lt;br /&gt;
&lt;br /&gt;
Another bit of memory saved in high bit depth weightp.&lt;br /&gt;
&lt;br /&gt;
The regression test script now tests interlaced compression.&lt;br /&gt;
&lt;br /&gt;
8x8dct is now allowed with cavlc+lossless and subme&amp;gt;=6, for a slight compression improvement.&lt;br /&gt;
&lt;br /&gt;
Frame-packing SEI support is now in, for official 3D support in x264.&lt;br /&gt;
&lt;br /&gt;
A metric crapload of new high bit depth asm functions are now in (thanks, Google Code-In!)&lt;br /&gt;
&lt;br /&gt;
x264 now supports Windows threads in addition to pthreads.  Thanks to Pegasys Inc. for the original patch.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a paraplegic three-toed sloth swimming down a frozen river of bricks).&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2011-January/008132.html Volume 9] ==&lt;br /&gt;
&#039;&#039;01/10/11&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the ninth x264 development newsletter.  If you missed the&lt;br /&gt;
first eight, this is a regular email containing updates on fixes and&lt;br /&gt;
improvements in the most recent x264 push, along with updates on&lt;br /&gt;
what&#039;s coming next.  Previous versions can be found in the mailing&lt;br /&gt;
list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
The win32 alignment crash issue is actually fixed now.  Apparently gcc doesn&#039;t work right unless you initialize zero arrays explicitly.&lt;br /&gt;
&lt;br /&gt;
High bit depth now compiles with --disable-asm properly again.&lt;br /&gt;
&lt;br /&gt;
SATD predictors with high bit depth work properly with --no-mbtree on.&amp;lt;br&amp;gt;&lt;br /&gt;
*Bug resulted in bizarre/wrong bitrates in CRF mode with --no-mbtree.&lt;br /&gt;
&lt;br /&gt;
The lavf demuxer no longer memory leaks like crazy on inputs with multiple video streams.&lt;br /&gt;
&lt;br /&gt;
Some overflows in VFR ratecontrol with extreme timebases have been fixed.  These affected some actual videos.&lt;br /&gt;
&lt;br /&gt;
SSIM now works properly in 10-bit.&lt;br /&gt;
&lt;br /&gt;
A bug with negative costs that caused assertions on some videos in high bit depth mode has been fixed.&lt;br /&gt;
&lt;br /&gt;
YV12 now works correctly in the resize filter (there was an issue with swapped chroma planes).&lt;br /&gt;
&lt;br /&gt;
The endianness test and as test in configure now work properly in cross-compile mode.&lt;br /&gt;
&lt;br /&gt;
Weightp no longer prints random extra linebreaks to the statsfile.&lt;br /&gt;
&lt;br /&gt;
A few minor improvements have been made to the parameter SEI.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
Some incorrect GCC uninitialized variable warnings have been shut up.&lt;br /&gt;
&lt;br /&gt;
Metric craptons of high bit depth assembly have been added, for significant performance improvements.  Thanks to Google Code-In (now over) and our students for their enormous amount of work, particularly Daniel Kang.&lt;br /&gt;
&lt;br /&gt;
Also a few improvements in 8-bit assembly functions as well.&lt;br /&gt;
&lt;br /&gt;
Check an extra offset in weightp analysis, for improved compression on fades with --weightp 1 (and slightly, but much less, improved with weightp 2).&lt;br /&gt;
&lt;br /&gt;
Improve reference ordering in 3D frame-interleaved mode.&lt;br /&gt;
&lt;br /&gt;
VFR-aware ratecontrol: MB-tree and non-MB-tree ratecontrol will now be aware of how long frames last.  This results in greatly improved quality in VFR video, particularly dedup&#039;d anime and similar content. It is now even MORE important that calling applications give x264&lt;br /&gt;
correct timestamps!  Note this also affects the definition of CRF; higher framerate videos will get lower quality at the same CRF, which should improve how well CRF measures quality (as compared to the human brain itself).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.  The patch is done, but needs review.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&amp;lt;br&amp;gt;&lt;br /&gt;
The patch is done, but needs editing of the help entries.&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.  This was&lt;br /&gt;
delayed due to Google Code-In.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a paraplegic three-toed sloth swimming down a frozen river of bricks while chained to an osmium anchor).&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2011-January/008192.html Volume 10] ==&lt;br /&gt;
&#039;&#039;01/26/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the tenth x264 development newsletter.  If you missed the first nine, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Some asm fixes to high bit depth: fix cases where SSE2-only instructions were used in MMX functions (caused SIGILL on old CPUs).&lt;br /&gt;
&lt;br /&gt;
Fix the cacheline check in cache32 avg2 code (minor speed improvement on some old CPUs).&lt;br /&gt;
&lt;br /&gt;
Fix CPU detection on Windows systems with &amp;gt;= 64 CPUs.  x264 still doesn&#039;t use more than one processor group (it really doesn&#039;t need to), but at least it&#039;ll work now.&lt;br /&gt;
&lt;br /&gt;
Fix reconfiguration of b_tff: make changing field order during encoding work properly.  Required for ffmpeg to signal TFF/BFF, since ffmpeg&#039;s TFF/BFF is signaled per-frame instead of per-stream.&lt;br /&gt;
&lt;br /&gt;
Fix cases where x264_encoder_encode failures (due to malloc failure) could cause x264_encoder_close to crash.&lt;br /&gt;
&lt;br /&gt;
Write the 3D frame packing SEI values more correctly (thanks to Nero for the bug report).&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
Bump all the dates to 2011.&lt;br /&gt;
&lt;br /&gt;
Add some missing values to the non-extended SAR table.&lt;br /&gt;
&lt;br /&gt;
Improve the regression test script to not break with really complex commandlines on OSs with limited filename length, as well as correctly return to the original branch the user is on after testing.&lt;br /&gt;
&lt;br /&gt;
Add an --input-fmt option to serve the same purpose of -f in ffmpeg; useful for cases where ffmpeg can&#039;t successfully probe the format of the input file.&lt;br /&gt;
&lt;br /&gt;
Double the base framerate of frame-sequential 3D files; a &amp;quot;60fps&amp;quot; frame-sequential 3D file is really only 30fps.&lt;br /&gt;
&lt;br /&gt;
Add AVX support to x264&#039;s assembly abstraction layer as well as one example function: still needs the actual AVX code to be written, but x264 can now take advantage of 3-operand instructions.&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.  The patch is done, but needs review.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&amp;lt;br&amp;gt;&lt;br /&gt;
The patch is done, but needs editing of the help entries.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is actually coming along for once this time.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a paraplegic three-toed sloth swimming down a river of frozen helium while chained to an osmium anchor stuck inside a black hole).&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2011-February/008251.html Volume 11] ==&lt;br /&gt;
&#039;&#039;02/06/2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the eleventh x264 development newsletter.  If you missed the first nine, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Fix various regressions introduced in VBV emergency.&lt;br /&gt;
&lt;br /&gt;
Fix AVX detection on OSs that don&#039;t support AVX.&lt;br /&gt;
&lt;br /&gt;
Fix a crash on Phenom that could occur with the lookahead disabled and a calling application that tweaks the SSE control flags.&lt;br /&gt;
&lt;br /&gt;
Fix a divide-by-zero crash in the MKV/FLV muxers that could occur if encoder initialization failed.&lt;br /&gt;
&lt;br /&gt;
Fix a race condition that resulted in slightly wrong frame durations calculated for VFR input.&lt;br /&gt;
&lt;br /&gt;
Fix an overflow in i16x16 NEON planar prediction, backported from ffmpeg.&lt;br /&gt;
&lt;br /&gt;
In x86inc.asm, error on duplicate functions instead of silently renaming one of them.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
Enable FastShuffle on crippled Nehalem/Penryn CPUs without SSE4.&lt;br /&gt;
&lt;br /&gt;
Output pic_struct information in the libx264 API.&lt;br /&gt;
&lt;br /&gt;
Allow weightp_fake in interlaced mode: it seems to work fine as-is.&lt;br /&gt;
&lt;br /&gt;
In Windows, restore the old console title after encoding.  MSDN says this is supposed to happen automatically, but MSDN is wrong.&lt;br /&gt;
&lt;br /&gt;
Make x264cli update its progress every 0.25 seconds instead of every certain number of frames.  This should be more visually consistent and fix some problems with extremely fast-updating status bars (e.g. from FFMS indexing of large files) in some situations.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.  The patch is done, but needs review.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In. The patch is done, but needs editing of the help entries.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is actually coming along for once this time.  Inter frames are mostly done.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a one-legged paraplegic three-toed sloth swimming down a river of frozen helium while chained to an osmium anchor stuck inside a black hole).&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2011-February/008293.html Volume 12] ==&lt;br /&gt;
&#039;&#039;02/18/2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the twelfth x264 development newsletter.  If you missed the&lt;br /&gt;
first eleven, this is a regular email containing updates on fixes and&lt;br /&gt;
improvements in the most recent x264 push, along with updates on&lt;br /&gt;
what&#039;s coming next.  Previous versions can be found in the mailing&lt;br /&gt;
list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Fix some Intel compiler warnings.&lt;br /&gt;
&lt;br /&gt;
Fix a crash in the mp4 muxer in x264cli if x264_encoder_open failed.&lt;br /&gt;
&lt;br /&gt;
Fix a case in which a malloc(0) was done; on some OSs, like Solaris,&lt;br /&gt;
this returned a null pointer instead of a pointer to a 0-byte memory&lt;br /&gt;
block, thus causing libx264 to think that its malloc failed.  Both&lt;br /&gt;
these behaviors are POSIX-compatible.&lt;br /&gt;
&lt;br /&gt;
Fix a minor bug in RD caused by a stray semicolon.  It probably didn&#039;t&lt;br /&gt;
affect much.&lt;br /&gt;
&lt;br /&gt;
Fix a memory leak on encoder close if not all frames were flushed&lt;br /&gt;
during encoding.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
Save memory: don&#039;t init MV cost data that isn&#039;t needed.&lt;br /&gt;
&lt;br /&gt;
Use bs_write1 for all 1-bit header bits, not just some.&lt;br /&gt;
&lt;br /&gt;
Even more accurate handling of slice-max-size escape bytes: track the&lt;br /&gt;
actual bytes rather than trying to estimate them.  Slightly slower,&lt;br /&gt;
but should cover even the most insane corner cases (we found a corner&lt;br /&gt;
case in which x264 could literally end up outputting one escape byte&lt;br /&gt;
for every single macroblock!).&lt;br /&gt;
&lt;br /&gt;
In frame-packing 3D, don&#039;t place scenecuts on the right view, ever.&lt;br /&gt;
Some players dislike this.  Note: x264 won&#039;t stop you from using an&lt;br /&gt;
odd keyint, which will mess this up.&lt;br /&gt;
&lt;br /&gt;
The first edition of Daniel Kang&#039;s massive AVX patch is in --&lt;br /&gt;
hopefully this will give a few % of performance on the new Sandy&lt;br /&gt;
Bridge chips.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as&lt;br /&gt;
part of Google Code-In.  The patch is done, but needs review.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&lt;br /&gt;
The patch is done, but needs editing of the help entries.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is actually coming along for once this&lt;br /&gt;
time.  Inter frames are basically done.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using&lt;br /&gt;
the x264 framework.  P-frames are done and working.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding&lt;br /&gt;
ASIC for improved encoding performance.  Current status is: waiting on&lt;br /&gt;
Intel (these guys move at the speed of an obese one-legged paraplegic&lt;br /&gt;
three-toed sloth swimming down a river of frozen helium while chained&lt;br /&gt;
to an osmium anchor stuck inside a black hole).&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18686</id>
		<title>X264 Development Newsletters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18686"/>
		<updated>2011-02-07T07:06:41Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an archive of the x264 Development Newsletters. &lt;br /&gt;
&lt;br /&gt;
== Volume 1  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/18/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
From now on, with each weekly-ish push of new patches, I&#039;ll try to post a newsletter as well to give an update of what&#039;s going on and the changes. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
Different versions of 64-bit MinGW gcc were inconsistent with regards to whether or not to add a _ prefix to called functions. This broke compilation because the assembly code wouldn&#039;t link in correctly. &lt;br /&gt;
&lt;br /&gt;
Intra refresh got a lot of fixes thanks to bug reports by Chris Brien &amp;amp;lt;chris.brien@tandberg.com&amp;amp;gt;. Because x264 uses column refresh instead of row refresh, it has to be more careful with regards to which pixels it can predict from. This should fix some cases where intra refresh didn&#039;t refresh the whole frame correctly. Furthermore, it turns out that the recovery_frame_cnt syntax element, signaling the length of the intra refresh, is limited by the max frame number. Accordingly, x264 will raise the max frame number to ensure that recovery_frame_cnt is in spec. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
I&#039;ve gone through the file headers and updated them to be more accurate and consistent in terms of dates and authorship. It now also mentions the commercial license, on request from a licensee. &lt;br /&gt;
&lt;br /&gt;
The new --disable-gpl configure option is now added for companies using the commercial license. x264 --version will print both the license information of itself and of the linked libavformat (for decoding). It&#039;ll also warn you if the combination you&#039;ve put together isn&#039;t distributable, such as a nonfree ffmpeg + GPL x264, or a GPL ffmpeg + non-GPL x264. &lt;br /&gt;
&lt;br /&gt;
x264 now passes the &amp;quot;full chroma input&amp;quot; flag to swscale. This should fix this quality issue when using point scaling: http://doom10.org/index.php?topic=585.0 . &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
Kieran Kunhya &amp;amp;lt;kieran@kunhya.com&amp;amp;gt; has finally committed his arbitrary SEI patch, which lets calling apps give x264 any SEI they want to include in the stream. This is useful for closed-captioning, frame packing, and all kinds of other SEIs that x264 doesn&#039;t explicitly support but which the calling application can create itself if necessary. The advantage of giving these to x264 instead of just inserting them separately is that it allows the resulting stream to remain HRD-compliant, since x264 knows they exist. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit-depth input and filtering! x264 supports 10-bit encoding, but currently only takes 8-bit input. This change will finally create a stable API for high bit-depth input and allow users to filter in higher precision. It will also add dithering support to x264CLI for downconversion of high-bit-depth material. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Chroma ME in B-frames will be coming soon, giving an extra bit of compression to those using slower presets. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
After high bit-depth input is complete, a large amount of assembly code will be committed as well, improving high bit-depth encoding performance greatly. &lt;br /&gt;
&lt;br /&gt;
Ubuntu Maverick will include an updated x264, r1653. &lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-September/007808.html Volume 2]  ==&lt;br /&gt;
&#039;&#039;9/27/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
libx264 should now give correct DTS and print the correct bitrate if the input PTS do not start at zero. This doesn&#039;t affect x264CLI, but does affect calling apps that don&#039;t start their PTS at zero. &lt;br /&gt;
&lt;br /&gt;
libx264 ratecontrol should now work correctly in CFR mode with timebase&amp;amp;nbsp;!= 1/fps. As documented, x264 was supposed to ignore the timebase if CFR mode is set (for purposes of ratecontrol), but that&#039;s not what actually happened; things just broke. This should now be fixed. This is necessary for correct behavior with tune=zerolatency in gstreamer. &lt;br /&gt;
&lt;br /&gt;
A missing emms has been added to dump-yuv, fixing some Heisenbug brokenness when dump-yuv was used. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
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&#039;s extra byte, CAVLC&#039;s skip runs). The primary problem, however, was caused by the terrible design of H.264&#039;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. &lt;br /&gt;
&lt;br /&gt;
Chroma mode decision and subpel, mentioned in the last newsletter, is finally in. It&#039;s enabled at subme &amp;amp;gt;= 9 and provides a ~0.4-1% compression improvement. &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
High-bit-depth support has been finished in libx264 and x264cli. The assembly code is still yet to be committed, so it&#039;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&#039;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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-October/007858.html Volume 3]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;10/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the third x264 development newsletter. If you missed the first two, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The sigint handler in x264cli is now volatile, like it should have been. This likely didn&#039;t actually affect anything on any real system, but it&#039;s more correct. &lt;br /&gt;
&lt;br /&gt;
-DNDEBUG broke the filtering system. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
The bugfix from last week regarding intra refresh predicting from topright blocks didn&#039;t work with 8x8dct. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
2-pass ratecontrol now works with CBR HRD. Previously, it ignored filler bits, and thus broke horribly. In general, you don&#039;t need 2-pass for CBR (and it probably doesn&#039;t help), but it should work better now. &lt;br /&gt;
&lt;br /&gt;
A missing mod4-stack check was added; this should fix ICC builds on Phenom CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
The build tree has been cleaned a bit. A bunch of old stuff, like the non-working regression test and doxy, have been removed. &lt;br /&gt;
&lt;br /&gt;
Some of the information in doc/ has been updated to be less absurdly out of date, or at least inform the reader that it is absurdly out of date. &lt;br /&gt;
&lt;br /&gt;
DTS compression has been moved out of the libx264 API and into the muxers, because it&#039;s a giant hack and it was making things ugly and messy (and starting to interfere with ratecontrol). &lt;br /&gt;
&lt;br /&gt;
Various asm functions have been improved, particularly the qpel MC functions. Should help performance a bit on Core 2 and similar CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007920.html Volume 4]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fourth x264 development newsletter. If you missed the first three, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The Altivec SATD gave wrong results with very small strides (e.g. 8). This made output on PPC slightly different from x86, due to different results in lookahead and chroma ME. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
FPS reporting on Windows 64-bit was very imprecise (the timers were only accurate to 1 second). This was due to _ftime using the wrong struct due to the Windows ABI&#039;s complete retardation. This has been fixed by using ftime instead. &lt;br /&gt;
&lt;br /&gt;
ssd_nv12 has been improved to eliminate overflow at high bit depths (this would, in theory, give wrong PSNR). &lt;br /&gt;
&lt;br /&gt;
SATD/SA8D/Hadamard_ac have been improved to eliminate overflow at high bit depths (this would cause wrong analysis results). &lt;br /&gt;
&lt;br /&gt;
Three ratecontrol bugs have been fixed: &lt;br /&gt;
&lt;br /&gt;
#B-frame size prediction has been fixed (it used quantizer instead of linearized qscale). This should improve VBV.&lt;br /&gt;
#Overflow compensation, originally designed for 1-pass ABR, has been disabled with CRF on, as it doesn&#039;t do anything useful with pure CRF and causes very bizarre results with CRF+VBV in areas of extremely high complexity. &lt;br /&gt;
#A bug in the way that clip_qscale caps the amount by which a frame can be higher quality than a previous frame (as a result of attempting to use up extra bits that would otherwise be wasted) has been fixed. This caused CBR to take extremely long times (e.g. seconds) to recover from extreme changes in complexity at low bitrates.&lt;br /&gt;
&lt;br /&gt;
A possible linking problem with lavf has been fixed. &lt;br /&gt;
&lt;br /&gt;
Some MV/ref prefetching code was in the wrong place. Fixing this may result in a tiny performance improvement.&lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
doc/threads.txt has been updated with modern benchmarks. This information may be useful to anyone looking to compare the impact of various threading strategies on quality and performance, as well as get an idea of how well x264 scales over multiple cores at various encoding speeds. &lt;br /&gt;
&lt;br /&gt;
The presets are now addressable numerically (0=ultrafast...9=placebo).&amp;lt;br&amp;gt;&lt;br /&gt;
The exact mappings may change in the future if new presets are added or old presets removed, but they will always be in linear order of fast to slow. &lt;br /&gt;
&lt;br /&gt;
The ffmpeg -vpre error message (if a user doesn&#039;t use a -vpre) has been made more descriptive, to better instruct users about how the ffmpeg -vpre system works. &lt;br /&gt;
&lt;br /&gt;
weightp -1 offset dupes are now disabled in high bit depth mode, as they&#039;re a hack to get around crappy rounding in 8-bit encoding, and thus don&#039;t help in high bit depth. &lt;br /&gt;
&lt;br /&gt;
PSNR and SSIM measurements are now VFR-aware! This means they will take into account the duration of frames. This may result in PSNR and SSIM results appearing dramatically different from other tools when used on variable framerate video. Don&#039;t fret; x264 is correct, they are not. Of course, results will stay the same for constant framerate video. This is the first step to VFR-aware MB-tree. &lt;br /&gt;
&lt;br /&gt;
Quantizer handling has been improved.&amp;lt;br&amp;gt;&lt;br /&gt;
Library change: i_qpplus1 now defaults to X264_QP_AUTO. This doesn&#039;t actually change anything, as X264_QP_AUTO is 0, but this may change in the future. As a reminder, all x264_picture_t structs must be initialized using x264_picture_init or x264_picture_alloc!&amp;lt;br&amp;gt;&lt;br /&gt;
CRF values now make sense in high bit depth: --crf 23 means roughly the same quality in 8-bit or 10-bit, instead of being 4 times higher quality in 10-bit than in 8-bit.&amp;lt;br&amp;gt;&lt;br /&gt;
This means that --qp 0 should be used for lossless, not --crf 0. The latter will not result in lossless compression when in high bit depth mode.&amp;lt;br&amp;gt;&lt;br /&gt;
Bit depth has been added to statsfiles, to prevent users from inadvertently using a statsfile with the wrong bit depth. &lt;br /&gt;
&lt;br /&gt;
Scenecut&#039;s flash detection has been improved to work more sanely in the case of flashes at the end of the videos.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is nearly ready. Speed boost has been measured as about 4.3x and is still improving. &lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is critical for some broadcast applications. Unlike most competing encoders, this VBV Emergency Mode does not drop frames or force all blocks to skip or some similarly extreme step: it adds a &amp;quot;denoising&amp;quot; step to reduce the complexity of the video, which scales upwards until it simply removes all content at the most extreme level. &lt;br /&gt;
&lt;br /&gt;
A pad filter is nearly ready for the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding mostly finished. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007950.html Volume 5]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/19/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fifth x264 development newsletter. If you missed the first four, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
HRD now works correctly when used with intra refresh. Thanks to a certain x264 commercial licensee for the bug report. &lt;br /&gt;
&lt;br /&gt;
QPfile parsing now works as it was supposed to have worked last time: users should be able to omit QP values. &lt;br /&gt;
&lt;br /&gt;
Allocate the correct amount of memory for weightp buffers with weightp + high bit depth (it allocated too much, not too little). &lt;br /&gt;
&lt;br /&gt;
Fix flash detection to work correctly near the end of the keyframe interval. &lt;br /&gt;
&lt;br /&gt;
Fix a crash in dump yuv with some resolutions. &lt;br /&gt;
&lt;br /&gt;
Various fixes have been made to ratecontrol in high-bit-depth mode. &lt;br /&gt;
&lt;br /&gt;
Constrained intra pred is working properly again in all cases. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
x264&#039;s SEI header now indicates whether the build used was GPL or proprietary. &lt;br /&gt;
&lt;br /&gt;
x264 is now compatible with FFMS2&#039;s most recent API break. &lt;br /&gt;
&lt;br /&gt;
configure now logs test programs that failed, not just the error output. &lt;br /&gt;
&lt;br /&gt;
Merge Oskar&#039;s (irock&#039;s) 10-bit asm branch: ~4.4x overall speed boost in high bit depth mode. &lt;br /&gt;
&lt;br /&gt;
Chroma weighted prediction: dramatically improved chroma compression and quality in fades. &lt;br /&gt;
&lt;br /&gt;
Custom cropping rectangle support: users can now specify --crop-rect to add values to the H.264 cropping header. This is supposedly useful for 3D television applications (to allow legacy decoders to access only one view of the image). &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is important for some broadcast applications. &lt;br /&gt;
&lt;br /&gt;
The pad filter and yadif are nearly ready for the x264CLI filter framework. Both now support high bit depth. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding finished and inter coding begun. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks). &lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
Since we started a couple of months ago, over 40 companies have contacted us regarding x264 licensing! &lt;br /&gt;
&lt;br /&gt;
At least one major Blu-ray authoring house is switching to x264 for their commercial Blu-rays. &lt;br /&gt;
&lt;br /&gt;
At least one commercial encoding application based on x264 is currently in the works. An announcement will come Soon™. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/008003.html Volume 6] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/25/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the sixth x264 development newsletter.  If you missed the first five, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Fix some crashes in high bit depth on some compilers due to insufficient array alignment.&lt;br /&gt;
&lt;br /&gt;
Fix a bug in chroma weightp which could cause corruption in rare cases.&lt;br /&gt;
&lt;br /&gt;
Fix some weird issues in the resize filter&#039;s rounding code.&lt;br /&gt;
&lt;br /&gt;
Fix the build on SPARC Solaris 10 machines.&lt;br /&gt;
&lt;br /&gt;
Fix high bit depth mode on SPARC.&lt;br /&gt;
&lt;br /&gt;
Fix an odd issue in VFR input + forced timebase.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
QPmin default is now 0.&lt;br /&gt;
&lt;br /&gt;
x264 --version now prints a lot more useful information.&lt;br /&gt;
&lt;br /&gt;
x264_encoder_reconfig now copies field order flags.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a new API function to return the maximum number of delayed frames with the current parameters (requested by Gstreamer).&lt;br /&gt;
&lt;br /&gt;
Google Code-In is in full swing, with two sets of patches committed:&amp;lt;br&amp;gt;&lt;br /&gt;
SSE versions of some high-bit-depth (i)DCT functions&amp;lt;br&amp;gt;&lt;br /&gt;
x264 now has a totally sweet Python regression test tool.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--weightp 1 is now a better speed tradeoff.  It also doesn&#039;t do any reference duplication, so it&#039;s suitable when encoding for broken decoders that don&#039;t handle reference duplication correctly (while still getting the benefits of fade detection).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks).&lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;A commercial encoding application based on x264 is currently in the works. An announcement will come this week.&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This week? Perhaps I should have said &amp;quot;today&amp;quot;!&lt;br /&gt;
&lt;br /&gt;
Pegasys Inc. switches to x264 for their flagship product, TMPGEnc.&lt;br /&gt;
&lt;br /&gt;
English: http://tmpgenc.pegasys-inc.com/en/press/10_1125.html&lt;br /&gt;
&lt;br /&gt;
日本語: http://tmpgenc.pegasys-inc.com/ja/press/10_1126.html&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-December/008041.html Volume 7] ==&lt;br /&gt;
&#039;&#039;12/07/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the seventh x264 development newsletter.  If you missed the first six, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Fix SPARC and Solaris building (really this time!)&lt;br /&gt;
&lt;br /&gt;
Three timecode input fixes: for nonzero starting pts, for a corner case in auto timebase generation, and fixing a spurious error in case of a frame read error.&lt;br /&gt;
&lt;br /&gt;
Actually fix fittobox resizing code.&lt;br /&gt;
&lt;br /&gt;
Fix incorrect handling of some pixfmts with non-mod2 resolutions in the resize filter.&lt;br /&gt;
&lt;br /&gt;
Fix a file handle leak in libx264 with certain file reading errors in statsfile handling.&lt;br /&gt;
&lt;br /&gt;
Fix intra refresh&#039;s quality masking: the ipratio wasn&#039;t correctly applied in threaded mode.&lt;br /&gt;
&lt;br /&gt;
Fix an overflow in fdct asm in 10-bit builds.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
Automatically restrict QPs to avoid quantization (under|over)flow, so you don&#039;t have to.  Will error out if this, combined with insane user constraints, makes encoding impossible.  This makes fprofiling work out of the box again.&lt;br /&gt;
&lt;br /&gt;
Use the Avisynth 2.6 API to detect Avisynth initialization failure and print the associated error (only available in Avisynth 2.6 alphas; doesn&#039;t affect older versions).&lt;br /&gt;
&lt;br /&gt;
Install an x264_config.h containing information about how x264 was configured.  This will allow ffmpeg to link with commercially licensed copies of libx264 without --enable-gpl.&lt;br /&gt;
&lt;br /&gt;
Massive amounts of high bit depth assembly code from Google Code-In (about two dozen functions).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks).&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-December/008070.html Volume 8] ==&lt;br /&gt;
&#039;&#039;12/15/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the eighth x264 development newsletter.  If you missed the first seven, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Weightp analysis now calculates offsets correctly in high bit depth mode.&lt;br /&gt;
&lt;br /&gt;
High bit depth intra pred x86 asm functions are now fixed (and thus re-enabled).&lt;br /&gt;
&lt;br /&gt;
That nasty gnu ld alignment bug on windows (ld refuses to align .bss to 16 bytes even when asked nicely) has been squashed with -fno-zero-initialized-in-bss.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
.gitignore is now even more useful than before.&lt;br /&gt;
&lt;br /&gt;
Another bit of memory saved in high bit depth weightp.&lt;br /&gt;
&lt;br /&gt;
The regression test script now tests interlaced compression.&lt;br /&gt;
&lt;br /&gt;
8x8dct is now allowed with cavlc+lossless and subme&amp;gt;=6, for a slight compression improvement.&lt;br /&gt;
&lt;br /&gt;
Frame-packing SEI support is now in, for official 3D support in x264.&lt;br /&gt;
&lt;br /&gt;
A metric crapload of new high bit depth asm functions are now in (thanks, Google Code-In!)&lt;br /&gt;
&lt;br /&gt;
x264 now supports Windows threads in addition to pthreads.  Thanks to Pegasys Inc. for the original patch.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a paraplegic three-toed sloth swimming down a frozen river of bricks).&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2011-January/008132.html Volume 9] ==&lt;br /&gt;
&#039;&#039;01/10/11&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the ninth x264 development newsletter.  If you missed the&lt;br /&gt;
first eight, this is a regular email containing updates on fixes and&lt;br /&gt;
improvements in the most recent x264 push, along with updates on&lt;br /&gt;
what&#039;s coming next.  Previous versions can be found in the mailing&lt;br /&gt;
list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
The win32 alignment crash issue is actually fixed now.  Apparently gcc doesn&#039;t work right unless you initialize zero arrays explicitly.&lt;br /&gt;
&lt;br /&gt;
High bit depth now compiles with --disable-asm properly again.&lt;br /&gt;
&lt;br /&gt;
SATD predictors with high bit depth work properly with --no-mbtree on.&amp;lt;br&amp;gt;&lt;br /&gt;
*Bug resulted in bizarre/wrong bitrates in CRF mode with --no-mbtree.&lt;br /&gt;
&lt;br /&gt;
The lavf demuxer no longer memory leaks like crazy on inputs with multiple video streams.&lt;br /&gt;
&lt;br /&gt;
Some overflows in VFR ratecontrol with extreme timebases have been fixed.  These affected some actual videos.&lt;br /&gt;
&lt;br /&gt;
SSIM now works properly in 10-bit.&lt;br /&gt;
&lt;br /&gt;
A bug with negative costs that caused assertions on some videos in high bit depth mode has been fixed.&lt;br /&gt;
&lt;br /&gt;
YV12 now works correctly in the resize filter (there was an issue with swapped chroma planes).&lt;br /&gt;
&lt;br /&gt;
The endianness test and as test in configure now work properly in cross-compile mode.&lt;br /&gt;
&lt;br /&gt;
Weightp no longer prints random extra linebreaks to the statsfile.&lt;br /&gt;
&lt;br /&gt;
A few minor improvements have been made to the parameter SEI.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
Some incorrect GCC uninitialized variable warnings have been shut up.&lt;br /&gt;
&lt;br /&gt;
Metric craptons of high bit depth assembly have been added, for significant performance improvements.  Thanks to Google Code-In (now over) and our students for their enormous amount of work, particularly Daniel Kang.&lt;br /&gt;
&lt;br /&gt;
Also a few improvements in 8-bit assembly functions as well.&lt;br /&gt;
&lt;br /&gt;
Check an extra offset in weightp analysis, for improved compression on fades with --weightp 1 (and slightly, but much less, improved with weightp 2).&lt;br /&gt;
&lt;br /&gt;
Improve reference ordering in 3D frame-interleaved mode.&lt;br /&gt;
&lt;br /&gt;
VFR-aware ratecontrol: MB-tree and non-MB-tree ratecontrol will now be aware of how long frames last.  This results in greatly improved quality in VFR video, particularly dedup&#039;d anime and similar content. It is now even MORE important that calling applications give x264&lt;br /&gt;
correct timestamps!  Note this also affects the definition of CRF; higher framerate videos will get lower quality at the same CRF, which should improve how well CRF measures quality (as compared to the human brain itself).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.  The patch is done, but needs review.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&amp;lt;br&amp;gt;&lt;br /&gt;
The patch is done, but needs editing of the help entries.&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.  This was&lt;br /&gt;
delayed due to Google Code-In.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a paraplegic three-toed sloth swimming down a frozen river of bricks while chained to an osmium anchor).&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2011-January/008192.html Volume 10] ==&lt;br /&gt;
&#039;&#039;01/26/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the tenth x264 development newsletter.  If you missed the first nine, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Some asm fixes to high bit depth: fix cases where SSE2-only instructions were used in MMX functions (caused SIGILL on old CPUs).&lt;br /&gt;
&lt;br /&gt;
Fix the cacheline check in cache32 avg2 code (minor speed improvement on some old CPUs).&lt;br /&gt;
&lt;br /&gt;
Fix CPU detection on Windows systems with &amp;gt;= 64 CPUs.  x264 still doesn&#039;t use more than one processor group (it really doesn&#039;t need to), but at least it&#039;ll work now.&lt;br /&gt;
&lt;br /&gt;
Fix reconfiguration of b_tff: make changing field order during encoding work properly.  Required for ffmpeg to signal TFF/BFF, since ffmpeg&#039;s TFF/BFF is signaled per-frame instead of per-stream.&lt;br /&gt;
&lt;br /&gt;
Fix cases where x264_encoder_encode failures (due to malloc failure) could cause x264_encoder_close to crash.&lt;br /&gt;
&lt;br /&gt;
Write the 3D frame packing SEI values more correctly (thanks to Nero for the bug report).&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
Bump all the dates to 2011.&lt;br /&gt;
&lt;br /&gt;
Add some missing values to the non-extended SAR table.&lt;br /&gt;
&lt;br /&gt;
Improve the regression test script to not break with really complex commandlines on OSs with limited filename length, as well as correctly return to the original branch the user is on after testing.&lt;br /&gt;
&lt;br /&gt;
Add an --input-fmt option to serve the same purpose of -f in ffmpeg; useful for cases where ffmpeg can&#039;t successfully probe the format of the input file.&lt;br /&gt;
&lt;br /&gt;
Double the base framerate of frame-sequential 3D files; a &amp;quot;60fps&amp;quot; frame-sequential 3D file is really only 30fps.&lt;br /&gt;
&lt;br /&gt;
Add AVX support to x264&#039;s assembly abstraction layer as well as one example function: still needs the actual AVX code to be written, but x264 can now take advantage of 3-operand instructions.&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.  The patch is done, but needs review.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&amp;lt;br&amp;gt;&lt;br /&gt;
The patch is done, but needs editing of the help entries.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is actually coming along for once this time.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a paraplegic three-toed sloth swimming down a river of frozen helium while chained to an osmium anchor stuck inside a black hole).&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2011-February/008251.html Volume 11] ==&lt;br /&gt;
&#039;&#039;02/06/2011&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the eleventh x264 development newsletter.  If you missed the first nine, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Fix various regressions introduced in VBV emergency.&lt;br /&gt;
&lt;br /&gt;
Fix AVX detection on OSs that don&#039;t support AVX.&lt;br /&gt;
&lt;br /&gt;
Fix a crash on Phenom that could occur with the lookahead disabled and a calling application that tweaks the SSE control flags.&lt;br /&gt;
&lt;br /&gt;
Fix a divide-by-zero crash in the MKV/FLV muxers that could occur if encoder initialization failed.&lt;br /&gt;
&lt;br /&gt;
Fix a race condition that resulted in slightly wrong frame durations calculated for VFR input.&lt;br /&gt;
&lt;br /&gt;
Fix an overflow in i16x16 NEON planar prediction, backported from ffmpeg.&lt;br /&gt;
&lt;br /&gt;
In x86inc.asm, error on duplicate functions instead of silently renaming one of them.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
Enable FastShuffle on crippled Nehalem/Penryn CPUs without SSE4.&lt;br /&gt;
&lt;br /&gt;
Output pic_struct information in the libx264 API.&lt;br /&gt;
&lt;br /&gt;
Allow weightp_fake in interlaced mode: it seems to work fine as-is.&lt;br /&gt;
&lt;br /&gt;
In Windows, restore the old console title after encoding.  MSDN says this is supposed to happen automatically, but MSDN is wrong.&lt;br /&gt;
&lt;br /&gt;
Make x264cli update its progress every 0.25 seconds instead of every certain number of frames.  This should be more visually consistent and fix some problems with extremely fast-updating status bars (e.g. from FFMS indexing of large files) in some situations.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.  The patch is done, but needs review.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In. The patch is done, but needs editing of the help entries.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is actually coming along for once this time.  Inter frames are mostly done.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a one-legged paraplegic three-toed sloth swimming down a river of frozen helium while chained to an osmium anchor stuck inside a black hole).&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18675</id>
		<title>X264 Development Newsletters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18675"/>
		<updated>2011-01-31T02:24:52Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an archive of the x264 Development Newsletters. &lt;br /&gt;
&lt;br /&gt;
== Volume 1  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/18/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
From now on, with each weekly-ish push of new patches, I&#039;ll try to post a newsletter as well to give an update of what&#039;s going on and the changes. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
Different versions of 64-bit MinGW gcc were inconsistent with regards to whether or not to add a _ prefix to called functions. This broke compilation because the assembly code wouldn&#039;t link in correctly. &lt;br /&gt;
&lt;br /&gt;
Intra refresh got a lot of fixes thanks to bug reports by Chris Brien &amp;amp;lt;chris.brien@tandberg.com&amp;amp;gt;. Because x264 uses column refresh instead of row refresh, it has to be more careful with regards to which pixels it can predict from. This should fix some cases where intra refresh didn&#039;t refresh the whole frame correctly. Furthermore, it turns out that the recovery_frame_cnt syntax element, signaling the length of the intra refresh, is limited by the max frame number. Accordingly, x264 will raise the max frame number to ensure that recovery_frame_cnt is in spec. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
I&#039;ve gone through the file headers and updated them to be more accurate and consistent in terms of dates and authorship. It now also mentions the commercial license, on request from a licensee. &lt;br /&gt;
&lt;br /&gt;
The new --disable-gpl configure option is now added for companies using the commercial license. x264 --version will print both the license information of itself and of the linked libavformat (for decoding). It&#039;ll also warn you if the combination you&#039;ve put together isn&#039;t distributable, such as a nonfree ffmpeg + GPL x264, or a GPL ffmpeg + non-GPL x264. &lt;br /&gt;
&lt;br /&gt;
x264 now passes the &amp;quot;full chroma input&amp;quot; flag to swscale. This should fix this quality issue when using point scaling: http://doom10.org/index.php?topic=585.0 . &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
Kieran Kunhya &amp;amp;lt;kieran@kunhya.com&amp;amp;gt; has finally committed his arbitrary SEI patch, which lets calling apps give x264 any SEI they want to include in the stream. This is useful for closed-captioning, frame packing, and all kinds of other SEIs that x264 doesn&#039;t explicitly support but which the calling application can create itself if necessary. The advantage of giving these to x264 instead of just inserting them separately is that it allows the resulting stream to remain HRD-compliant, since x264 knows they exist. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit-depth input and filtering! x264 supports 10-bit encoding, but currently only takes 8-bit input. This change will finally create a stable API for high bit-depth input and allow users to filter in higher precision. It will also add dithering support to x264CLI for downconversion of high-bit-depth material. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Chroma ME in B-frames will be coming soon, giving an extra bit of compression to those using slower presets. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
After high bit-depth input is complete, a large amount of assembly code will be committed as well, improving high bit-depth encoding performance greatly. &lt;br /&gt;
&lt;br /&gt;
Ubuntu Maverick will include an updated x264, r1653. &lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-September/007808.html Volume 2]  ==&lt;br /&gt;
&#039;&#039;9/27/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
libx264 should now give correct DTS and print the correct bitrate if the input PTS do not start at zero. This doesn&#039;t affect x264CLI, but does affect calling apps that don&#039;t start their PTS at zero. &lt;br /&gt;
&lt;br /&gt;
libx264 ratecontrol should now work correctly in CFR mode with timebase&amp;amp;nbsp;!= 1/fps. As documented, x264 was supposed to ignore the timebase if CFR mode is set (for purposes of ratecontrol), but that&#039;s not what actually happened; things just broke. This should now be fixed. This is necessary for correct behavior with tune=zerolatency in gstreamer. &lt;br /&gt;
&lt;br /&gt;
A missing emms has been added to dump-yuv, fixing some Heisenbug brokenness when dump-yuv was used. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
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&#039;s extra byte, CAVLC&#039;s skip runs). The primary problem, however, was caused by the terrible design of H.264&#039;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. &lt;br /&gt;
&lt;br /&gt;
Chroma mode decision and subpel, mentioned in the last newsletter, is finally in. It&#039;s enabled at subme &amp;amp;gt;= 9 and provides a ~0.4-1% compression improvement. &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
High-bit-depth support has been finished in libx264 and x264cli. The assembly code is still yet to be committed, so it&#039;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&#039;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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-October/007858.html Volume 3]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;10/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the third x264 development newsletter. If you missed the first two, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The sigint handler in x264cli is now volatile, like it should have been. This likely didn&#039;t actually affect anything on any real system, but it&#039;s more correct. &lt;br /&gt;
&lt;br /&gt;
-DNDEBUG broke the filtering system. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
The bugfix from last week regarding intra refresh predicting from topright blocks didn&#039;t work with 8x8dct. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
2-pass ratecontrol now works with CBR HRD. Previously, it ignored filler bits, and thus broke horribly. In general, you don&#039;t need 2-pass for CBR (and it probably doesn&#039;t help), but it should work better now. &lt;br /&gt;
&lt;br /&gt;
A missing mod4-stack check was added; this should fix ICC builds on Phenom CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
The build tree has been cleaned a bit. A bunch of old stuff, like the non-working regression test and doxy, have been removed. &lt;br /&gt;
&lt;br /&gt;
Some of the information in doc/ has been updated to be less absurdly out of date, or at least inform the reader that it is absurdly out of date. &lt;br /&gt;
&lt;br /&gt;
DTS compression has been moved out of the libx264 API and into the muxers, because it&#039;s a giant hack and it was making things ugly and messy (and starting to interfere with ratecontrol). &lt;br /&gt;
&lt;br /&gt;
Various asm functions have been improved, particularly the qpel MC functions. Should help performance a bit on Core 2 and similar CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007920.html Volume 4]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fourth x264 development newsletter. If you missed the first three, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The Altivec SATD gave wrong results with very small strides (e.g. 8). This made output on PPC slightly different from x86, due to different results in lookahead and chroma ME. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
FPS reporting on Windows 64-bit was very imprecise (the timers were only accurate to 1 second). This was due to _ftime using the wrong struct due to the Windows ABI&#039;s complete retardation. This has been fixed by using ftime instead. &lt;br /&gt;
&lt;br /&gt;
ssd_nv12 has been improved to eliminate overflow at high bit depths (this would, in theory, give wrong PSNR). &lt;br /&gt;
&lt;br /&gt;
SATD/SA8D/Hadamard_ac have been improved to eliminate overflow at high bit depths (this would cause wrong analysis results). &lt;br /&gt;
&lt;br /&gt;
Three ratecontrol bugs have been fixed: &lt;br /&gt;
&lt;br /&gt;
#B-frame size prediction has been fixed (it used quantizer instead of linearized qscale). This should improve VBV.&lt;br /&gt;
#Overflow compensation, originally designed for 1-pass ABR, has been disabled with CRF on, as it doesn&#039;t do anything useful with pure CRF and causes very bizarre results with CRF+VBV in areas of extremely high complexity. &lt;br /&gt;
#A bug in the way that clip_qscale caps the amount by which a frame can be higher quality than a previous frame (as a result of attempting to use up extra bits that would otherwise be wasted) has been fixed. This caused CBR to take extremely long times (e.g. seconds) to recover from extreme changes in complexity at low bitrates.&lt;br /&gt;
&lt;br /&gt;
A possible linking problem with lavf has been fixed. &lt;br /&gt;
&lt;br /&gt;
Some MV/ref prefetching code was in the wrong place. Fixing this may result in a tiny performance improvement.&lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
doc/threads.txt has been updated with modern benchmarks. This information may be useful to anyone looking to compare the impact of various threading strategies on quality and performance, as well as get an idea of how well x264 scales over multiple cores at various encoding speeds. &lt;br /&gt;
&lt;br /&gt;
The presets are now addressable numerically (0=ultrafast...9=placebo).&amp;lt;br&amp;gt;&lt;br /&gt;
The exact mappings may change in the future if new presets are added or old presets removed, but they will always be in linear order of fast to slow. &lt;br /&gt;
&lt;br /&gt;
The ffmpeg -vpre error message (if a user doesn&#039;t use a -vpre) has been made more descriptive, to better instruct users about how the ffmpeg -vpre system works. &lt;br /&gt;
&lt;br /&gt;
weightp -1 offset dupes are now disabled in high bit depth mode, as they&#039;re a hack to get around crappy rounding in 8-bit encoding, and thus don&#039;t help in high bit depth. &lt;br /&gt;
&lt;br /&gt;
PSNR and SSIM measurements are now VFR-aware! This means they will take into account the duration of frames. This may result in PSNR and SSIM results appearing dramatically different from other tools when used on variable framerate video. Don&#039;t fret; x264 is correct, they are not. Of course, results will stay the same for constant framerate video. This is the first step to VFR-aware MB-tree. &lt;br /&gt;
&lt;br /&gt;
Quantizer handling has been improved.&amp;lt;br&amp;gt;&lt;br /&gt;
Library change: i_qpplus1 now defaults to X264_QP_AUTO. This doesn&#039;t actually change anything, as X264_QP_AUTO is 0, but this may change in the future. As a reminder, all x264_picture_t structs must be initialized using x264_picture_init or x264_picture_alloc!&amp;lt;br&amp;gt;&lt;br /&gt;
CRF values now make sense in high bit depth: --crf 23 means roughly the same quality in 8-bit or 10-bit, instead of being 4 times higher quality in 10-bit than in 8-bit.&amp;lt;br&amp;gt;&lt;br /&gt;
This means that --qp 0 should be used for lossless, not --crf 0. The latter will not result in lossless compression when in high bit depth mode.&amp;lt;br&amp;gt;&lt;br /&gt;
Bit depth has been added to statsfiles, to prevent users from inadvertently using a statsfile with the wrong bit depth. &lt;br /&gt;
&lt;br /&gt;
Scenecut&#039;s flash detection has been improved to work more sanely in the case of flashes at the end of the videos.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is nearly ready. Speed boost has been measured as about 4.3x and is still improving. &lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is critical for some broadcast applications. Unlike most competing encoders, this VBV Emergency Mode does not drop frames or force all blocks to skip or some similarly extreme step: it adds a &amp;quot;denoising&amp;quot; step to reduce the complexity of the video, which scales upwards until it simply removes all content at the most extreme level. &lt;br /&gt;
&lt;br /&gt;
A pad filter is nearly ready for the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding mostly finished. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007950.html Volume 5]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/19/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fifth x264 development newsletter. If you missed the first four, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
HRD now works correctly when used with intra refresh. Thanks to a certain x264 commercial licensee for the bug report. &lt;br /&gt;
&lt;br /&gt;
QPfile parsing now works as it was supposed to have worked last time: users should be able to omit QP values. &lt;br /&gt;
&lt;br /&gt;
Allocate the correct amount of memory for weightp buffers with weightp + high bit depth (it allocated too much, not too little). &lt;br /&gt;
&lt;br /&gt;
Fix flash detection to work correctly near the end of the keyframe interval. &lt;br /&gt;
&lt;br /&gt;
Fix a crash in dump yuv with some resolutions. &lt;br /&gt;
&lt;br /&gt;
Various fixes have been made to ratecontrol in high-bit-depth mode. &lt;br /&gt;
&lt;br /&gt;
Constrained intra pred is working properly again in all cases. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
x264&#039;s SEI header now indicates whether the build used was GPL or proprietary. &lt;br /&gt;
&lt;br /&gt;
x264 is now compatible with FFMS2&#039;s most recent API break. &lt;br /&gt;
&lt;br /&gt;
configure now logs test programs that failed, not just the error output. &lt;br /&gt;
&lt;br /&gt;
Merge Oskar&#039;s (irock&#039;s) 10-bit asm branch: ~4.4x overall speed boost in high bit depth mode. &lt;br /&gt;
&lt;br /&gt;
Chroma weighted prediction: dramatically improved chroma compression and quality in fades. &lt;br /&gt;
&lt;br /&gt;
Custom cropping rectangle support: users can now specify --crop-rect to add values to the H.264 cropping header. This is supposedly useful for 3D television applications (to allow legacy decoders to access only one view of the image). &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is important for some broadcast applications. &lt;br /&gt;
&lt;br /&gt;
The pad filter and yadif are nearly ready for the x264CLI filter framework. Both now support high bit depth. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding finished and inter coding begun. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks). &lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
Since we started a couple of months ago, over 40 companies have contacted us regarding x264 licensing! &lt;br /&gt;
&lt;br /&gt;
At least one major Blu-ray authoring house is switching to x264 for their commercial Blu-rays. &lt;br /&gt;
&lt;br /&gt;
At least one commercial encoding application based on x264 is currently in the works. An announcement will come Soon™. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/008003.html Volume 6] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/25/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the sixth x264 development newsletter.  If you missed the first five, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Fix some crashes in high bit depth on some compilers due to insufficient array alignment.&lt;br /&gt;
&lt;br /&gt;
Fix a bug in chroma weightp which could cause corruption in rare cases.&lt;br /&gt;
&lt;br /&gt;
Fix some weird issues in the resize filter&#039;s rounding code.&lt;br /&gt;
&lt;br /&gt;
Fix the build on SPARC Solaris 10 machines.&lt;br /&gt;
&lt;br /&gt;
Fix high bit depth mode on SPARC.&lt;br /&gt;
&lt;br /&gt;
Fix an odd issue in VFR input + forced timebase.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
QPmin default is now 0.&lt;br /&gt;
&lt;br /&gt;
x264 --version now prints a lot more useful information.&lt;br /&gt;
&lt;br /&gt;
x264_encoder_reconfig now copies field order flags.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a new API function to return the maximum number of delayed frames with the current parameters (requested by Gstreamer).&lt;br /&gt;
&lt;br /&gt;
Google Code-In is in full swing, with two sets of patches committed:&amp;lt;br&amp;gt;&lt;br /&gt;
SSE versions of some high-bit-depth (i)DCT functions&amp;lt;br&amp;gt;&lt;br /&gt;
x264 now has a totally sweet Python regression test tool.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--weightp 1 is now a better speed tradeoff.  It also doesn&#039;t do any reference duplication, so it&#039;s suitable when encoding for broken decoders that don&#039;t handle reference duplication correctly (while still getting the benefits of fade detection).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks).&lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;A commercial encoding application based on x264 is currently in the works. An announcement will come this week.&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This week? Perhaps I should have said &amp;quot;today&amp;quot;!&lt;br /&gt;
&lt;br /&gt;
Pegasys Inc. switches to x264 for their flagship product, TMPGEnc.&lt;br /&gt;
&lt;br /&gt;
English: http://tmpgenc.pegasys-inc.com/en/press/10_1125.html&lt;br /&gt;
&lt;br /&gt;
日本語: http://tmpgenc.pegasys-inc.com/ja/press/10_1126.html&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-December/008041.html Volume 7] ==&lt;br /&gt;
&#039;&#039;12/07/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the seventh x264 development newsletter.  If you missed the first six, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Fix SPARC and Solaris building (really this time!)&lt;br /&gt;
&lt;br /&gt;
Three timecode input fixes: for nonzero starting pts, for a corner case in auto timebase generation, and fixing a spurious error in case of a frame read error.&lt;br /&gt;
&lt;br /&gt;
Actually fix fittobox resizing code.&lt;br /&gt;
&lt;br /&gt;
Fix incorrect handling of some pixfmts with non-mod2 resolutions in the resize filter.&lt;br /&gt;
&lt;br /&gt;
Fix a file handle leak in libx264 with certain file reading errors in statsfile handling.&lt;br /&gt;
&lt;br /&gt;
Fix intra refresh&#039;s quality masking: the ipratio wasn&#039;t correctly applied in threaded mode.&lt;br /&gt;
&lt;br /&gt;
Fix an overflow in fdct asm in 10-bit builds.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
Automatically restrict QPs to avoid quantization (under|over)flow, so you don&#039;t have to.  Will error out if this, combined with insane user constraints, makes encoding impossible.  This makes fprofiling work out of the box again.&lt;br /&gt;
&lt;br /&gt;
Use the Avisynth 2.6 API to detect Avisynth initialization failure and print the associated error (only available in Avisynth 2.6 alphas; doesn&#039;t affect older versions).&lt;br /&gt;
&lt;br /&gt;
Install an x264_config.h containing information about how x264 was configured.  This will allow ffmpeg to link with commercially licensed copies of libx264 without --enable-gpl.&lt;br /&gt;
&lt;br /&gt;
Massive amounts of high bit depth assembly code from Google Code-In (about two dozen functions).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks).&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-December/008070.html Volume 8] ==&lt;br /&gt;
&#039;&#039;12/15/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the eighth x264 development newsletter.  If you missed the first seven, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Weightp analysis now calculates offsets correctly in high bit depth mode.&lt;br /&gt;
&lt;br /&gt;
High bit depth intra pred x86 asm functions are now fixed (and thus re-enabled).&lt;br /&gt;
&lt;br /&gt;
That nasty gnu ld alignment bug on windows (ld refuses to align .bss to 16 bytes even when asked nicely) has been squashed with -fno-zero-initialized-in-bss.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
.gitignore is now even more useful than before.&lt;br /&gt;
&lt;br /&gt;
Another bit of memory saved in high bit depth weightp.&lt;br /&gt;
&lt;br /&gt;
The regression test script now tests interlaced compression.&lt;br /&gt;
&lt;br /&gt;
8x8dct is now allowed with cavlc+lossless and subme&amp;gt;=6, for a slight compression improvement.&lt;br /&gt;
&lt;br /&gt;
Frame-packing SEI support is now in, for official 3D support in x264.&lt;br /&gt;
&lt;br /&gt;
A metric crapload of new high bit depth asm functions are now in (thanks, Google Code-In!)&lt;br /&gt;
&lt;br /&gt;
x264 now supports Windows threads in addition to pthreads.  Thanks to Pegasys Inc. for the original patch.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a paraplegic three-toed sloth swimming down a frozen river of bricks).&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2011-January/008132.html Volume 9] ==&lt;br /&gt;
&#039;&#039;01/10/11&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the ninth x264 development newsletter.  If you missed the&lt;br /&gt;
first eight, this is a regular email containing updates on fixes and&lt;br /&gt;
improvements in the most recent x264 push, along with updates on&lt;br /&gt;
what&#039;s coming next.  Previous versions can be found in the mailing&lt;br /&gt;
list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
The win32 alignment crash issue is actually fixed now.  Apparently gcc doesn&#039;t work right unless you initialize zero arrays explicitly.&lt;br /&gt;
&lt;br /&gt;
High bit depth now compiles with --disable-asm properly again.&lt;br /&gt;
&lt;br /&gt;
SATD predictors with high bit depth work properly with --no-mbtree on.&amp;lt;br&amp;gt;&lt;br /&gt;
*Bug resulted in bizarre/wrong bitrates in CRF mode with --no-mbtree.&lt;br /&gt;
&lt;br /&gt;
The lavf demuxer no longer memory leaks like crazy on inputs with multiple video streams.&lt;br /&gt;
&lt;br /&gt;
Some overflows in VFR ratecontrol with extreme timebases have been fixed.  These affected some actual videos.&lt;br /&gt;
&lt;br /&gt;
SSIM now works properly in 10-bit.&lt;br /&gt;
&lt;br /&gt;
A bug with negative costs that caused assertions on some videos in high bit depth mode has been fixed.&lt;br /&gt;
&lt;br /&gt;
YV12 now works correctly in the resize filter (there was an issue with swapped chroma planes).&lt;br /&gt;
&lt;br /&gt;
The endianness test and as test in configure now work properly in cross-compile mode.&lt;br /&gt;
&lt;br /&gt;
Weightp no longer prints random extra linebreaks to the statsfile.&lt;br /&gt;
&lt;br /&gt;
A few minor improvements have been made to the parameter SEI.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
Some incorrect GCC uninitialized variable warnings have been shut up.&lt;br /&gt;
&lt;br /&gt;
Metric craptons of high bit depth assembly have been added, for significant performance improvements.  Thanks to Google Code-In (now over) and our students for their enormous amount of work, particularly Daniel Kang.&lt;br /&gt;
&lt;br /&gt;
Also a few improvements in 8-bit assembly functions as well.&lt;br /&gt;
&lt;br /&gt;
Check an extra offset in weightp analysis, for improved compression on fades with --weightp 1 (and slightly, but much less, improved with weightp 2).&lt;br /&gt;
&lt;br /&gt;
Improve reference ordering in 3D frame-interleaved mode.&lt;br /&gt;
&lt;br /&gt;
VFR-aware ratecontrol: MB-tree and non-MB-tree ratecontrol will now be aware of how long frames last.  This results in greatly improved quality in VFR video, particularly dedup&#039;d anime and similar content. It is now even MORE important that calling applications give x264&lt;br /&gt;
correct timestamps!  Note this also affects the definition of CRF; higher framerate videos will get lower quality at the same CRF, which should improve how well CRF measures quality (as compared to the human brain itself).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.  The patch is done, but needs review.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&amp;lt;br&amp;gt;&lt;br /&gt;
The patch is done, but needs editing of the help entries.&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.  This was&lt;br /&gt;
delayed due to Google Code-In.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a paraplegic three-toed sloth swimming down a frozen river of bricks while chained to an osmium anchor).&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2011-January/008192.html Volume 10] ==&lt;br /&gt;
&#039;&#039;01/26/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the tenth x264 development newsletter.  If you missed the first nine, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Some asm fixes to high bit depth: fix cases where SSE2-only instructions were used in MMX functions (caused SIGILL on old CPUs).&lt;br /&gt;
&lt;br /&gt;
Fix the cacheline check in cache32 avg2 code (minor speed improvement on some old CPUs).&lt;br /&gt;
&lt;br /&gt;
Fix CPU detection on Windows systems with &amp;gt;= 64 CPUs.  x264 still doesn&#039;t use more than one processor group (it really doesn&#039;t need to), but at least it&#039;ll work now.&lt;br /&gt;
&lt;br /&gt;
Fix reconfiguration of b_tff: make changing field order during encoding work properly.  Required for ffmpeg to signal TFF/BFF, since ffmpeg&#039;s TFF/BFF is signaled per-frame instead of per-stream.&lt;br /&gt;
&lt;br /&gt;
Fix cases where x264_encoder_encode failures (due to malloc failure) could cause x264_encoder_close to crash.&lt;br /&gt;
&lt;br /&gt;
Write the 3D frame packing SEI values more correctly (thanks to Nero for the bug report).&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
Bump all the dates to 2011.&lt;br /&gt;
&lt;br /&gt;
Add some missing values to the non-extended SAR table.&lt;br /&gt;
&lt;br /&gt;
Improve the regression test script to not break with really complex commandlines on OSs with limited filename length, as well as correctly return to the original branch the user is on after testing.&lt;br /&gt;
&lt;br /&gt;
Add an --input-fmt option to serve the same purpose of -f in ffmpeg; useful for cases where ffmpeg can&#039;t successfully probe the format of the input file.&lt;br /&gt;
&lt;br /&gt;
Double the base framerate of frame-sequential 3D files; a &amp;quot;60fps&amp;quot; frame-sequential 3D file is really only 30fps.&lt;br /&gt;
&lt;br /&gt;
Add AVX support to x264&#039;s assembly abstraction layer as well as one example function: still needs the actual AVX code to be written, but x264 can now take advantage of 3-operand instructions.&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.  The patch is done, but needs review.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&amp;lt;br&amp;gt;&lt;br /&gt;
The patch is done, but needs editing of the help entries.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is actually coming along for once this time.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a paraplegic three-toed sloth swimming down a river of frozen helium while chained to an osmium anchor stuck inside a black hole).&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18674</id>
		<title>X264 Development Newsletters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18674"/>
		<updated>2011-01-30T04:25:36Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an archive of the x264 Development Newsletters. &lt;br /&gt;
&lt;br /&gt;
== Volume 1  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/18/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
From now on, with each weekly-ish push of new patches, I&#039;ll try to post a newsletter as well to give an update of what&#039;s going on and the changes. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
Different versions of 64-bit MinGW gcc were inconsistent with regards to whether or not to add a _ prefix to called functions. This broke compilation because the assembly code wouldn&#039;t link in correctly. &lt;br /&gt;
&lt;br /&gt;
Intra refresh got a lot of fixes thanks to bug reports by Chris Brien &amp;amp;lt;chris.brien@tandberg.com&amp;amp;gt;. Because x264 uses column refresh instead of row refresh, it has to be more careful with regards to which pixels it can predict from. This should fix some cases where intra refresh didn&#039;t refresh the whole frame correctly. Furthermore, it turns out that the recovery_frame_cnt syntax element, signaling the length of the intra refresh, is limited by the max frame number. Accordingly, x264 will raise the max frame number to ensure that recovery_frame_cnt is in spec. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
I&#039;ve gone through the file headers and updated them to be more accurate and consistent in terms of dates and authorship. It now also mentions the commercial license, on request from a licensee. &lt;br /&gt;
&lt;br /&gt;
The new --disable-gpl configure option is now added for companies using the commercial license. x264 --version will print both the license information of itself and of the linked libavformat (for decoding). It&#039;ll also warn you if the combination you&#039;ve put together isn&#039;t distributable, such as a nonfree ffmpeg + GPL x264, or a GPL ffmpeg + non-GPL x264. &lt;br /&gt;
&lt;br /&gt;
x264 now passes the &amp;quot;full chroma input&amp;quot; flag to swscale. This should fix this quality issue when using point scaling: http://doom10.org/index.php?topic=585.0 . &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
Kieran Kunhya &amp;amp;lt;kieran@kunhya.com&amp;amp;gt; has finally committed his arbitrary SEI patch, which lets calling apps give x264 any SEI they want to include in the stream. This is useful for closed-captioning, frame packing, and all kinds of other SEIs that x264 doesn&#039;t explicitly support but which the calling application can create itself if necessary. The advantage of giving these to x264 instead of just inserting them separately is that it allows the resulting stream to remain HRD-compliant, since x264 knows they exist. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit-depth input and filtering! x264 supports 10-bit encoding, but currently only takes 8-bit input. This change will finally create a stable API for high bit-depth input and allow users to filter in higher precision. It will also add dithering support to x264CLI for downconversion of high-bit-depth material. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Chroma ME in B-frames will be coming soon, giving an extra bit of compression to those using slower presets. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
After high bit-depth input is complete, a large amount of assembly code will be committed as well, improving high bit-depth encoding performance greatly. &lt;br /&gt;
&lt;br /&gt;
Ubuntu Maverick will include an updated x264, r1653. &lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-September/007808.html Volume 2]  ==&lt;br /&gt;
&#039;&#039;9/27/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
libx264 should now give correct DTS and print the correct bitrate if the input PTS do not start at zero. This doesn&#039;t affect x264CLI, but does affect calling apps that don&#039;t start their PTS at zero. &lt;br /&gt;
&lt;br /&gt;
libx264 ratecontrol should now work correctly in CFR mode with timebase&amp;amp;nbsp;!= 1/fps. As documented, x264 was supposed to ignore the timebase if CFR mode is set (for purposes of ratecontrol), but that&#039;s not what actually happened; things just broke. This should now be fixed. This is necessary for correct behavior with tune=zerolatency in gstreamer. &lt;br /&gt;
&lt;br /&gt;
A missing emms has been added to dump-yuv, fixing some Heisenbug brokenness when dump-yuv was used. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
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&#039;s extra byte, CAVLC&#039;s skip runs). The primary problem, however, was caused by the terrible design of H.264&#039;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. &lt;br /&gt;
&lt;br /&gt;
Chroma mode decision and subpel, mentioned in the last newsletter, is finally in. It&#039;s enabled at subme &amp;amp;gt;= 9 and provides a ~0.4-1% compression improvement. &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
High-bit-depth support has been finished in libx264 and x264cli. The assembly code is still yet to be committed, so it&#039;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&#039;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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-October/007858.html Volume 3]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;10/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the third x264 development newsletter. If you missed the first two, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The sigint handler in x264cli is now volatile, like it should have been. This likely didn&#039;t actually affect anything on any real system, but it&#039;s more correct. &lt;br /&gt;
&lt;br /&gt;
-DNDEBUG broke the filtering system. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
The bugfix from last week regarding intra refresh predicting from topright blocks didn&#039;t work with 8x8dct. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
2-pass ratecontrol now works with CBR HRD. Previously, it ignored filler bits, and thus broke horribly. In general, you don&#039;t need 2-pass for CBR (and it probably doesn&#039;t help), but it should work better now. &lt;br /&gt;
&lt;br /&gt;
A missing mod4-stack check was added; this should fix ICC builds on Phenom CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
The build tree has been cleaned a bit. A bunch of old stuff, like the non-working regression test and doxy, have been removed. &lt;br /&gt;
&lt;br /&gt;
Some of the information in doc/ has been updated to be less absurdly out of date, or at least inform the reader that it is absurdly out of date. &lt;br /&gt;
&lt;br /&gt;
DTS compression has been moved out of the libx264 API and into the muxers, because it&#039;s a giant hack and it was making things ugly and messy (and starting to interfere with ratecontrol). &lt;br /&gt;
&lt;br /&gt;
Various asm functions have been improved, particularly the qpel MC functions. Should help performance a bit on Core 2 and similar CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007920.html Volume 4]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fourth x264 development newsletter. If you missed the first three, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The Altivec SATD gave wrong results with very small strides (e.g. 8). This made output on PPC slightly different from x86, due to different results in lookahead and chroma ME. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
FPS reporting on Windows 64-bit was very imprecise (the timers were only accurate to 1 second). This was due to _ftime using the wrong struct due to the Windows ABI&#039;s complete retardation. This has been fixed by using ftime instead. &lt;br /&gt;
&lt;br /&gt;
ssd_nv12 has been improved to eliminate overflow at high bit depths (this would, in theory, give wrong PSNR). &lt;br /&gt;
&lt;br /&gt;
SATD/SA8D/Hadamard_ac have been improved to eliminate overflow at high bit depths (this would cause wrong analysis results). &lt;br /&gt;
&lt;br /&gt;
Three ratecontrol bugs have been fixed: &lt;br /&gt;
&lt;br /&gt;
#B-frame size prediction has been fixed (it used quantizer instead of linearized qscale). This should improve VBV.&lt;br /&gt;
#Overflow compensation, originally designed for 1-pass ABR, has been disabled with CRF on, as it doesn&#039;t do anything useful with pure CRF and causes very bizarre results with CRF+VBV in areas of extremely high complexity. &lt;br /&gt;
#A bug in the way that clip_qscale caps the amount by which a frame can be higher quality than a previous frame (as a result of attempting to use up extra bits that would otherwise be wasted) has been fixed. This caused CBR to take extremely long times (e.g. seconds) to recover from extreme changes in complexity at low bitrates.&lt;br /&gt;
&lt;br /&gt;
A possible linking problem with lavf has been fixed. &lt;br /&gt;
&lt;br /&gt;
Some MV/ref prefetching code was in the wrong place. Fixing this may result in a tiny performance improvement.&lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
doc/threads.txt has been updated with modern benchmarks. This information may be useful to anyone looking to compare the impact of various threading strategies on quality and performance, as well as get an idea of how well x264 scales over multiple cores at various encoding speeds. &lt;br /&gt;
&lt;br /&gt;
The presets are now addressable numerically (0=ultrafast...9=placebo).&amp;lt;br&amp;gt;&lt;br /&gt;
The exact mappings may change in the future if new presets are added or old presets removed, but they will always be in linear order of fast to slow. &lt;br /&gt;
&lt;br /&gt;
The ffmpeg -vpre error message (if a user doesn&#039;t use a -vpre) has been made more descriptive, to better instruct users about how the ffmpeg -vpre system works. &lt;br /&gt;
&lt;br /&gt;
weightp -1 offset dupes are now disabled in high bit depth mode, as they&#039;re a hack to get around crappy rounding in 8-bit encoding, and thus don&#039;t help in high bit depth. &lt;br /&gt;
&lt;br /&gt;
PSNR and SSIM measurements are now VFR-aware! This means they will take into account the duration of frames. This may result in PSNR and SSIM results appearing dramatically different from other tools when used on variable framerate video. Don&#039;t fret; x264 is correct, they are not. Of course, results will stay the same for constant framerate video. This is the first step to VFR-aware MB-tree. &lt;br /&gt;
&lt;br /&gt;
Quantizer handling has been improved.&amp;lt;br&amp;gt;&lt;br /&gt;
Library change: i_qpplus1 now defaults to X264_QP_AUTO. This doesn&#039;t actually change anything, as X264_QP_AUTO is 0, but this may change in the future. As a reminder, all x264_picture_t structs must be initialized using x264_picture_init or x264_picture_alloc!&amp;lt;br&amp;gt;&lt;br /&gt;
CRF values now make sense in high bit depth: --crf 23 means roughly the same quality in 8-bit or 10-bit, instead of being 4 times higher quality in 10-bit than in 8-bit.&amp;lt;br&amp;gt;&lt;br /&gt;
This means that --qp 0 should be used for lossless, not --crf 0. The latter will not result in lossless compression when in high bit depth mode.&amp;lt;br&amp;gt;&lt;br /&gt;
Bit depth has been added to statsfiles, to prevent users from inadvertently using a statsfile with the wrong bit depth. &lt;br /&gt;
&lt;br /&gt;
Scenecut&#039;s flash detection has been improved to work more sanely in the case of flashes at the end of the videos.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is nearly ready. Speed boost has been measured as about 4.3x and is still improving. &lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is critical for some broadcast applications. Unlike most competing encoders, this VBV Emergency Mode does not drop frames or force all blocks to skip or some similarly extreme step: it adds a &amp;quot;denoising&amp;quot; step to reduce the complexity of the video, which scales upwards until it simply removes all content at the most extreme level. &lt;br /&gt;
&lt;br /&gt;
A pad filter is nearly ready for the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding mostly finished. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007950.html Volume 5]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/19/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fifth x264 development newsletter. If you missed the first four, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
HRD now works correctly when used with intra refresh. Thanks to a certain x264 commercial licensee for the bug report. &lt;br /&gt;
&lt;br /&gt;
QPfile parsing now works as it was supposed to have worked last time: users should be able to omit QP values. &lt;br /&gt;
&lt;br /&gt;
Allocate the correct amount of memory for weightp buffers with weightp + high bit depth (it allocated too much, not too little). &lt;br /&gt;
&lt;br /&gt;
Fix flash detection to work correctly near the end of the keyframe interval. &lt;br /&gt;
&lt;br /&gt;
Fix a crash in dump yuv with some resolutions. &lt;br /&gt;
&lt;br /&gt;
Various fixes have been made to ratecontrol in high-bit-depth mode. &lt;br /&gt;
&lt;br /&gt;
Constrained intra pred is working properly again in all cases. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
x264&#039;s SEI header now indicates whether the build used was GPL or proprietary. &lt;br /&gt;
&lt;br /&gt;
x264 is now compatible with FFMS2&#039;s most recent API break. &lt;br /&gt;
&lt;br /&gt;
configure now logs test programs that failed, not just the error output. &lt;br /&gt;
&lt;br /&gt;
Merge Oskar&#039;s (irock&#039;s) 10-bit asm branch: ~4.4x overall speed boost in high bit depth mode. &lt;br /&gt;
&lt;br /&gt;
Chroma weighted prediction: dramatically improved chroma compression and quality in fades. &lt;br /&gt;
&lt;br /&gt;
Custom cropping rectangle support: users can now specify --crop-rect to add values to the H.264 cropping header. This is supposedly useful for 3D television applications (to allow legacy decoders to access only one view of the image). &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is important for some broadcast applications. &lt;br /&gt;
&lt;br /&gt;
The pad filter and yadif are nearly ready for the x264CLI filter framework. Both now support high bit depth. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding finished and inter coding begun. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks). &lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
Since we started a couple of months ago, over 40 companies have contacted us regarding x264 licensing! &lt;br /&gt;
&lt;br /&gt;
At least one major Blu-ray authoring house is switching to x264 for their commercial Blu-rays. &lt;br /&gt;
&lt;br /&gt;
At least one commercial encoding application based on x264 is currently in the works. An announcement will come Soon™. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/008003.html Volume 6] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/25/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the sixth x264 development newsletter.  If you missed the first five, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Fix some crashes in high bit depth on some compilers due to insufficient array alignment.&lt;br /&gt;
&lt;br /&gt;
Fix a bug in chroma weightp which could cause corruption in rare cases.&lt;br /&gt;
&lt;br /&gt;
Fix some weird issues in the resize filter&#039;s rounding code.&lt;br /&gt;
&lt;br /&gt;
Fix the build on SPARC Solaris 10 machines.&lt;br /&gt;
&lt;br /&gt;
Fix high bit depth mode on SPARC.&lt;br /&gt;
&lt;br /&gt;
Fix an odd issue in VFR input + forced timebase.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
QPmin default is now 0.&lt;br /&gt;
&lt;br /&gt;
x264 --version now prints a lot more useful information.&lt;br /&gt;
&lt;br /&gt;
x264_encoder_reconfig now copies field order flags.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a new API function to return the maximum number of delayed frames with the current parameters (requested by Gstreamer).&lt;br /&gt;
&lt;br /&gt;
Google Code-In is in full swing, with two sets of patches committed:&amp;lt;br&amp;gt;&lt;br /&gt;
SSE versions of some high-bit-depth (i)DCT functions&amp;lt;br&amp;gt;&lt;br /&gt;
x264 now has a totally sweet Python regression test tool.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--weightp 1 is now a better speed tradeoff.  It also doesn&#039;t do any reference duplication, so it&#039;s suitable when encoding for broken decoders that don&#039;t handle reference duplication correctly (while still getting the benefits of fade detection).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks).&lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;A commercial encoding application based on x264 is currently in the works. An announcement will come this week.&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This week? Perhaps I should have said &amp;quot;today&amp;quot;!&lt;br /&gt;
&lt;br /&gt;
Pegasys Inc. switches to x264 for their flagship product, TMPGEnc.&lt;br /&gt;
&lt;br /&gt;
English: http://tmpgenc.pegasys-inc.com/en/press/10_1125.html&lt;br /&gt;
&lt;br /&gt;
日本語: http://tmpgenc.pegasys-inc.com/ja/press/10_1126.html&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-December/008041.html Volume 7] ==&lt;br /&gt;
&#039;&#039;12/07/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the seventh x264 development newsletter.  If you missed the first six, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Fix SPARC and Solaris building (really this time!)&lt;br /&gt;
&lt;br /&gt;
Three timecode input fixes: for nonzero starting pts, for a corner case in auto timebase generation, and fixing a spurious error in case of a frame read error.&lt;br /&gt;
&lt;br /&gt;
Actually fix fittobox resizing code.&lt;br /&gt;
&lt;br /&gt;
Fix incorrect handling of some pixfmts with non-mod2 resolutions in the resize filter.&lt;br /&gt;
&lt;br /&gt;
Fix a file handle leak in libx264 with certain file reading errors in statsfile handling.&lt;br /&gt;
&lt;br /&gt;
Fix intra refresh&#039;s quality masking: the ipratio wasn&#039;t correctly applied in threaded mode.&lt;br /&gt;
&lt;br /&gt;
Fix an overflow in fdct asm in 10-bit builds.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
Automatically restrict QPs to avoid quantization (under|over)flow, so you don&#039;t have to.  Will error out if this, combined with insane user constraints, makes encoding impossible.  This makes fprofiling work out of the box again.&lt;br /&gt;
&lt;br /&gt;
Use the Avisynth 2.6 API to detect Avisynth initialization failure and print the associated error (only available in Avisynth 2.6 alphas; doesn&#039;t affect older versions).&lt;br /&gt;
&lt;br /&gt;
Install an x264_config.h containing information about how x264 was configured.  This will allow ffmpeg to link with commercially licensed copies of libx264 without --enable-gpl.&lt;br /&gt;
&lt;br /&gt;
Massive amounts of high bit depth assembly code from Google Code-In (about two dozen functions).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks).&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-December/008070.html Volume 8] ==&lt;br /&gt;
&#039;&#039;12/15/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the eighth x264 development newsletter.  If you missed the first seven, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Weightp analysis now calculates offsets correctly in high bit depth mode.&lt;br /&gt;
&lt;br /&gt;
High bit depth intra pred x86 asm functions are now fixed (and thus re-enabled).&lt;br /&gt;
&lt;br /&gt;
That nasty gnu ld alignment bug on windows (ld refuses to align .bss to 16 bytes even when asked nicely) has been squashed with -fno-zero-initialized-in-bss.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
.gitignore is now even more useful than before.&lt;br /&gt;
&lt;br /&gt;
Another bit of memory saved in high bit depth weightp.&lt;br /&gt;
&lt;br /&gt;
The regression test script now tests interlaced compression.&lt;br /&gt;
&lt;br /&gt;
8x8dct is now allowed with cavlc+lossless and subme&amp;gt;=6, for a slight compression improvement.&lt;br /&gt;
&lt;br /&gt;
Frame-packing SEI support is now in, for official 3D support in x264.&lt;br /&gt;
&lt;br /&gt;
A metric crapload of new high bit depth asm functions are now in (thanks, Google Code-In!)&lt;br /&gt;
&lt;br /&gt;
x264 now supports Windows threads in addition to pthreads.  Thanks to Pegasys Inc. for the original patch.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a paraplegic three-toed sloth swimming down a frozen river of bricks).&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2011-January/008132.html Volume 9] ==&lt;br /&gt;
&#039;&#039;01/10/11&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the ninth x264 development newsletter.  If you missed the&lt;br /&gt;
first eight, this is a regular email containing updates on fixes and&lt;br /&gt;
improvements in the most recent x264 push, along with updates on&lt;br /&gt;
what&#039;s coming next.  Previous versions can be found in the mailing&lt;br /&gt;
list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
The win32 alignment crash issue is actually fixed now.  Apparently gcc doesn&#039;t work right unless you initialize zero arrays explicitly.&lt;br /&gt;
&lt;br /&gt;
High bit depth now compiles with --disable-asm properly again.&lt;br /&gt;
&lt;br /&gt;
SATD predictors with high bit depth work properly with --no-mbtree on.&amp;lt;br&amp;gt;&lt;br /&gt;
*Bug resulted in bizarre/wrong bitrates in CRF mode with --no-mbtree.&lt;br /&gt;
&lt;br /&gt;
The lavf demuxer no longer memory leaks like crazy on inputs with multiple video streams.&lt;br /&gt;
&lt;br /&gt;
Some overflows in VFR ratecontrol with extreme timebases have been fixed.  These affected some actual videos.&lt;br /&gt;
&lt;br /&gt;
SSIM now works properly in 10-bit.&lt;br /&gt;
&lt;br /&gt;
A bug with negative costs that caused assertions on some videos in high bit depth mode has been fixed.&lt;br /&gt;
&lt;br /&gt;
YV12 now works correctly in the resize filter (there was an issue with swapped chroma planes).&lt;br /&gt;
&lt;br /&gt;
The endianness test and as test in configure now work properly in cross-compile mode.&lt;br /&gt;
&lt;br /&gt;
Weightp no longer prints random extra linebreaks to the statsfile.&lt;br /&gt;
&lt;br /&gt;
A few minor improvements have been made to the parameter SEI.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
Some incorrect GCC uninitialized variable warnings have been shut up.&lt;br /&gt;
&lt;br /&gt;
Metric craptons of high bit depth assembly have been added, for significant performance improvements.  Thanks to Google Code-In (now over) and our students for their enormous amount of work, particularly Daniel Kang.&lt;br /&gt;
&lt;br /&gt;
Also a few improvements in 8-bit assembly functions as well.&lt;br /&gt;
&lt;br /&gt;
Check an extra offset in weightp analysis, for improved compression on fades with --weightp 1 (and slightly, but much less, improved with weightp 2).&lt;br /&gt;
&lt;br /&gt;
Improve reference ordering in 3D frame-interleaved mode.&lt;br /&gt;
&lt;br /&gt;
VFR-aware ratecontrol: MB-tree and non-MB-tree ratecontrol will now be aware of how long frames last.  This results in greatly improved quality in VFR video, particularly dedup&#039;d anime and similar content. It is now even MORE important that calling applications give x264&lt;br /&gt;
correct timestamps!  Note this also affects the definition of CRF; higher framerate videos will get lower quality at the same CRF, which should improve how well CRF measures quality (as compared to the human brain itself).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.  The patch is done, but needs review.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&amp;lt;br&amp;gt;&lt;br /&gt;
The patch is done, but needs editing of the help entries.&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.  This was&lt;br /&gt;
delayed due to Google Code-In.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a paraplegic three-toed sloth swimming down a frozen river of bricks while chained to an osmium anchor).&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18673</id>
		<title>X264 Development Newsletters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18673"/>
		<updated>2011-01-29T05:49:02Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an archive of the x264 Development Newsletters. &lt;br /&gt;
&lt;br /&gt;
== Volume 1  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/18/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
From now on, with each weekly-ish push of new patches, I&#039;ll try to post a newsletter as well to give an update of what&#039;s going on and the changes. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
Different versions of 64-bit MinGW gcc were inconsistent with regards to whether or not to add a _ prefix to called functions. This broke compilation because the assembly code wouldn&#039;t link in correctly. &lt;br /&gt;
&lt;br /&gt;
Intra refresh got a lot of fixes thanks to bug reports by Chris Brien &amp;amp;lt;chris.brien@tandberg.com&amp;amp;gt;. Because x264 uses column refresh instead of row refresh, it has to be more careful with regards to which pixels it can predict from. This should fix some cases where intra refresh didn&#039;t refresh the whole frame correctly. Furthermore, it turns out that the recovery_frame_cnt syntax element, signaling the length of the intra refresh, is limited by the max frame number. Accordingly, x264 will raise the max frame number to ensure that recovery_frame_cnt is in spec. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
I&#039;ve gone through the file headers and updated them to be more accurate and consistent in terms of dates and authorship. It now also mentions the commercial license, on request from a licensee. &lt;br /&gt;
&lt;br /&gt;
The new --disable-gpl configure option is now added for companies using the commercial license. x264 --version will print both the license information of itself and of the linked libavformat (for decoding). It&#039;ll also warn you if the combination you&#039;ve put together isn&#039;t distributable, such as a nonfree ffmpeg + GPL x264, or a GPL ffmpeg + non-GPL x264. &lt;br /&gt;
&lt;br /&gt;
x264 now passes the &amp;quot;full chroma input&amp;quot; flag to swscale. This should fix this quality issue when using point scaling: http://doom10.org/index.php?topic=585.0 . &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
Kieran Kunhya &amp;amp;lt;kieran@kunhya.com&amp;amp;gt; has finally committed his arbitrary SEI patch, which lets calling apps give x264 any SEI they want to include in the stream. This is useful for closed-captioning, frame packing, and all kinds of other SEIs that x264 doesn&#039;t explicitly support but which the calling application can create itself if necessary. The advantage of giving these to x264 instead of just inserting them separately is that it allows the resulting stream to remain HRD-compliant, since x264 knows they exist. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit-depth input and filtering! x264 supports 10-bit encoding, but currently only takes 8-bit input. This change will finally create a stable API for high bit-depth input and allow users to filter in higher precision. It will also add dithering support to x264CLI for downconversion of high-bit-depth material. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Chroma ME in B-frames will be coming soon, giving an extra bit of compression to those using slower presets. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
After high bit-depth input is complete, a large amount of assembly code will be committed as well, improving high bit-depth encoding performance greatly. &lt;br /&gt;
&lt;br /&gt;
Ubuntu Maverick will include an updated x264, r1653. &lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-September/007808.html Volume 2]  ==&lt;br /&gt;
&#039;&#039;9/27/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
libx264 should now give correct DTS and print the correct bitrate if the input PTS do not start at zero. This doesn&#039;t affect x264CLI, but does affect calling apps that don&#039;t start their PTS at zero. &lt;br /&gt;
&lt;br /&gt;
libx264 ratecontrol should now work correctly in CFR mode with timebase&amp;amp;nbsp;!= 1/fps. As documented, x264 was supposed to ignore the timebase if CFR mode is set (for purposes of ratecontrol), but that&#039;s not what actually happened; things just broke. This should now be fixed. This is necessary for correct behavior with tune=zerolatency in gstreamer. &lt;br /&gt;
&lt;br /&gt;
A missing emms has been added to dump-yuv, fixing some Heisenbug brokenness when dump-yuv was used. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
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&#039;s extra byte, CAVLC&#039;s skip runs). The primary problem, however, was caused by the terrible design of H.264&#039;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. &lt;br /&gt;
&lt;br /&gt;
Chroma mode decision and subpel, mentioned in the last newsletter, is finally in. It&#039;s enabled at subme &amp;amp;gt;= 9 and provides a ~0.4-1% compression improvement. &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
High-bit-depth support has been finished in libx264 and x264cli. The assembly code is still yet to be committed, so it&#039;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&#039;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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-October/007858.html Volume 3]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;10/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the third x264 development newsletter. If you missed the first two, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The sigint handler in x264cli is now volatile, like it should have been. This likely didn&#039;t actually affect anything on any real system, but it&#039;s more correct. &lt;br /&gt;
&lt;br /&gt;
-DNDEBUG broke the filtering system. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
The bugfix from last week regarding intra refresh predicting from topright blocks didn&#039;t work with 8x8dct. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
2-pass ratecontrol now works with CBR HRD. Previously, it ignored filler bits, and thus broke horribly. In general, you don&#039;t need 2-pass for CBR (and it probably doesn&#039;t help), but it should work better now. &lt;br /&gt;
&lt;br /&gt;
A missing mod4-stack check was added; this should fix ICC builds on Phenom CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
The build tree has been cleaned a bit. A bunch of old stuff, like the non-working regression test and doxy, have been removed. &lt;br /&gt;
&lt;br /&gt;
Some of the information in doc/ has been updated to be less absurdly out of date, or at least inform the reader that it is absurdly out of date. &lt;br /&gt;
&lt;br /&gt;
DTS compression has been moved out of the libx264 API and into the muxers, because it&#039;s a giant hack and it was making things ugly and messy (and starting to interfere with ratecontrol). &lt;br /&gt;
&lt;br /&gt;
Various asm functions have been improved, particularly the qpel MC functions. Should help performance a bit on Core 2 and similar CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007920.html Volume 4]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fourth x264 development newsletter. If you missed the first three, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The Altivec SATD gave wrong results with very small strides (e.g. 8). This made output on PPC slightly different from x86, due to different results in lookahead and chroma ME. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
FPS reporting on Windows 64-bit was very imprecise (the timers were only accurate to 1 second). This was due to _ftime using the wrong struct due to the Windows ABI&#039;s complete retardation. This has been fixed by using ftime instead. &lt;br /&gt;
&lt;br /&gt;
ssd_nv12 has been improved to eliminate overflow at high bit depths (this would, in theory, give wrong PSNR). &lt;br /&gt;
&lt;br /&gt;
SATD/SA8D/Hadamard_ac have been improved to eliminate overflow at high bit depths (this would cause wrong analysis results). &lt;br /&gt;
&lt;br /&gt;
Three ratecontrol bugs have been fixed: &lt;br /&gt;
&lt;br /&gt;
#B-frame size prediction has been fixed (it used quantizer instead of linearized qscale). This should improve VBV.&lt;br /&gt;
#Overflow compensation, originally designed for 1-pass ABR, has been disabled with CRF on, as it doesn&#039;t do anything useful with pure CRF and causes very bizarre results with CRF+VBV in areas of extremely high complexity. &lt;br /&gt;
#A bug in the way that clip_qscale caps the amount by which a frame can be higher quality than a previous frame (as a result of attempting to use up extra bits that would otherwise be wasted) has been fixed. This caused CBR to take extremely long times (e.g. seconds) to recover from extreme changes in complexity at low bitrates.&lt;br /&gt;
&lt;br /&gt;
A possible linking problem with lavf has been fixed. &lt;br /&gt;
&lt;br /&gt;
Some MV/ref prefetching code was in the wrong place. Fixing this may result in a tiny performance improvement.&lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
doc/threads.txt has been updated with modern benchmarks. This information may be useful to anyone looking to compare the impact of various threading strategies on quality and performance, as well as get an idea of how well x264 scales over multiple cores at various encoding speeds. &lt;br /&gt;
&lt;br /&gt;
The presets are now addressable numerically (0=ultrafast...9=placebo).&amp;lt;br&amp;gt;&lt;br /&gt;
The exact mappings may change in the future if new presets are added or old presets removed, but they will always be in linear order of fast to slow. &lt;br /&gt;
&lt;br /&gt;
The ffmpeg -vpre error message (if a user doesn&#039;t use a -vpre) has been made more descriptive, to better instruct users about how the ffmpeg -vpre system works. &lt;br /&gt;
&lt;br /&gt;
weightp -1 offset dupes are now disabled in high bit depth mode, as they&#039;re a hack to get around crappy rounding in 8-bit encoding, and thus don&#039;t help in high bit depth. &lt;br /&gt;
&lt;br /&gt;
PSNR and SSIM measurements are now VFR-aware! This means they will take into account the duration of frames. This may result in PSNR and SSIM results appearing dramatically different from other tools when used on variable framerate video. Don&#039;t fret; x264 is correct, they are not. Of course, results will stay the same for constant framerate video. This is the first step to VFR-aware MB-tree. &lt;br /&gt;
&lt;br /&gt;
Quantizer handling has been improved.&amp;lt;br&amp;gt;&lt;br /&gt;
Library change: i_qpplus1 now defaults to X264_QP_AUTO. This doesn&#039;t actually change anything, as X264_QP_AUTO is 0, but this may change in the future. As a reminder, all x264_picture_t structs must be initialized using x264_picture_init or x264_picture_alloc!&amp;lt;br&amp;gt;&lt;br /&gt;
CRF values now make sense in high bit depth: --crf 23 means roughly the same quality in 8-bit or 10-bit, instead of being 4 times higher quality in 10-bit than in 8-bit.&amp;lt;br&amp;gt;&lt;br /&gt;
This means that --qp 0 should be used for lossless, not --crf 0. The latter will not result in lossless compression when in high bit depth mode.&amp;lt;br&amp;gt;&lt;br /&gt;
Bit depth has been added to statsfiles, to prevent users from inadvertently using a statsfile with the wrong bit depth. &lt;br /&gt;
&lt;br /&gt;
Scenecut&#039;s flash detection has been improved to work more sanely in the case of flashes at the end of the videos.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is nearly ready. Speed boost has been measured as about 4.3x and is still improving. &lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is critical for some broadcast applications. Unlike most competing encoders, this VBV Emergency Mode does not drop frames or force all blocks to skip or some similarly extreme step: it adds a &amp;quot;denoising&amp;quot; step to reduce the complexity of the video, which scales upwards until it simply removes all content at the most extreme level. &lt;br /&gt;
&lt;br /&gt;
A pad filter is nearly ready for the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding mostly finished. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007950.html Volume 5]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/19/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fifth x264 development newsletter. If you missed the first four, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
HRD now works correctly when used with intra refresh. Thanks to a certain x264 commercial licensee for the bug report. &lt;br /&gt;
&lt;br /&gt;
QPfile parsing now works as it was supposed to have worked last time: users should be able to omit QP values. &lt;br /&gt;
&lt;br /&gt;
Allocate the correct amount of memory for weightp buffers with weightp + high bit depth (it allocated too much, not too little). &lt;br /&gt;
&lt;br /&gt;
Fix flash detection to work correctly near the end of the keyframe interval. &lt;br /&gt;
&lt;br /&gt;
Fix a crash in dump yuv with some resolutions. &lt;br /&gt;
&lt;br /&gt;
Various fixes have been made to ratecontrol in high-bit-depth mode. &lt;br /&gt;
&lt;br /&gt;
Constrained intra pred is working properly again in all cases. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
x264&#039;s SEI header now indicates whether the build used was GPL or proprietary. &lt;br /&gt;
&lt;br /&gt;
x264 is now compatible with FFMS2&#039;s most recent API break. &lt;br /&gt;
&lt;br /&gt;
configure now logs test programs that failed, not just the error output. &lt;br /&gt;
&lt;br /&gt;
Merge Oskar&#039;s (irock&#039;s) 10-bit asm branch: ~4.4x overall speed boost in high bit depth mode. &lt;br /&gt;
&lt;br /&gt;
Chroma weighted prediction: dramatically improved chroma compression and quality in fades. &lt;br /&gt;
&lt;br /&gt;
Custom cropping rectangle support: users can now specify --crop-rect to add values to the H.264 cropping header. This is supposedly useful for 3D television applications (to allow legacy decoders to access only one view of the image). &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is important for some broadcast applications. &lt;br /&gt;
&lt;br /&gt;
The pad filter and yadif are nearly ready for the x264CLI filter framework. Both now support high bit depth. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding finished and inter coding begun. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks). &lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
Since we started a couple of months ago, over 40 companies have contacted us regarding x264 licensing! &lt;br /&gt;
&lt;br /&gt;
At least one major Blu-ray authoring house is switching to x264 for their commercial Blu-rays. &lt;br /&gt;
&lt;br /&gt;
At least one commercial encoding application based on x264 is currently in the works. An announcement will come Soon™. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/008003.html Volume 6] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/25/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the sixth x264 development newsletter.  If you missed the first five, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Fix some crashes in high bit depth on some compilers due to insufficient array alignment.&lt;br /&gt;
&lt;br /&gt;
Fix a bug in chroma weightp which could cause corruption in rare cases.&lt;br /&gt;
&lt;br /&gt;
Fix some weird issues in the resize filter&#039;s rounding code.&lt;br /&gt;
&lt;br /&gt;
Fix the build on SPARC Solaris 10 machines.&lt;br /&gt;
&lt;br /&gt;
Fix high bit depth mode on SPARC.&lt;br /&gt;
&lt;br /&gt;
Fix an odd issue in VFR input + forced timebase.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
QPmin default is now 0.&lt;br /&gt;
&lt;br /&gt;
x264 --version now prints a lot more useful information.&lt;br /&gt;
&lt;br /&gt;
x264_encoder_reconfig now copies field order flags.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a new API function to return the maximum number of delayed frames with the current parameters (requested by Gstreamer).&lt;br /&gt;
&lt;br /&gt;
Google Code-In is in full swing, with two sets of patches committed:&amp;lt;br&amp;gt;&lt;br /&gt;
SSE versions of some high-bit-depth (i)DCT functions&amp;lt;br&amp;gt;&lt;br /&gt;
x264 now has a totally sweet Python regression test tool.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--weightp 1 is now a better speed tradeoff.  It also doesn&#039;t do any reference duplication, so it&#039;s suitable when encoding for broken decoders that don&#039;t handle reference duplication correctly (while still getting the benefits of fade detection).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks).&lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;A commercial encoding application based on x264 is currently in the works. An announcement will come this week.&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This week? Perhaps I should have said &amp;quot;today&amp;quot;!&lt;br /&gt;
&lt;br /&gt;
Pegasys Inc. switches to x264 for their flagship product, TMPGEnc.&lt;br /&gt;
&lt;br /&gt;
English: http://tmpgenc.pegasys-inc.com/en/press/10_1125.html&lt;br /&gt;
&lt;br /&gt;
日本語: http://tmpgenc.pegasys-inc.com/ja/press/10_1126.html&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-December/008041.html Volume 7] ==&lt;br /&gt;
&#039;&#039;12/07/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the seventh x264 development newsletter.  If you missed the first six, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Fix SPARC and Solaris building (really this time!)&lt;br /&gt;
&lt;br /&gt;
Three timecode input fixes: for nonzero starting pts, for a corner case in auto timebase generation, and fixing a spurious error in case of a frame read error.&lt;br /&gt;
&lt;br /&gt;
Actually fix fittobox resizing code.&lt;br /&gt;
&lt;br /&gt;
Fix incorrect handling of some pixfmts with non-mod2 resolutions in the resize filter.&lt;br /&gt;
&lt;br /&gt;
Fix a file handle leak in libx264 with certain file reading errors in statsfile handling.&lt;br /&gt;
&lt;br /&gt;
Fix intra refresh&#039;s quality masking: the ipratio wasn&#039;t correctly applied in threaded mode.&lt;br /&gt;
&lt;br /&gt;
Fix an overflow in fdct asm in 10-bit builds.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
Automatically restrict QPs to avoid quantization (under|over)flow, so you don&#039;t have to.  Will error out if this, combined with insane user constraints, makes encoding impossible.  This makes fprofiling work out of the box again.&lt;br /&gt;
&lt;br /&gt;
Use the Avisynth 2.6 API to detect Avisynth initialization failure and print the associated error (only available in Avisynth 2.6 alphas; doesn&#039;t affect older versions).&lt;br /&gt;
&lt;br /&gt;
Install an x264_config.h containing information about how x264 was configured.  This will allow ffmpeg to link with commercially licensed copies of libx264 without --enable-gpl.&lt;br /&gt;
&lt;br /&gt;
Massive amounts of high bit depth assembly code from Google Code-In (about two dozen functions).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks).&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-December/008070.html Volume 8] ==&lt;br /&gt;
&#039;&#039;12/15/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the eighth x264 development newsletter.  If you missed the first seven, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Weightp analysis now calculates offsets correctly in high bit depth mode.&lt;br /&gt;
&lt;br /&gt;
High bit depth intra pred x86 asm functions are now fixed (and thus re-enabled).&lt;br /&gt;
&lt;br /&gt;
That nasty gnu ld alignment bug on windows (ld refuses to align .bss to 16 bytes even when asked nicely) has been squashed with -fno-zero-initialized-in-bss.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
.gitignore is now even more useful than before.&lt;br /&gt;
&lt;br /&gt;
Another bit of memory saved in high bit depth weightp.&lt;br /&gt;
&lt;br /&gt;
The regression test script now tests interlaced compression.&lt;br /&gt;
&lt;br /&gt;
8x8dct is now allowed with cavlc+lossless and subme&amp;gt;=6, for a slight compression improvement.&lt;br /&gt;
&lt;br /&gt;
Frame-packing SEI support is now in, for official 3D support in x264.&lt;br /&gt;
&lt;br /&gt;
A metric crapload of new high bit depth asm functions are now in (thanks, Google Code-In!)&lt;br /&gt;
&lt;br /&gt;
x264 now supports Windows threads in addition to pthreads.  Thanks to Pegasys Inc. for the original patch.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a paraplegic three-toed sloth swimming down a frozen river of bricks).&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18669</id>
		<title>X264 Development Newsletters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18669"/>
		<updated>2011-01-28T02:45:09Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: /* Volume 7 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an archive of the x264 Development Newsletters. &lt;br /&gt;
&lt;br /&gt;
== Volume 1  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/18/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
From now on, with each weekly-ish push of new patches, I&#039;ll try to post a newsletter as well to give an update of what&#039;s going on and the changes. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
Different versions of 64-bit MinGW gcc were inconsistent with regards to whether or not to add a _ prefix to called functions. This broke compilation because the assembly code wouldn&#039;t link in correctly. &lt;br /&gt;
&lt;br /&gt;
Intra refresh got a lot of fixes thanks to bug reports by Chris Brien &amp;amp;lt;chris.brien@tandberg.com&amp;amp;gt;. Because x264 uses column refresh instead of row refresh, it has to be more careful with regards to which pixels it can predict from. This should fix some cases where intra refresh didn&#039;t refresh the whole frame correctly. Furthermore, it turns out that the recovery_frame_cnt syntax element, signaling the length of the intra refresh, is limited by the max frame number. Accordingly, x264 will raise the max frame number to ensure that recovery_frame_cnt is in spec. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
I&#039;ve gone through the file headers and updated them to be more accurate and consistent in terms of dates and authorship. It now also mentions the commercial license, on request from a licensee. &lt;br /&gt;
&lt;br /&gt;
The new --disable-gpl configure option is now added for companies using the commercial license. x264 --version will print both the license information of itself and of the linked libavformat (for decoding). It&#039;ll also warn you if the combination you&#039;ve put together isn&#039;t distributable, such as a nonfree ffmpeg + GPL x264, or a GPL ffmpeg + non-GPL x264. &lt;br /&gt;
&lt;br /&gt;
x264 now passes the &amp;quot;full chroma input&amp;quot; flag to swscale. This should fix this quality issue when using point scaling: http://doom10.org/index.php?topic=585.0 . &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
Kieran Kunhya &amp;amp;lt;kieran@kunhya.com&amp;amp;gt; has finally committed his arbitrary SEI patch, which lets calling apps give x264 any SEI they want to include in the stream. This is useful for closed-captioning, frame packing, and all kinds of other SEIs that x264 doesn&#039;t explicitly support but which the calling application can create itself if necessary. The advantage of giving these to x264 instead of just inserting them separately is that it allows the resulting stream to remain HRD-compliant, since x264 knows they exist. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit-depth input and filtering! x264 supports 10-bit encoding, but currently only takes 8-bit input. This change will finally create a stable API for high bit-depth input and allow users to filter in higher precision. It will also add dithering support to x264CLI for downconversion of high-bit-depth material. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Chroma ME in B-frames will be coming soon, giving an extra bit of compression to those using slower presets. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
After high bit-depth input is complete, a large amount of assembly code will be committed as well, improving high bit-depth encoding performance greatly. &lt;br /&gt;
&lt;br /&gt;
Ubuntu Maverick will include an updated x264, r1653. &lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-September/007808.html Volume 2]  ==&lt;br /&gt;
&#039;&#039;9/27/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
libx264 should now give correct DTS and print the correct bitrate if the input PTS do not start at zero. This doesn&#039;t affect x264CLI, but does affect calling apps that don&#039;t start their PTS at zero. &lt;br /&gt;
&lt;br /&gt;
libx264 ratecontrol should now work correctly in CFR mode with timebase&amp;amp;nbsp;!= 1/fps. As documented, x264 was supposed to ignore the timebase if CFR mode is set (for purposes of ratecontrol), but that&#039;s not what actually happened; things just broke. This should now be fixed. This is necessary for correct behavior with tune=zerolatency in gstreamer. &lt;br /&gt;
&lt;br /&gt;
A missing emms has been added to dump-yuv, fixing some Heisenbug brokenness when dump-yuv was used. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
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&#039;s extra byte, CAVLC&#039;s skip runs). The primary problem, however, was caused by the terrible design of H.264&#039;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. &lt;br /&gt;
&lt;br /&gt;
Chroma mode decision and subpel, mentioned in the last newsletter, is finally in. It&#039;s enabled at subme &amp;amp;gt;= 9 and provides a ~0.4-1% compression improvement. &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
High-bit-depth support has been finished in libx264 and x264cli. The assembly code is still yet to be committed, so it&#039;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&#039;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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-October/007858.html Volume 3]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;10/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the third x264 development newsletter. If you missed the first two, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The sigint handler in x264cli is now volatile, like it should have been. This likely didn&#039;t actually affect anything on any real system, but it&#039;s more correct. &lt;br /&gt;
&lt;br /&gt;
-DNDEBUG broke the filtering system. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
The bugfix from last week regarding intra refresh predicting from topright blocks didn&#039;t work with 8x8dct. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
2-pass ratecontrol now works with CBR HRD. Previously, it ignored filler bits, and thus broke horribly. In general, you don&#039;t need 2-pass for CBR (and it probably doesn&#039;t help), but it should work better now. &lt;br /&gt;
&lt;br /&gt;
A missing mod4-stack check was added; this should fix ICC builds on Phenom CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
The build tree has been cleaned a bit. A bunch of old stuff, like the non-working regression test and doxy, have been removed. &lt;br /&gt;
&lt;br /&gt;
Some of the information in doc/ has been updated to be less absurdly out of date, or at least inform the reader that it is absurdly out of date. &lt;br /&gt;
&lt;br /&gt;
DTS compression has been moved out of the libx264 API and into the muxers, because it&#039;s a giant hack and it was making things ugly and messy (and starting to interfere with ratecontrol). &lt;br /&gt;
&lt;br /&gt;
Various asm functions have been improved, particularly the qpel MC functions. Should help performance a bit on Core 2 and similar CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007920.html Volume 4]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fourth x264 development newsletter. If you missed the first three, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The Altivec SATD gave wrong results with very small strides (e.g. 8). This made output on PPC slightly different from x86, due to different results in lookahead and chroma ME. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
FPS reporting on Windows 64-bit was very imprecise (the timers were only accurate to 1 second). This was due to _ftime using the wrong struct due to the Windows ABI&#039;s complete retardation. This has been fixed by using ftime instead. &lt;br /&gt;
&lt;br /&gt;
ssd_nv12 has been improved to eliminate overflow at high bit depths (this would, in theory, give wrong PSNR). &lt;br /&gt;
&lt;br /&gt;
SATD/SA8D/Hadamard_ac have been improved to eliminate overflow at high bit depths (this would cause wrong analysis results). &lt;br /&gt;
&lt;br /&gt;
Three ratecontrol bugs have been fixed: &lt;br /&gt;
&lt;br /&gt;
#B-frame size prediction has been fixed (it used quantizer instead of linearized qscale). This should improve VBV.&lt;br /&gt;
#Overflow compensation, originally designed for 1-pass ABR, has been disabled with CRF on, as it doesn&#039;t do anything useful with pure CRF and causes very bizarre results with CRF+VBV in areas of extremely high complexity. &lt;br /&gt;
#A bug in the way that clip_qscale caps the amount by which a frame can be higher quality than a previous frame (as a result of attempting to use up extra bits that would otherwise be wasted) has been fixed. This caused CBR to take extremely long times (e.g. seconds) to recover from extreme changes in complexity at low bitrates.&lt;br /&gt;
&lt;br /&gt;
A possible linking problem with lavf has been fixed. &lt;br /&gt;
&lt;br /&gt;
Some MV/ref prefetching code was in the wrong place. Fixing this may result in a tiny performance improvement.&lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
doc/threads.txt has been updated with modern benchmarks. This information may be useful to anyone looking to compare the impact of various threading strategies on quality and performance, as well as get an idea of how well x264 scales over multiple cores at various encoding speeds. &lt;br /&gt;
&lt;br /&gt;
The presets are now addressable numerically (0=ultrafast...9=placebo).&amp;lt;br&amp;gt;&lt;br /&gt;
The exact mappings may change in the future if new presets are added or old presets removed, but they will always be in linear order of fast to slow. &lt;br /&gt;
&lt;br /&gt;
The ffmpeg -vpre error message (if a user doesn&#039;t use a -vpre) has been made more descriptive, to better instruct users about how the ffmpeg -vpre system works. &lt;br /&gt;
&lt;br /&gt;
weightp -1 offset dupes are now disabled in high bit depth mode, as they&#039;re a hack to get around crappy rounding in 8-bit encoding, and thus don&#039;t help in high bit depth. &lt;br /&gt;
&lt;br /&gt;
PSNR and SSIM measurements are now VFR-aware! This means they will take into account the duration of frames. This may result in PSNR and SSIM results appearing dramatically different from other tools when used on variable framerate video. Don&#039;t fret; x264 is correct, they are not. Of course, results will stay the same for constant framerate video. This is the first step to VFR-aware MB-tree. &lt;br /&gt;
&lt;br /&gt;
Quantizer handling has been improved.&amp;lt;br&amp;gt;&lt;br /&gt;
Library change: i_qpplus1 now defaults to X264_QP_AUTO. This doesn&#039;t actually change anything, as X264_QP_AUTO is 0, but this may change in the future. As a reminder, all x264_picture_t structs must be initialized using x264_picture_init or x264_picture_alloc!&amp;lt;br&amp;gt;&lt;br /&gt;
CRF values now make sense in high bit depth: --crf 23 means roughly the same quality in 8-bit or 10-bit, instead of being 4 times higher quality in 10-bit than in 8-bit.&amp;lt;br&amp;gt;&lt;br /&gt;
This means that --qp 0 should be used for lossless, not --crf 0. The latter will not result in lossless compression when in high bit depth mode.&amp;lt;br&amp;gt;&lt;br /&gt;
Bit depth has been added to statsfiles, to prevent users from inadvertently using a statsfile with the wrong bit depth. &lt;br /&gt;
&lt;br /&gt;
Scenecut&#039;s flash detection has been improved to work more sanely in the case of flashes at the end of the videos.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is nearly ready. Speed boost has been measured as about 4.3x and is still improving. &lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is critical for some broadcast applications. Unlike most competing encoders, this VBV Emergency Mode does not drop frames or force all blocks to skip or some similarly extreme step: it adds a &amp;quot;denoising&amp;quot; step to reduce the complexity of the video, which scales upwards until it simply removes all content at the most extreme level. &lt;br /&gt;
&lt;br /&gt;
A pad filter is nearly ready for the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding mostly finished. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007950.html Volume 5]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/19/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fifth x264 development newsletter. If you missed the first four, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
HRD now works correctly when used with intra refresh. Thanks to a certain x264 commercial licensee for the bug report. &lt;br /&gt;
&lt;br /&gt;
QPfile parsing now works as it was supposed to have worked last time: users should be able to omit QP values. &lt;br /&gt;
&lt;br /&gt;
Allocate the correct amount of memory for weightp buffers with weightp + high bit depth (it allocated too much, not too little). &lt;br /&gt;
&lt;br /&gt;
Fix flash detection to work correctly near the end of the keyframe interval. &lt;br /&gt;
&lt;br /&gt;
Fix a crash in dump yuv with some resolutions. &lt;br /&gt;
&lt;br /&gt;
Various fixes have been made to ratecontrol in high-bit-depth mode. &lt;br /&gt;
&lt;br /&gt;
Constrained intra pred is working properly again in all cases. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
x264&#039;s SEI header now indicates whether the build used was GPL or proprietary. &lt;br /&gt;
&lt;br /&gt;
x264 is now compatible with FFMS2&#039;s most recent API break. &lt;br /&gt;
&lt;br /&gt;
configure now logs test programs that failed, not just the error output. &lt;br /&gt;
&lt;br /&gt;
Merge Oskar&#039;s (irock&#039;s) 10-bit asm branch: ~4.4x overall speed boost in high bit depth mode. &lt;br /&gt;
&lt;br /&gt;
Chroma weighted prediction: dramatically improved chroma compression and quality in fades. &lt;br /&gt;
&lt;br /&gt;
Custom cropping rectangle support: users can now specify --crop-rect to add values to the H.264 cropping header. This is supposedly useful for 3D television applications (to allow legacy decoders to access only one view of the image). &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is important for some broadcast applications. &lt;br /&gt;
&lt;br /&gt;
The pad filter and yadif are nearly ready for the x264CLI filter framework. Both now support high bit depth. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding finished and inter coding begun. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks). &lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
Since we started a couple of months ago, over 40 companies have contacted us regarding x264 licensing! &lt;br /&gt;
&lt;br /&gt;
At least one major Blu-ray authoring house is switching to x264 for their commercial Blu-rays. &lt;br /&gt;
&lt;br /&gt;
At least one commercial encoding application based on x264 is currently in the works. An announcement will come Soon™. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/008003.html Volume 6] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/25/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the sixth x264 development newsletter.  If you missed the first five, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Fix some crashes in high bit depth on some compilers due to insufficient array alignment.&lt;br /&gt;
&lt;br /&gt;
Fix a bug in chroma weightp which could cause corruption in rare cases.&lt;br /&gt;
&lt;br /&gt;
Fix some weird issues in the resize filter&#039;s rounding code.&lt;br /&gt;
&lt;br /&gt;
Fix the build on SPARC Solaris 10 machines.&lt;br /&gt;
&lt;br /&gt;
Fix high bit depth mode on SPARC.&lt;br /&gt;
&lt;br /&gt;
Fix an odd issue in VFR input + forced timebase.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
QPmin default is now 0.&lt;br /&gt;
&lt;br /&gt;
x264 --version now prints a lot more useful information.&lt;br /&gt;
&lt;br /&gt;
x264_encoder_reconfig now copies field order flags.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a new API function to return the maximum number of delayed frames with the current parameters (requested by Gstreamer).&lt;br /&gt;
&lt;br /&gt;
Google Code-In is in full swing, with two sets of patches committed:&amp;lt;br&amp;gt;&lt;br /&gt;
SSE versions of some high-bit-depth (i)DCT functions&amp;lt;br&amp;gt;&lt;br /&gt;
x264 now has a totally sweet Python regression test tool.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--weightp 1 is now a better speed tradeoff.  It also doesn&#039;t do any reference duplication, so it&#039;s suitable when encoding for broken decoders that don&#039;t handle reference duplication correctly (while still getting the benefits of fade detection).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks).&lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;A commercial encoding application based on x264 is currently in the works. An announcement will come this week.&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This week? Perhaps I should have said &amp;quot;today&amp;quot;!&lt;br /&gt;
&lt;br /&gt;
Pegasys Inc. switches to x264 for their flagship product, TMPGEnc.&lt;br /&gt;
&lt;br /&gt;
English: http://tmpgenc.pegasys-inc.com/en/press/10_1125.html&lt;br /&gt;
&lt;br /&gt;
日本語: http://tmpgenc.pegasys-inc.com/ja/press/10_1126.html&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-December/008041.html Volume 7] ==&lt;br /&gt;
&#039;&#039;12/07/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the seventh x264 development newsletter.  If you missed the first six, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Fix SPARC and Solaris building (really this time!)&lt;br /&gt;
&lt;br /&gt;
Three timecode input fixes: for nonzero starting pts, for a corner case in auto timebase generation, and fixing a spurious error in case of a frame read error.&lt;br /&gt;
&lt;br /&gt;
Actually fix fittobox resizing code.&lt;br /&gt;
&lt;br /&gt;
Fix incorrect handling of some pixfmts with non-mod2 resolutions in the resize filter.&lt;br /&gt;
&lt;br /&gt;
Fix a file handle leak in libx264 with certain file reading errors in statsfile handling.&lt;br /&gt;
&lt;br /&gt;
Fix intra refresh&#039;s quality masking: the ipratio wasn&#039;t correctly applied in threaded mode.&lt;br /&gt;
&lt;br /&gt;
Fix an overflow in fdct asm in 10-bit builds.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
Automatically restrict QPs to avoid quantization (under|over)flow, so you don&#039;t have to.  Will error out if this, combined with insane user constraints, makes encoding impossible.  This makes fprofiling work out of the box again.&lt;br /&gt;
&lt;br /&gt;
Use the Avisynth 2.6 API to detect Avisynth initialization failure and print the associated error (only available in Avisynth 2.6 alphas; doesn&#039;t affect older versions).&lt;br /&gt;
&lt;br /&gt;
Install an x264_config.h containing information about how x264 was configured.  This will allow ffmpeg to link with commercially licensed copies of libx264 without --enable-gpl.&lt;br /&gt;
&lt;br /&gt;
Massive amounts of high bit depth assembly code from Google Code-In (about two dozen functions).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks).&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18668</id>
		<title>X264 Development Newsletters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18668"/>
		<updated>2011-01-28T02:42:48Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an archive of the x264 Development Newsletters. &lt;br /&gt;
&lt;br /&gt;
== Volume 1  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/18/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
From now on, with each weekly-ish push of new patches, I&#039;ll try to post a newsletter as well to give an update of what&#039;s going on and the changes. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
Different versions of 64-bit MinGW gcc were inconsistent with regards to whether or not to add a _ prefix to called functions. This broke compilation because the assembly code wouldn&#039;t link in correctly. &lt;br /&gt;
&lt;br /&gt;
Intra refresh got a lot of fixes thanks to bug reports by Chris Brien &amp;amp;lt;chris.brien@tandberg.com&amp;amp;gt;. Because x264 uses column refresh instead of row refresh, it has to be more careful with regards to which pixels it can predict from. This should fix some cases where intra refresh didn&#039;t refresh the whole frame correctly. Furthermore, it turns out that the recovery_frame_cnt syntax element, signaling the length of the intra refresh, is limited by the max frame number. Accordingly, x264 will raise the max frame number to ensure that recovery_frame_cnt is in spec. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
I&#039;ve gone through the file headers and updated them to be more accurate and consistent in terms of dates and authorship. It now also mentions the commercial license, on request from a licensee. &lt;br /&gt;
&lt;br /&gt;
The new --disable-gpl configure option is now added for companies using the commercial license. x264 --version will print both the license information of itself and of the linked libavformat (for decoding). It&#039;ll also warn you if the combination you&#039;ve put together isn&#039;t distributable, such as a nonfree ffmpeg + GPL x264, or a GPL ffmpeg + non-GPL x264. &lt;br /&gt;
&lt;br /&gt;
x264 now passes the &amp;quot;full chroma input&amp;quot; flag to swscale. This should fix this quality issue when using point scaling: http://doom10.org/index.php?topic=585.0 . &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
Kieran Kunhya &amp;amp;lt;kieran@kunhya.com&amp;amp;gt; has finally committed his arbitrary SEI patch, which lets calling apps give x264 any SEI they want to include in the stream. This is useful for closed-captioning, frame packing, and all kinds of other SEIs that x264 doesn&#039;t explicitly support but which the calling application can create itself if necessary. The advantage of giving these to x264 instead of just inserting them separately is that it allows the resulting stream to remain HRD-compliant, since x264 knows they exist. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit-depth input and filtering! x264 supports 10-bit encoding, but currently only takes 8-bit input. This change will finally create a stable API for high bit-depth input and allow users to filter in higher precision. It will also add dithering support to x264CLI for downconversion of high-bit-depth material. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Chroma ME in B-frames will be coming soon, giving an extra bit of compression to those using slower presets. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
After high bit-depth input is complete, a large amount of assembly code will be committed as well, improving high bit-depth encoding performance greatly. &lt;br /&gt;
&lt;br /&gt;
Ubuntu Maverick will include an updated x264, r1653. &lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-September/007808.html Volume 2]  ==&lt;br /&gt;
&#039;&#039;9/27/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
libx264 should now give correct DTS and print the correct bitrate if the input PTS do not start at zero. This doesn&#039;t affect x264CLI, but does affect calling apps that don&#039;t start their PTS at zero. &lt;br /&gt;
&lt;br /&gt;
libx264 ratecontrol should now work correctly in CFR mode with timebase&amp;amp;nbsp;!= 1/fps. As documented, x264 was supposed to ignore the timebase if CFR mode is set (for purposes of ratecontrol), but that&#039;s not what actually happened; things just broke. This should now be fixed. This is necessary for correct behavior with tune=zerolatency in gstreamer. &lt;br /&gt;
&lt;br /&gt;
A missing emms has been added to dump-yuv, fixing some Heisenbug brokenness when dump-yuv was used. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
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&#039;s extra byte, CAVLC&#039;s skip runs). The primary problem, however, was caused by the terrible design of H.264&#039;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. &lt;br /&gt;
&lt;br /&gt;
Chroma mode decision and subpel, mentioned in the last newsletter, is finally in. It&#039;s enabled at subme &amp;amp;gt;= 9 and provides a ~0.4-1% compression improvement. &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
High-bit-depth support has been finished in libx264 and x264cli. The assembly code is still yet to be committed, so it&#039;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&#039;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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-October/007858.html Volume 3]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;10/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the third x264 development newsletter. If you missed the first two, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The sigint handler in x264cli is now volatile, like it should have been. This likely didn&#039;t actually affect anything on any real system, but it&#039;s more correct. &lt;br /&gt;
&lt;br /&gt;
-DNDEBUG broke the filtering system. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
The bugfix from last week regarding intra refresh predicting from topright blocks didn&#039;t work with 8x8dct. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
2-pass ratecontrol now works with CBR HRD. Previously, it ignored filler bits, and thus broke horribly. In general, you don&#039;t need 2-pass for CBR (and it probably doesn&#039;t help), but it should work better now. &lt;br /&gt;
&lt;br /&gt;
A missing mod4-stack check was added; this should fix ICC builds on Phenom CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
The build tree has been cleaned a bit. A bunch of old stuff, like the non-working regression test and doxy, have been removed. &lt;br /&gt;
&lt;br /&gt;
Some of the information in doc/ has been updated to be less absurdly out of date, or at least inform the reader that it is absurdly out of date. &lt;br /&gt;
&lt;br /&gt;
DTS compression has been moved out of the libx264 API and into the muxers, because it&#039;s a giant hack and it was making things ugly and messy (and starting to interfere with ratecontrol). &lt;br /&gt;
&lt;br /&gt;
Various asm functions have been improved, particularly the qpel MC functions. Should help performance a bit on Core 2 and similar CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007920.html Volume 4]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fourth x264 development newsletter. If you missed the first three, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The Altivec SATD gave wrong results with very small strides (e.g. 8). This made output on PPC slightly different from x86, due to different results in lookahead and chroma ME. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
FPS reporting on Windows 64-bit was very imprecise (the timers were only accurate to 1 second). This was due to _ftime using the wrong struct due to the Windows ABI&#039;s complete retardation. This has been fixed by using ftime instead. &lt;br /&gt;
&lt;br /&gt;
ssd_nv12 has been improved to eliminate overflow at high bit depths (this would, in theory, give wrong PSNR). &lt;br /&gt;
&lt;br /&gt;
SATD/SA8D/Hadamard_ac have been improved to eliminate overflow at high bit depths (this would cause wrong analysis results). &lt;br /&gt;
&lt;br /&gt;
Three ratecontrol bugs have been fixed: &lt;br /&gt;
&lt;br /&gt;
#B-frame size prediction has been fixed (it used quantizer instead of linearized qscale). This should improve VBV.&lt;br /&gt;
#Overflow compensation, originally designed for 1-pass ABR, has been disabled with CRF on, as it doesn&#039;t do anything useful with pure CRF and causes very bizarre results with CRF+VBV in areas of extremely high complexity. &lt;br /&gt;
#A bug in the way that clip_qscale caps the amount by which a frame can be higher quality than a previous frame (as a result of attempting to use up extra bits that would otherwise be wasted) has been fixed. This caused CBR to take extremely long times (e.g. seconds) to recover from extreme changes in complexity at low bitrates.&lt;br /&gt;
&lt;br /&gt;
A possible linking problem with lavf has been fixed. &lt;br /&gt;
&lt;br /&gt;
Some MV/ref prefetching code was in the wrong place. Fixing this may result in a tiny performance improvement.&lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
doc/threads.txt has been updated with modern benchmarks. This information may be useful to anyone looking to compare the impact of various threading strategies on quality and performance, as well as get an idea of how well x264 scales over multiple cores at various encoding speeds. &lt;br /&gt;
&lt;br /&gt;
The presets are now addressable numerically (0=ultrafast...9=placebo).&amp;lt;br&amp;gt;&lt;br /&gt;
The exact mappings may change in the future if new presets are added or old presets removed, but they will always be in linear order of fast to slow. &lt;br /&gt;
&lt;br /&gt;
The ffmpeg -vpre error message (if a user doesn&#039;t use a -vpre) has been made more descriptive, to better instruct users about how the ffmpeg -vpre system works. &lt;br /&gt;
&lt;br /&gt;
weightp -1 offset dupes are now disabled in high bit depth mode, as they&#039;re a hack to get around crappy rounding in 8-bit encoding, and thus don&#039;t help in high bit depth. &lt;br /&gt;
&lt;br /&gt;
PSNR and SSIM measurements are now VFR-aware! This means they will take into account the duration of frames. This may result in PSNR and SSIM results appearing dramatically different from other tools when used on variable framerate video. Don&#039;t fret; x264 is correct, they are not. Of course, results will stay the same for constant framerate video. This is the first step to VFR-aware MB-tree. &lt;br /&gt;
&lt;br /&gt;
Quantizer handling has been improved.&amp;lt;br&amp;gt;&lt;br /&gt;
Library change: i_qpplus1 now defaults to X264_QP_AUTO. This doesn&#039;t actually change anything, as X264_QP_AUTO is 0, but this may change in the future. As a reminder, all x264_picture_t structs must be initialized using x264_picture_init or x264_picture_alloc!&amp;lt;br&amp;gt;&lt;br /&gt;
CRF values now make sense in high bit depth: --crf 23 means roughly the same quality in 8-bit or 10-bit, instead of being 4 times higher quality in 10-bit than in 8-bit.&amp;lt;br&amp;gt;&lt;br /&gt;
This means that --qp 0 should be used for lossless, not --crf 0. The latter will not result in lossless compression when in high bit depth mode.&amp;lt;br&amp;gt;&lt;br /&gt;
Bit depth has been added to statsfiles, to prevent users from inadvertently using a statsfile with the wrong bit depth. &lt;br /&gt;
&lt;br /&gt;
Scenecut&#039;s flash detection has been improved to work more sanely in the case of flashes at the end of the videos.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is nearly ready. Speed boost has been measured as about 4.3x and is still improving. &lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is critical for some broadcast applications. Unlike most competing encoders, this VBV Emergency Mode does not drop frames or force all blocks to skip or some similarly extreme step: it adds a &amp;quot;denoising&amp;quot; step to reduce the complexity of the video, which scales upwards until it simply removes all content at the most extreme level. &lt;br /&gt;
&lt;br /&gt;
A pad filter is nearly ready for the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding mostly finished. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007950.html Volume 5]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/19/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fifth x264 development newsletter. If you missed the first four, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
HRD now works correctly when used with intra refresh. Thanks to a certain x264 commercial licensee for the bug report. &lt;br /&gt;
&lt;br /&gt;
QPfile parsing now works as it was supposed to have worked last time: users should be able to omit QP values. &lt;br /&gt;
&lt;br /&gt;
Allocate the correct amount of memory for weightp buffers with weightp + high bit depth (it allocated too much, not too little). &lt;br /&gt;
&lt;br /&gt;
Fix flash detection to work correctly near the end of the keyframe interval. &lt;br /&gt;
&lt;br /&gt;
Fix a crash in dump yuv with some resolutions. &lt;br /&gt;
&lt;br /&gt;
Various fixes have been made to ratecontrol in high-bit-depth mode. &lt;br /&gt;
&lt;br /&gt;
Constrained intra pred is working properly again in all cases. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
x264&#039;s SEI header now indicates whether the build used was GPL or proprietary. &lt;br /&gt;
&lt;br /&gt;
x264 is now compatible with FFMS2&#039;s most recent API break. &lt;br /&gt;
&lt;br /&gt;
configure now logs test programs that failed, not just the error output. &lt;br /&gt;
&lt;br /&gt;
Merge Oskar&#039;s (irock&#039;s) 10-bit asm branch: ~4.4x overall speed boost in high bit depth mode. &lt;br /&gt;
&lt;br /&gt;
Chroma weighted prediction: dramatically improved chroma compression and quality in fades. &lt;br /&gt;
&lt;br /&gt;
Custom cropping rectangle support: users can now specify --crop-rect to add values to the H.264 cropping header. This is supposedly useful for 3D television applications (to allow legacy decoders to access only one view of the image). &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is important for some broadcast applications. &lt;br /&gt;
&lt;br /&gt;
The pad filter and yadif are nearly ready for the x264CLI filter framework. Both now support high bit depth. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding finished and inter coding begun. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks). &lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
Since we started a couple of months ago, over 40 companies have contacted us regarding x264 licensing! &lt;br /&gt;
&lt;br /&gt;
At least one major Blu-ray authoring house is switching to x264 for their commercial Blu-rays. &lt;br /&gt;
&lt;br /&gt;
At least one commercial encoding application based on x264 is currently in the works. An announcement will come Soon™. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/008003.html Volume 6] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/25/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the sixth x264 development newsletter.  If you missed the first five, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Fix some crashes in high bit depth on some compilers due to insufficient array alignment.&lt;br /&gt;
&lt;br /&gt;
Fix a bug in chroma weightp which could cause corruption in rare cases.&lt;br /&gt;
&lt;br /&gt;
Fix some weird issues in the resize filter&#039;s rounding code.&lt;br /&gt;
&lt;br /&gt;
Fix the build on SPARC Solaris 10 machines.&lt;br /&gt;
&lt;br /&gt;
Fix high bit depth mode on SPARC.&lt;br /&gt;
&lt;br /&gt;
Fix an odd issue in VFR input + forced timebase.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
QPmin default is now 0.&lt;br /&gt;
&lt;br /&gt;
x264 --version now prints a lot more useful information.&lt;br /&gt;
&lt;br /&gt;
x264_encoder_reconfig now copies field order flags.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a new API function to return the maximum number of delayed frames with the current parameters (requested by Gstreamer).&lt;br /&gt;
&lt;br /&gt;
Google Code-In is in full swing, with two sets of patches committed:&amp;lt;br&amp;gt;&lt;br /&gt;
SSE versions of some high-bit-depth (i)DCT functions&amp;lt;br&amp;gt;&lt;br /&gt;
x264 now has a totally sweet Python regression test tool.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--weightp 1 is now a better speed tradeoff.  It also doesn&#039;t do any reference duplication, so it&#039;s suitable when encoding for broken decoders that don&#039;t handle reference duplication correctly (while still getting the benefits of fade detection).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks).&lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;A commercial encoding application based on x264 is currently in the works. An announcement will come this week.&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This week? Perhaps I should have said &amp;quot;today&amp;quot;!&lt;br /&gt;
&lt;br /&gt;
Pegasys Inc. switches to x264 for their flagship product, TMPGEnc.&lt;br /&gt;
&lt;br /&gt;
English: http://tmpgenc.pegasys-inc.com/en/press/10_1125.html&lt;br /&gt;
&lt;br /&gt;
日本語: http://tmpgenc.pegasys-inc.com/ja/press/10_1126.html&lt;br /&gt;
&lt;br /&gt;
== Volume 7 ==&lt;br /&gt;
&#039;&#039;12/07/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the seventh x264 development newsletter.  If you missed the first six, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next.  Previous versions can be found in the mailing list archives.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Fix SPARC and Solaris building (really this time!)&lt;br /&gt;
&lt;br /&gt;
Three timecode input fixes: for nonzero starting pts, for a corner case in auto timebase generation, and fixing a spurious error in case of a frame read error.&lt;br /&gt;
&lt;br /&gt;
Actually fix fittobox resizing code.&lt;br /&gt;
&lt;br /&gt;
Fix incorrect handling of some pixfmts with non-mod2 resolutions in the resize filter.&lt;br /&gt;
&lt;br /&gt;
Fix a file handle leak in libx264 with certain file reading errors in statsfile handling.&lt;br /&gt;
&lt;br /&gt;
Fix intra refresh&#039;s quality masking: the ipratio wasn&#039;t correctly applied in threaded mode.&lt;br /&gt;
&lt;br /&gt;
Fix an overflow in fdct asm in 10-bit builds.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
Automatically restrict QPs to avoid quantization (under|over)flow, so you don&#039;t have to.  Will error out if this, combined with insane user constraints, makes encoding impossible.  This makes fprofiling work out of the box again.&lt;br /&gt;
&lt;br /&gt;
Use the Avisynth 2.6 API to detect Avisynth initialization failure and print the associated error (only available in Avisynth 2.6 alphas; doesn&#039;t affect older versions).&lt;br /&gt;
&lt;br /&gt;
Install an x264_config.h containing information about how x264 was configured.  This will allow ffmpeg to link with commercially licensed copies of libx264 without --enable-gpl.&lt;br /&gt;
&lt;br /&gt;
Massive amounts of high bit depth assembly code from Google Code-In (about two dozen functions).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
--device and automatic --level restriction support is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
A per-option help system is in the works, as part of Google Code-In.&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left.  This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.  Basic structure is done, with intra coding finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance.  Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks).&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_TODO&amp;diff=18666</id>
		<title>X264 TODO</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_TODO&amp;diff=18666"/>
		<updated>2011-01-27T06:50:18Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: /* x86 assembly */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains an incomplete list of things available in x264 for you to do.  It&#039;s organized into sections covering various parts of x264.&lt;br /&gt;
&lt;br /&gt;
Some useful resources: [http://www.x264.nl/developers/Dark_Shikari/?dir=./src Dark Shikari&#039;s pile of junk], [http://akuvian.org/src/x264/ Pengvado&#039;s pile of junk].&lt;br /&gt;
&lt;br /&gt;
If you&#039;re interested in doing any of this, drop by #x264dev on Freenode IRC.  There are no experience or educational requirements for doing any of this, though you are expected to know how to code.&lt;br /&gt;
&lt;br /&gt;
Bolded features may have companies willing to sponsor or provide bounties.  This is not complete either; just because it&#039;s not bolded doesn&#039;t mean there aren&#039;t resources out there.  If your company is interested in offering a bounty, drop by IRC.&lt;br /&gt;
&lt;br /&gt;
===Motion Estimation===&lt;br /&gt;
* Sequential elimination (SEA), used for exhaustive search, might be more generally applicable to algorithms like UMH, by letting us skip a lot of SADs.  The downside is we won&#039;t be able to use SAD_X4 anymore.&lt;br /&gt;
* (T)ESA is currently wrong for motion searches done on weightp duplicates.  This effect is miniscule, but it still should be fixed.&lt;br /&gt;
* Hierarchical motion estimation might be a useful way to catch very long motion vectors without the cost of UMH or ESA.  It might also help regularize motion.&lt;br /&gt;
* Somehow take into account the effect of motion vector decision on future blocks.&lt;br /&gt;
** Hierarchical motion estimation&lt;br /&gt;
** Approximations from lookahead MVs&lt;br /&gt;
** Iterative ME (as per Snow)&lt;br /&gt;
** Trellis motion estimation&lt;br /&gt;
* We don&#039;t need to check all 11 predictors all the time for 16x16 fullpel motion search.&lt;br /&gt;
** But how do we know which ones we can afford to skip, and when?&lt;br /&gt;
** Xvid and libtheora have algorithms for this, but the former&#039;s is almost surely 100% useless and the latter doesn&#039;t seem impressive either.&lt;br /&gt;
* libtheora does fullpel motion estimation on the source pixels instead of decoded pixels.  Does this give a better starting point for the subpel search and discourage &amp;quot;weird&amp;quot; MVs?&lt;br /&gt;
* With extremely fast encoding settings (subme 0), can we rip off lookahead MVs instead of doing a real search?&lt;br /&gt;
* Try sub-8x8 partitions in B-frames.  Is it at all useful?&lt;br /&gt;
* Try bidir motion estimation for fullpel.  That is, considering L1&#039;s MV when doing L0 (or vice versa).  Xvid does this.  How much does it help?&lt;br /&gt;
* Fullpel chroma ME?&lt;br /&gt;
** For TESA?&lt;br /&gt;
&lt;br /&gt;
===Intra Analysis===&lt;br /&gt;
* Make the early terminations smarter.  Currently they&#039;re just hacks -- some statistical analysis might be useful.&lt;br /&gt;
* SAD (subme 1) i8x8 vs i4x4 decision is a bit bad.  Can it be improved without significant speed loss?&lt;br /&gt;
&lt;br /&gt;
===Mode Decision===&lt;br /&gt;
* Can we find more ways to skip more motion searches in multiref?&lt;br /&gt;
* On extremely fast encoding settings, fast skip is actually kind of slow.  But anything dumber (e.g. SAD) is completely useless.  Is there some better balance that can be achieved here?&lt;br /&gt;
* See the TODOs for deblock-aware RD in common/deblock.c.&lt;br /&gt;
* Is there a faster way than SA8D/SATD to do 8x8dct vs 4x4dct mode decision?  At very fast settings, the time this uses is nontrivial.&lt;br /&gt;
* Is there a faster way than RD to do 8x8dct vs 4x4dct mode decision that&#039;s still better than SATD?  RD takes over an order of magnitude more time than SATD, so it might be useful to have something in the middle.&lt;br /&gt;
* Is there some value to swapping the mode decision metric from SATD to SA8D if we think that the macroblock will use 8x8dct?  [http://akuvian.org/src/x264/x264_dct8_guess.diff This has been tried before], but only helped if our guess was extremely good (better than we could get in reality).&lt;br /&gt;
* With trellis 2, can we skip most of CABAC and CAVLC bit cost calculation?&lt;br /&gt;
* How about a &amp;quot;brute force&amp;quot; mode decision that takes no shortcuts (no early ref termination in p8x8, no SATD thresholds, etc)?&lt;br /&gt;
&lt;br /&gt;
===Psy===&lt;br /&gt;
* Psy-RD is a hack.  It works, but it&#039;s a hack.  If you apply QNS with Psy-RD as the metric, it goes way overboard and gives terrible results.  This means that Psy-RD only works because normal mode decision is limited in the way it can modify the image to better suit the metric.  Is there a way to make it better?&lt;br /&gt;
* Should RD be linear at all?  Perhaps we should weight more heavily against low quality blocks and also try to ignore minuscule distortion that viewers can&#039;t see.&lt;br /&gt;
* Psy-trellis (and maybe psy-RD?) are too strong at very high QPs.&lt;br /&gt;
* Psy-trellis should be merged with Psy-RD.  There are patches for this, but they probably won&#039;t be committed until psy-RD itself is fixed.&lt;br /&gt;
* RD should take into account local variance.&lt;br /&gt;
* Lambda should be varied on a per-DCT-block basis instead of a per-macroblock basis.&lt;br /&gt;
* Lambda should be picked independent of quantizer (i.e. with greater precision).&lt;br /&gt;
* Classic problem: a block is mostly high complexity but has a small area of low complexity.  How do we judge whether that area is important?  Good example: sharp text on background with film grain; grain gets blurred out because of the text.&lt;br /&gt;
** If we think it&#039;s important all the time, we ruin the quality of many clips that rely on raising complexity on edges (Touhou).&lt;br /&gt;
* Should motion estimation lambda be as high as it is at very high quantizers?  There&#039;s some value to capturing &amp;quot;true motion&amp;quot;...&lt;br /&gt;
* Macroblock tree correlates pretty well with visual perception in that its concept of a &amp;quot;high complexity&amp;quot; matches well with the visual concept.  Except for local illumination changes.  Talk to Dark Shikari for a patch.&lt;br /&gt;
&lt;br /&gt;
===Lookahead===&lt;br /&gt;
* &#039;&#039;&#039;Lookahead should be multithreaded, either by splitting the frame (sliced threads) or running multiple frame analysis calls at once.&#039;&#039;&#039;&lt;br /&gt;
* Temporal MV predictors in lookahead?  There&#039;s a patch for these somewhere, but they biased heavily in favor of B-frames, likely by improving the motion search.&lt;br /&gt;
* Should lookahead use variable lambda based on quantizer (esp. due to adaptive quant)?  If so, should it take into account estimated ratecontrol quantizer, too?  If so, how?&lt;br /&gt;
&lt;br /&gt;
===Quantization===&lt;br /&gt;
* CAVLC &amp;quot;trellis&amp;quot; is a hack.  It works, but it&#039;s a hack.  Make it better.  See the TODOs in encoder/rdo.c.&lt;br /&gt;
* There&#039;s room for something between trellis and deadzone in terms of complexity.  libvpx has a good example -- it biases towards zero-runs in its &amp;quot;medium speed&amp;quot; quantizer.  This can&#039;t be SIMD&#039;d easily, but is still vastly faster than trellis.  A nonlinear quantizer (be more likely to round up larger coefficients) might also be useful.&lt;br /&gt;
* Floyd-Steinberg for quantization?  Try pushing quantization error to nearby DCT coefficients.  Should this go from high to low or low to high?&lt;br /&gt;
* Energy-preserving quantizer -- maintain L1 (or maybe L2?  I&#039;m not sure) energy.  Should we maintain it in the spatial domain (post-iDCT) or residual domain?  Probably the former.&lt;br /&gt;
* Decimation is currently just a ripoff of the JVT recommended algorithm.  Can we do this more optimally?  With RD?&lt;br /&gt;
&lt;br /&gt;
===Transform===&lt;br /&gt;
* Analyze the error characteristics of the fDCT.  Is there any way to make it more accurate without much speed loss?  Particularly at extremely low quantizers, this might help.&lt;br /&gt;
* Before forward transform, run a &amp;quot;blocking filter&amp;quot; that acts as the approximate inverse of the deblock filter.  See [http://akuvian.org/src/x264/Shwang_loopfilter_thesis.pdf this paper].&lt;br /&gt;
&lt;br /&gt;
===Interlacing===&lt;br /&gt;
* &#039;&#039;&#039;Finish adaptive MBAFF.  Talk to horlicks about this one.&#039;&#039;&#039;&lt;br /&gt;
* Make slice-max-mbs/slice-max-size work with interlacing.  Pretty much requires a good portion of adaptive MBAFF.&lt;br /&gt;
* Lookahead currently blend-deinterlaces to get the lowres.  Is this a good idea?  Is there something better that isn&#039;t much slower?&lt;br /&gt;
* Constrained intra + adaptive MBAFF.  Does anyone care about this?&lt;br /&gt;
* PAFF + MBAFF adaptive - PAFF performs better than Adaptive MBAFF on high motion scenes because it can predict from the previous field.&lt;br /&gt;
&lt;br /&gt;
===Weighted Prediction===&lt;br /&gt;
* &#039;&#039;&#039;Make weightp work with interlacing.  Preferably abuse reference duplication to make it useful for MBAFF.&#039;&#039;&#039;&lt;br /&gt;
* Finish K-means decision for weightp.  Talk to DylanZA about getting his current patch for this one.&lt;br /&gt;
* Add explicit weighting for B-frames, too.  This helps in nonlinear fades, among other cases.&lt;br /&gt;
&lt;br /&gt;
===Ratecontrol===&lt;br /&gt;
* VBV might be able to utilize the ability to re-encode a row of the frame for improved accuracy.&lt;br /&gt;
** Maybe re-encode everything in case of an underflow that row-reencoding can&#039;t fix?  This might be better than underflowing.&lt;br /&gt;
* Current per-frame VBV is a hack.  It only adapts per row and is O(N^2), where N is the number of rows.  An O(N) solution would be able to react more often and thus be more accurate.&lt;br /&gt;
* Make the frame size and row size predictors better.  They currently are kind of crappy.&lt;br /&gt;
* Ratecontrol code as a whole is a bit of a mess.  It could be improved.  There&#039;s a lot of cruft left over that is probably not needed now, like qblur.&lt;br /&gt;
* 2-pass VBV is actually more likely to underflow than 1-pass because it doesn&#039;t adapt as aggressively and trusts first pass data a lot.  This trust is often misplaced if the first pass was a fast one.  This should be improved.&lt;br /&gt;
* &amp;quot;Emergency mode&amp;quot; for VBV -- handle cases where abiding by VBV is impossible within normal quantizer bounds.&lt;br /&gt;
** Just force all blocks to skip?&lt;br /&gt;
** Drop frames?&lt;br /&gt;
** Allow QPs higher than 51? (Fake QPs -- just results in &amp;quot;denoising&amp;quot; away DCT coefficients)&lt;br /&gt;
* 2-pass macroblock-tree: if we added the ability to do macroblock-tree on real encoded data, we&#039;d get better results (particularly with repeating patterns and multiref, such as an anime character&#039;s mouth moving).&lt;br /&gt;
* Macroblock-tree: make it more psy-aware.  Maybe we should cap how much it lowers the quantizer on extremely static scenes?  This might tie into the &amp;quot;just-noticeable error&amp;quot; issue in RD.&lt;br /&gt;
&lt;br /&gt;
===GPU===&lt;br /&gt;
* Motion estimation?&lt;br /&gt;
** Methods&lt;br /&gt;
*** Hierarchical?&lt;br /&gt;
*** 2D Wave?&lt;br /&gt;
*** Something else?&lt;br /&gt;
** &amp;quot;Easy&amp;quot;: lookahead motion estimation&lt;br /&gt;
*** Extremely high parallelism, hundreds of frame searches (each with thousands of searches) at once.&lt;br /&gt;
** &amp;quot;Hard&amp;quot;: main motion estimation&lt;br /&gt;
*** Difficult synchronization issues, not as heavily parallel in terms of number of macroblocks, but far more partition sizes and refs to search.&lt;br /&gt;
*** But potentially more useful...&lt;br /&gt;
* Other things?&lt;br /&gt;
&lt;br /&gt;
===x86 assembly===&lt;br /&gt;
* Port functions (where useful) to AVX, talk to Daniel Kang for a patch.&lt;br /&gt;
* Optimize more for the Phenom.&lt;br /&gt;
* Optimize for the upcoming Sandy Bridge.&lt;br /&gt;
* Work more on 10-bit asm.&lt;br /&gt;
* If you read this, join #x264dev on irc://irc.freenode.net and ping holger to commit his local patches.&lt;br /&gt;
* Make a merged SA8D/SATD for the 8x8dct mode decision, since the two share most of their calculation.  Hadamard_ac already does this, but slightly differently.&lt;br /&gt;
&lt;br /&gt;
===Other assembly===&lt;br /&gt;
* NEON assembly is nowhere near complete.&lt;br /&gt;
** Chroma MC needs to be rewritten for NV12 support.&lt;br /&gt;
* Altivec assembly is very lacking.&lt;br /&gt;
* SPARC VIS assembly is only available when high bit-depth is disabled.&lt;br /&gt;
&lt;br /&gt;
===Other CPU optimizations===&lt;br /&gt;
* x264 needs more prefetching.  How many L1 and L2 cache misses (particularly L1) can we get rid of via smart prefetching in the right places?  Warning: this is often hard to benchmark.&lt;br /&gt;
* Different CPUs take different relative times for some functions.  Is this enough (particularly across architectures) to justify different encoding settings for different CPUs?&lt;br /&gt;
&lt;br /&gt;
===Other features===&lt;br /&gt;
* MPEG-2 encoding support&lt;br /&gt;
* VP8 encoding support&lt;br /&gt;
* &#039;&#039;&#039;4:2:2 and 4:4:4 colorspace support&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;RGB?&#039;&#039;&#039;&lt;br /&gt;
* Support for timecodes&lt;br /&gt;
* Merge speedcontrol&lt;br /&gt;
&lt;br /&gt;
===x264CLI===&lt;br /&gt;
* Finish audio support.  Talk to Kovensky about this one.&lt;br /&gt;
* Make the filtering system aware of fullrange vs TV range.&lt;br /&gt;
* Make the filtering system aware of BT.601 vs BT.709.&lt;br /&gt;
* Add more filters.&lt;br /&gt;
** Deinterlacers (YADIF).&lt;br /&gt;
** Denoisers (HQDN3D?).&lt;br /&gt;
** IVTC, decomb?&lt;br /&gt;
* Merge L-SMASH mp4 muxer.&lt;br /&gt;
* Add TS muxing support using HRD.  Talk to kierank about this one.&lt;br /&gt;
* Add --device support.&lt;br /&gt;
* Add automatic --level restriction support.&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_TODO&amp;diff=18665</id>
		<title>X264 TODO</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_TODO&amp;diff=18665"/>
		<updated>2011-01-27T06:46:57Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: /* x86 assembly */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains an incomplete list of things available in x264 for you to do.  It&#039;s organized into sections covering various parts of x264.&lt;br /&gt;
&lt;br /&gt;
Some useful resources: [http://www.x264.nl/developers/Dark_Shikari/?dir=./src Dark Shikari&#039;s pile of junk], [http://akuvian.org/src/x264/ Pengvado&#039;s pile of junk].&lt;br /&gt;
&lt;br /&gt;
If you&#039;re interested in doing any of this, drop by #x264dev on Freenode IRC.  There are no experience or educational requirements for doing any of this, though you are expected to know how to code.&lt;br /&gt;
&lt;br /&gt;
Bolded features may have companies willing to sponsor or provide bounties.  This is not complete either; just because it&#039;s not bolded doesn&#039;t mean there aren&#039;t resources out there.  If your company is interested in offering a bounty, drop by IRC.&lt;br /&gt;
&lt;br /&gt;
===Motion Estimation===&lt;br /&gt;
* Sequential elimination (SEA), used for exhaustive search, might be more generally applicable to algorithms like UMH, by letting us skip a lot of SADs.  The downside is we won&#039;t be able to use SAD_X4 anymore.&lt;br /&gt;
* (T)ESA is currently wrong for motion searches done on weightp duplicates.  This effect is miniscule, but it still should be fixed.&lt;br /&gt;
* Hierarchical motion estimation might be a useful way to catch very long motion vectors without the cost of UMH or ESA.  It might also help regularize motion.&lt;br /&gt;
* Somehow take into account the effect of motion vector decision on future blocks.&lt;br /&gt;
** Hierarchical motion estimation&lt;br /&gt;
** Approximations from lookahead MVs&lt;br /&gt;
** Iterative ME (as per Snow)&lt;br /&gt;
** Trellis motion estimation&lt;br /&gt;
* We don&#039;t need to check all 11 predictors all the time for 16x16 fullpel motion search.&lt;br /&gt;
** But how do we know which ones we can afford to skip, and when?&lt;br /&gt;
** Xvid and libtheora have algorithms for this, but the former&#039;s is almost surely 100% useless and the latter doesn&#039;t seem impressive either.&lt;br /&gt;
* libtheora does fullpel motion estimation on the source pixels instead of decoded pixels.  Does this give a better starting point for the subpel search and discourage &amp;quot;weird&amp;quot; MVs?&lt;br /&gt;
* With extremely fast encoding settings (subme 0), can we rip off lookahead MVs instead of doing a real search?&lt;br /&gt;
* Try sub-8x8 partitions in B-frames.  Is it at all useful?&lt;br /&gt;
* Try bidir motion estimation for fullpel.  That is, considering L1&#039;s MV when doing L0 (or vice versa).  Xvid does this.  How much does it help?&lt;br /&gt;
* Fullpel chroma ME?&lt;br /&gt;
** For TESA?&lt;br /&gt;
&lt;br /&gt;
===Intra Analysis===&lt;br /&gt;
* Make the early terminations smarter.  Currently they&#039;re just hacks -- some statistical analysis might be useful.&lt;br /&gt;
* SAD (subme 1) i8x8 vs i4x4 decision is a bit bad.  Can it be improved without significant speed loss?&lt;br /&gt;
&lt;br /&gt;
===Mode Decision===&lt;br /&gt;
* Can we find more ways to skip more motion searches in multiref?&lt;br /&gt;
* On extremely fast encoding settings, fast skip is actually kind of slow.  But anything dumber (e.g. SAD) is completely useless.  Is there some better balance that can be achieved here?&lt;br /&gt;
* See the TODOs for deblock-aware RD in common/deblock.c.&lt;br /&gt;
* Is there a faster way than SA8D/SATD to do 8x8dct vs 4x4dct mode decision?  At very fast settings, the time this uses is nontrivial.&lt;br /&gt;
* Is there a faster way than RD to do 8x8dct vs 4x4dct mode decision that&#039;s still better than SATD?  RD takes over an order of magnitude more time than SATD, so it might be useful to have something in the middle.&lt;br /&gt;
* Is there some value to swapping the mode decision metric from SATD to SA8D if we think that the macroblock will use 8x8dct?  [http://akuvian.org/src/x264/x264_dct8_guess.diff This has been tried before], but only helped if our guess was extremely good (better than we could get in reality).&lt;br /&gt;
* With trellis 2, can we skip most of CABAC and CAVLC bit cost calculation?&lt;br /&gt;
* How about a &amp;quot;brute force&amp;quot; mode decision that takes no shortcuts (no early ref termination in p8x8, no SATD thresholds, etc)?&lt;br /&gt;
&lt;br /&gt;
===Psy===&lt;br /&gt;
* Psy-RD is a hack.  It works, but it&#039;s a hack.  If you apply QNS with Psy-RD as the metric, it goes way overboard and gives terrible results.  This means that Psy-RD only works because normal mode decision is limited in the way it can modify the image to better suit the metric.  Is there a way to make it better?&lt;br /&gt;
* Should RD be linear at all?  Perhaps we should weight more heavily against low quality blocks and also try to ignore minuscule distortion that viewers can&#039;t see.&lt;br /&gt;
* Psy-trellis (and maybe psy-RD?) are too strong at very high QPs.&lt;br /&gt;
* Psy-trellis should be merged with Psy-RD.  There are patches for this, but they probably won&#039;t be committed until psy-RD itself is fixed.&lt;br /&gt;
* RD should take into account local variance.&lt;br /&gt;
* Lambda should be varied on a per-DCT-block basis instead of a per-macroblock basis.&lt;br /&gt;
* Lambda should be picked independent of quantizer (i.e. with greater precision).&lt;br /&gt;
* Classic problem: a block is mostly high complexity but has a small area of low complexity.  How do we judge whether that area is important?  Good example: sharp text on background with film grain; grain gets blurred out because of the text.&lt;br /&gt;
** If we think it&#039;s important all the time, we ruin the quality of many clips that rely on raising complexity on edges (Touhou).&lt;br /&gt;
* Should motion estimation lambda be as high as it is at very high quantizers?  There&#039;s some value to capturing &amp;quot;true motion&amp;quot;...&lt;br /&gt;
* Macroblock tree correlates pretty well with visual perception in that its concept of a &amp;quot;high complexity&amp;quot; matches well with the visual concept.  Except for local illumination changes.  Talk to Dark Shikari for a patch.&lt;br /&gt;
&lt;br /&gt;
===Lookahead===&lt;br /&gt;
* &#039;&#039;&#039;Lookahead should be multithreaded, either by splitting the frame (sliced threads) or running multiple frame analysis calls at once.&#039;&#039;&#039;&lt;br /&gt;
* Temporal MV predictors in lookahead?  There&#039;s a patch for these somewhere, but they biased heavily in favor of B-frames, likely by improving the motion search.&lt;br /&gt;
* Should lookahead use variable lambda based on quantizer (esp. due to adaptive quant)?  If so, should it take into account estimated ratecontrol quantizer, too?  If so, how?&lt;br /&gt;
&lt;br /&gt;
===Quantization===&lt;br /&gt;
* CAVLC &amp;quot;trellis&amp;quot; is a hack.  It works, but it&#039;s a hack.  Make it better.  See the TODOs in encoder/rdo.c.&lt;br /&gt;
* There&#039;s room for something between trellis and deadzone in terms of complexity.  libvpx has a good example -- it biases towards zero-runs in its &amp;quot;medium speed&amp;quot; quantizer.  This can&#039;t be SIMD&#039;d easily, but is still vastly faster than trellis.  A nonlinear quantizer (be more likely to round up larger coefficients) might also be useful.&lt;br /&gt;
* Floyd-Steinberg for quantization?  Try pushing quantization error to nearby DCT coefficients.  Should this go from high to low or low to high?&lt;br /&gt;
* Energy-preserving quantizer -- maintain L1 (or maybe L2?  I&#039;m not sure) energy.  Should we maintain it in the spatial domain (post-iDCT) or residual domain?  Probably the former.&lt;br /&gt;
* Decimation is currently just a ripoff of the JVT recommended algorithm.  Can we do this more optimally?  With RD?&lt;br /&gt;
&lt;br /&gt;
===Transform===&lt;br /&gt;
* Analyze the error characteristics of the fDCT.  Is there any way to make it more accurate without much speed loss?  Particularly at extremely low quantizers, this might help.&lt;br /&gt;
* Before forward transform, run a &amp;quot;blocking filter&amp;quot; that acts as the approximate inverse of the deblock filter.  See [http://akuvian.org/src/x264/Shwang_loopfilter_thesis.pdf this paper].&lt;br /&gt;
&lt;br /&gt;
===Interlacing===&lt;br /&gt;
* &#039;&#039;&#039;Finish adaptive MBAFF.  Talk to horlicks about this one.&#039;&#039;&#039;&lt;br /&gt;
* Make slice-max-mbs/slice-max-size work with interlacing.  Pretty much requires a good portion of adaptive MBAFF.&lt;br /&gt;
* Lookahead currently blend-deinterlaces to get the lowres.  Is this a good idea?  Is there something better that isn&#039;t much slower?&lt;br /&gt;
* Constrained intra + adaptive MBAFF.  Does anyone care about this?&lt;br /&gt;
* PAFF + MBAFF adaptive - PAFF performs better than Adaptive MBAFF on high motion scenes because it can predict from the previous field.&lt;br /&gt;
&lt;br /&gt;
===Weighted Prediction===&lt;br /&gt;
* &#039;&#039;&#039;Make weightp work with interlacing.  Preferably abuse reference duplication to make it useful for MBAFF.&#039;&#039;&#039;&lt;br /&gt;
* Finish K-means decision for weightp.  Talk to DylanZA about getting his current patch for this one.&lt;br /&gt;
* Add explicit weighting for B-frames, too.  This helps in nonlinear fades, among other cases.&lt;br /&gt;
&lt;br /&gt;
===Ratecontrol===&lt;br /&gt;
* VBV might be able to utilize the ability to re-encode a row of the frame for improved accuracy.&lt;br /&gt;
** Maybe re-encode everything in case of an underflow that row-reencoding can&#039;t fix?  This might be better than underflowing.&lt;br /&gt;
* Current per-frame VBV is a hack.  It only adapts per row and is O(N^2), where N is the number of rows.  An O(N) solution would be able to react more often and thus be more accurate.&lt;br /&gt;
* Make the frame size and row size predictors better.  They currently are kind of crappy.&lt;br /&gt;
* Ratecontrol code as a whole is a bit of a mess.  It could be improved.  There&#039;s a lot of cruft left over that is probably not needed now, like qblur.&lt;br /&gt;
* 2-pass VBV is actually more likely to underflow than 1-pass because it doesn&#039;t adapt as aggressively and trusts first pass data a lot.  This trust is often misplaced if the first pass was a fast one.  This should be improved.&lt;br /&gt;
* &amp;quot;Emergency mode&amp;quot; for VBV -- handle cases where abiding by VBV is impossible within normal quantizer bounds.&lt;br /&gt;
** Just force all blocks to skip?&lt;br /&gt;
** Drop frames?&lt;br /&gt;
** Allow QPs higher than 51? (Fake QPs -- just results in &amp;quot;denoising&amp;quot; away DCT coefficients)&lt;br /&gt;
* 2-pass macroblock-tree: if we added the ability to do macroblock-tree on real encoded data, we&#039;d get better results (particularly with repeating patterns and multiref, such as an anime character&#039;s mouth moving).&lt;br /&gt;
* Macroblock-tree: make it more psy-aware.  Maybe we should cap how much it lowers the quantizer on extremely static scenes?  This might tie into the &amp;quot;just-noticeable error&amp;quot; issue in RD.&lt;br /&gt;
&lt;br /&gt;
===GPU===&lt;br /&gt;
* Motion estimation?&lt;br /&gt;
** Methods&lt;br /&gt;
*** Hierarchical?&lt;br /&gt;
*** 2D Wave?&lt;br /&gt;
*** Something else?&lt;br /&gt;
** &amp;quot;Easy&amp;quot;: lookahead motion estimation&lt;br /&gt;
*** Extremely high parallelism, hundreds of frame searches (each with thousands of searches) at once.&lt;br /&gt;
** &amp;quot;Hard&amp;quot;: main motion estimation&lt;br /&gt;
*** Difficult synchronization issues, not as heavily parallel in terms of number of macroblocks, but far more partition sizes and refs to search.&lt;br /&gt;
*** But potentially more useful...&lt;br /&gt;
* Other things?&lt;br /&gt;
&lt;br /&gt;
===x86 assembly===&lt;br /&gt;
* Port functions (where useful) to AVX, talk to Daniel Kang for a patch.&lt;br /&gt;
* Optimize more for the Phenom.&lt;br /&gt;
* Optimize for the upcoming Sandy Bridge.&lt;br /&gt;
* Work more on 10-bit asm.&lt;br /&gt;
* Convince holger to commit his local patches.&lt;br /&gt;
* Make a merged SA8D/SATD for the 8x8dct mode decision, since the two share most of their calculation.  Hadamard_ac already does this, but slightly differently.&lt;br /&gt;
&lt;br /&gt;
===Other assembly===&lt;br /&gt;
* NEON assembly is nowhere near complete.&lt;br /&gt;
** Chroma MC needs to be rewritten for NV12 support.&lt;br /&gt;
* Altivec assembly is very lacking.&lt;br /&gt;
* SPARC VIS assembly is only available when high bit-depth is disabled.&lt;br /&gt;
&lt;br /&gt;
===Other CPU optimizations===&lt;br /&gt;
* x264 needs more prefetching.  How many L1 and L2 cache misses (particularly L1) can we get rid of via smart prefetching in the right places?  Warning: this is often hard to benchmark.&lt;br /&gt;
* Different CPUs take different relative times for some functions.  Is this enough (particularly across architectures) to justify different encoding settings for different CPUs?&lt;br /&gt;
&lt;br /&gt;
===Other features===&lt;br /&gt;
* MPEG-2 encoding support&lt;br /&gt;
* VP8 encoding support&lt;br /&gt;
* &#039;&#039;&#039;4:2:2 and 4:4:4 colorspace support&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;RGB?&#039;&#039;&#039;&lt;br /&gt;
* Support for timecodes&lt;br /&gt;
* Merge speedcontrol&lt;br /&gt;
&lt;br /&gt;
===x264CLI===&lt;br /&gt;
* Finish audio support.  Talk to Kovensky about this one.&lt;br /&gt;
* Make the filtering system aware of fullrange vs TV range.&lt;br /&gt;
* Make the filtering system aware of BT.601 vs BT.709.&lt;br /&gt;
* Add more filters.&lt;br /&gt;
** Deinterlacers (YADIF).&lt;br /&gt;
** Denoisers (HQDN3D?).&lt;br /&gt;
** IVTC, decomb?&lt;br /&gt;
* Merge L-SMASH mp4 muxer.&lt;br /&gt;
* Add TS muxing support using HRD.  Talk to kierank about this one.&lt;br /&gt;
* Add --device support.&lt;br /&gt;
* Add automatic --level restriction support.&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_TODO&amp;diff=18664</id>
		<title>X264 TODO</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_TODO&amp;diff=18664"/>
		<updated>2011-01-27T06:45:52Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: /* x86 assembly */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains an incomplete list of things available in x264 for you to do.  It&#039;s organized into sections covering various parts of x264.&lt;br /&gt;
&lt;br /&gt;
Some useful resources: [http://www.x264.nl/developers/Dark_Shikari/?dir=./src Dark Shikari&#039;s pile of junk], [http://akuvian.org/src/x264/ Pengvado&#039;s pile of junk].&lt;br /&gt;
&lt;br /&gt;
If you&#039;re interested in doing any of this, drop by #x264dev on Freenode IRC.  There are no experience or educational requirements for doing any of this, though you are expected to know how to code.&lt;br /&gt;
&lt;br /&gt;
Bolded features may have companies willing to sponsor or provide bounties.  This is not complete either; just because it&#039;s not bolded doesn&#039;t mean there aren&#039;t resources out there.  If your company is interested in offering a bounty, drop by IRC.&lt;br /&gt;
&lt;br /&gt;
===Motion Estimation===&lt;br /&gt;
* Sequential elimination (SEA), used for exhaustive search, might be more generally applicable to algorithms like UMH, by letting us skip a lot of SADs.  The downside is we won&#039;t be able to use SAD_X4 anymore.&lt;br /&gt;
* (T)ESA is currently wrong for motion searches done on weightp duplicates.  This effect is miniscule, but it still should be fixed.&lt;br /&gt;
* Hierarchical motion estimation might be a useful way to catch very long motion vectors without the cost of UMH or ESA.  It might also help regularize motion.&lt;br /&gt;
* Somehow take into account the effect of motion vector decision on future blocks.&lt;br /&gt;
** Hierarchical motion estimation&lt;br /&gt;
** Approximations from lookahead MVs&lt;br /&gt;
** Iterative ME (as per Snow)&lt;br /&gt;
** Trellis motion estimation&lt;br /&gt;
* We don&#039;t need to check all 11 predictors all the time for 16x16 fullpel motion search.&lt;br /&gt;
** But how do we know which ones we can afford to skip, and when?&lt;br /&gt;
** Xvid and libtheora have algorithms for this, but the former&#039;s is almost surely 100% useless and the latter doesn&#039;t seem impressive either.&lt;br /&gt;
* libtheora does fullpel motion estimation on the source pixels instead of decoded pixels.  Does this give a better starting point for the subpel search and discourage &amp;quot;weird&amp;quot; MVs?&lt;br /&gt;
* With extremely fast encoding settings (subme 0), can we rip off lookahead MVs instead of doing a real search?&lt;br /&gt;
* Try sub-8x8 partitions in B-frames.  Is it at all useful?&lt;br /&gt;
* Try bidir motion estimation for fullpel.  That is, considering L1&#039;s MV when doing L0 (or vice versa).  Xvid does this.  How much does it help?&lt;br /&gt;
* Fullpel chroma ME?&lt;br /&gt;
** For TESA?&lt;br /&gt;
&lt;br /&gt;
===Intra Analysis===&lt;br /&gt;
* Make the early terminations smarter.  Currently they&#039;re just hacks -- some statistical analysis might be useful.&lt;br /&gt;
* SAD (subme 1) i8x8 vs i4x4 decision is a bit bad.  Can it be improved without significant speed loss?&lt;br /&gt;
&lt;br /&gt;
===Mode Decision===&lt;br /&gt;
* Can we find more ways to skip more motion searches in multiref?&lt;br /&gt;
* On extremely fast encoding settings, fast skip is actually kind of slow.  But anything dumber (e.g. SAD) is completely useless.  Is there some better balance that can be achieved here?&lt;br /&gt;
* See the TODOs for deblock-aware RD in common/deblock.c.&lt;br /&gt;
* Is there a faster way than SA8D/SATD to do 8x8dct vs 4x4dct mode decision?  At very fast settings, the time this uses is nontrivial.&lt;br /&gt;
* Is there a faster way than RD to do 8x8dct vs 4x4dct mode decision that&#039;s still better than SATD?  RD takes over an order of magnitude more time than SATD, so it might be useful to have something in the middle.&lt;br /&gt;
* Is there some value to swapping the mode decision metric from SATD to SA8D if we think that the macroblock will use 8x8dct?  [http://akuvian.org/src/x264/x264_dct8_guess.diff This has been tried before], but only helped if our guess was extremely good (better than we could get in reality).&lt;br /&gt;
* With trellis 2, can we skip most of CABAC and CAVLC bit cost calculation?&lt;br /&gt;
* How about a &amp;quot;brute force&amp;quot; mode decision that takes no shortcuts (no early ref termination in p8x8, no SATD thresholds, etc)?&lt;br /&gt;
&lt;br /&gt;
===Psy===&lt;br /&gt;
* Psy-RD is a hack.  It works, but it&#039;s a hack.  If you apply QNS with Psy-RD as the metric, it goes way overboard and gives terrible results.  This means that Psy-RD only works because normal mode decision is limited in the way it can modify the image to better suit the metric.  Is there a way to make it better?&lt;br /&gt;
* Should RD be linear at all?  Perhaps we should weight more heavily against low quality blocks and also try to ignore minuscule distortion that viewers can&#039;t see.&lt;br /&gt;
* Psy-trellis (and maybe psy-RD?) are too strong at very high QPs.&lt;br /&gt;
* Psy-trellis should be merged with Psy-RD.  There are patches for this, but they probably won&#039;t be committed until psy-RD itself is fixed.&lt;br /&gt;
* RD should take into account local variance.&lt;br /&gt;
* Lambda should be varied on a per-DCT-block basis instead of a per-macroblock basis.&lt;br /&gt;
* Lambda should be picked independent of quantizer (i.e. with greater precision).&lt;br /&gt;
* Classic problem: a block is mostly high complexity but has a small area of low complexity.  How do we judge whether that area is important?  Good example: sharp text on background with film grain; grain gets blurred out because of the text.&lt;br /&gt;
** If we think it&#039;s important all the time, we ruin the quality of many clips that rely on raising complexity on edges (Touhou).&lt;br /&gt;
* Should motion estimation lambda be as high as it is at very high quantizers?  There&#039;s some value to capturing &amp;quot;true motion&amp;quot;...&lt;br /&gt;
* Macroblock tree correlates pretty well with visual perception in that its concept of a &amp;quot;high complexity&amp;quot; matches well with the visual concept.  Except for local illumination changes.  Talk to Dark Shikari for a patch.&lt;br /&gt;
&lt;br /&gt;
===Lookahead===&lt;br /&gt;
* &#039;&#039;&#039;Lookahead should be multithreaded, either by splitting the frame (sliced threads) or running multiple frame analysis calls at once.&#039;&#039;&#039;&lt;br /&gt;
* Temporal MV predictors in lookahead?  There&#039;s a patch for these somewhere, but they biased heavily in favor of B-frames, likely by improving the motion search.&lt;br /&gt;
* Should lookahead use variable lambda based on quantizer (esp. due to adaptive quant)?  If so, should it take into account estimated ratecontrol quantizer, too?  If so, how?&lt;br /&gt;
&lt;br /&gt;
===Quantization===&lt;br /&gt;
* CAVLC &amp;quot;trellis&amp;quot; is a hack.  It works, but it&#039;s a hack.  Make it better.  See the TODOs in encoder/rdo.c.&lt;br /&gt;
* There&#039;s room for something between trellis and deadzone in terms of complexity.  libvpx has a good example -- it biases towards zero-runs in its &amp;quot;medium speed&amp;quot; quantizer.  This can&#039;t be SIMD&#039;d easily, but is still vastly faster than trellis.  A nonlinear quantizer (be more likely to round up larger coefficients) might also be useful.&lt;br /&gt;
* Floyd-Steinberg for quantization?  Try pushing quantization error to nearby DCT coefficients.  Should this go from high to low or low to high?&lt;br /&gt;
* Energy-preserving quantizer -- maintain L1 (or maybe L2?  I&#039;m not sure) energy.  Should we maintain it in the spatial domain (post-iDCT) or residual domain?  Probably the former.&lt;br /&gt;
* Decimation is currently just a ripoff of the JVT recommended algorithm.  Can we do this more optimally?  With RD?&lt;br /&gt;
&lt;br /&gt;
===Transform===&lt;br /&gt;
* Analyze the error characteristics of the fDCT.  Is there any way to make it more accurate without much speed loss?  Particularly at extremely low quantizers, this might help.&lt;br /&gt;
* Before forward transform, run a &amp;quot;blocking filter&amp;quot; that acts as the approximate inverse of the deblock filter.  See [http://akuvian.org/src/x264/Shwang_loopfilter_thesis.pdf this paper].&lt;br /&gt;
&lt;br /&gt;
===Interlacing===&lt;br /&gt;
* &#039;&#039;&#039;Finish adaptive MBAFF.  Talk to horlicks about this one.&#039;&#039;&#039;&lt;br /&gt;
* Make slice-max-mbs/slice-max-size work with interlacing.  Pretty much requires a good portion of adaptive MBAFF.&lt;br /&gt;
* Lookahead currently blend-deinterlaces to get the lowres.  Is this a good idea?  Is there something better that isn&#039;t much slower?&lt;br /&gt;
* Constrained intra + adaptive MBAFF.  Does anyone care about this?&lt;br /&gt;
* PAFF + MBAFF adaptive - PAFF performs better than Adaptive MBAFF on high motion scenes because it can predict from the previous field.&lt;br /&gt;
&lt;br /&gt;
===Weighted Prediction===&lt;br /&gt;
* &#039;&#039;&#039;Make weightp work with interlacing.  Preferably abuse reference duplication to make it useful for MBAFF.&#039;&#039;&#039;&lt;br /&gt;
* Finish K-means decision for weightp.  Talk to DylanZA about getting his current patch for this one.&lt;br /&gt;
* Add explicit weighting for B-frames, too.  This helps in nonlinear fades, among other cases.&lt;br /&gt;
&lt;br /&gt;
===Ratecontrol===&lt;br /&gt;
* VBV might be able to utilize the ability to re-encode a row of the frame for improved accuracy.&lt;br /&gt;
** Maybe re-encode everything in case of an underflow that row-reencoding can&#039;t fix?  This might be better than underflowing.&lt;br /&gt;
* Current per-frame VBV is a hack.  It only adapts per row and is O(N^2), where N is the number of rows.  An O(N) solution would be able to react more often and thus be more accurate.&lt;br /&gt;
* Make the frame size and row size predictors better.  They currently are kind of crappy.&lt;br /&gt;
* Ratecontrol code as a whole is a bit of a mess.  It could be improved.  There&#039;s a lot of cruft left over that is probably not needed now, like qblur.&lt;br /&gt;
* 2-pass VBV is actually more likely to underflow than 1-pass because it doesn&#039;t adapt as aggressively and trusts first pass data a lot.  This trust is often misplaced if the first pass was a fast one.  This should be improved.&lt;br /&gt;
* &amp;quot;Emergency mode&amp;quot; for VBV -- handle cases where abiding by VBV is impossible within normal quantizer bounds.&lt;br /&gt;
** Just force all blocks to skip?&lt;br /&gt;
** Drop frames?&lt;br /&gt;
** Allow QPs higher than 51? (Fake QPs -- just results in &amp;quot;denoising&amp;quot; away DCT coefficients)&lt;br /&gt;
* 2-pass macroblock-tree: if we added the ability to do macroblock-tree on real encoded data, we&#039;d get better results (particularly with repeating patterns and multiref, such as an anime character&#039;s mouth moving).&lt;br /&gt;
* Macroblock-tree: make it more psy-aware.  Maybe we should cap how much it lowers the quantizer on extremely static scenes?  This might tie into the &amp;quot;just-noticeable error&amp;quot; issue in RD.&lt;br /&gt;
&lt;br /&gt;
===GPU===&lt;br /&gt;
* Motion estimation?&lt;br /&gt;
** Methods&lt;br /&gt;
*** Hierarchical?&lt;br /&gt;
*** 2D Wave?&lt;br /&gt;
*** Something else?&lt;br /&gt;
** &amp;quot;Easy&amp;quot;: lookahead motion estimation&lt;br /&gt;
*** Extremely high parallelism, hundreds of frame searches (each with thousands of searches) at once.&lt;br /&gt;
** &amp;quot;Hard&amp;quot;: main motion estimation&lt;br /&gt;
*** Difficult synchronization issues, not as heavily parallel in terms of number of macroblocks, but far more partition sizes and refs to search.&lt;br /&gt;
*** But potentially more useful...&lt;br /&gt;
* Other things?&lt;br /&gt;
&lt;br /&gt;
===x86 assembly===&lt;br /&gt;
* Optimize more for the Phenom.&lt;br /&gt;
* Optimize for the upcoming Sandy Bridge.&lt;br /&gt;
* Work more on 10-bit asm.&lt;br /&gt;
* Convince holger to commit his local patches.&lt;br /&gt;
* Make a merged SA8D/SATD for the 8x8dct mode decision, since the two share most of their calculation.  Hadamard_ac already does this, but slightly differently.&lt;br /&gt;
&lt;br /&gt;
===Other assembly===&lt;br /&gt;
* NEON assembly is nowhere near complete.&lt;br /&gt;
** Chroma MC needs to be rewritten for NV12 support.&lt;br /&gt;
* Altivec assembly is very lacking.&lt;br /&gt;
* SPARC VIS assembly is only available when high bit-depth is disabled.&lt;br /&gt;
&lt;br /&gt;
===Other CPU optimizations===&lt;br /&gt;
* x264 needs more prefetching.  How many L1 and L2 cache misses (particularly L1) can we get rid of via smart prefetching in the right places?  Warning: this is often hard to benchmark.&lt;br /&gt;
* Different CPUs take different relative times for some functions.  Is this enough (particularly across architectures) to justify different encoding settings for different CPUs?&lt;br /&gt;
&lt;br /&gt;
===Other features===&lt;br /&gt;
* MPEG-2 encoding support&lt;br /&gt;
* VP8 encoding support&lt;br /&gt;
* &#039;&#039;&#039;4:2:2 and 4:4:4 colorspace support&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;RGB?&#039;&#039;&#039;&lt;br /&gt;
* Support for timecodes&lt;br /&gt;
* Merge speedcontrol&lt;br /&gt;
&lt;br /&gt;
===x264CLI===&lt;br /&gt;
* Finish audio support.  Talk to Kovensky about this one.&lt;br /&gt;
* Make the filtering system aware of fullrange vs TV range.&lt;br /&gt;
* Make the filtering system aware of BT.601 vs BT.709.&lt;br /&gt;
* Add more filters.&lt;br /&gt;
** Deinterlacers (YADIF).&lt;br /&gt;
** Denoisers (HQDN3D?).&lt;br /&gt;
** IVTC, decomb?&lt;br /&gt;
* Merge L-SMASH mp4 muxer.&lt;br /&gt;
* Add TS muxing support using HRD.  Talk to kierank about this one.&lt;br /&gt;
* Add --device support.&lt;br /&gt;
* Add automatic --level restriction support.&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_TODO&amp;diff=18663</id>
		<title>X264 TODO</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_TODO&amp;diff=18663"/>
		<updated>2011-01-27T06:45:01Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: /* GPU */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains an incomplete list of things available in x264 for you to do.  It&#039;s organized into sections covering various parts of x264.&lt;br /&gt;
&lt;br /&gt;
Some useful resources: [http://www.x264.nl/developers/Dark_Shikari/?dir=./src Dark Shikari&#039;s pile of junk], [http://akuvian.org/src/x264/ Pengvado&#039;s pile of junk].&lt;br /&gt;
&lt;br /&gt;
If you&#039;re interested in doing any of this, drop by #x264dev on Freenode IRC.  There are no experience or educational requirements for doing any of this, though you are expected to know how to code.&lt;br /&gt;
&lt;br /&gt;
Bolded features may have companies willing to sponsor or provide bounties.  This is not complete either; just because it&#039;s not bolded doesn&#039;t mean there aren&#039;t resources out there.  If your company is interested in offering a bounty, drop by IRC.&lt;br /&gt;
&lt;br /&gt;
===Motion Estimation===&lt;br /&gt;
* Sequential elimination (SEA), used for exhaustive search, might be more generally applicable to algorithms like UMH, by letting us skip a lot of SADs.  The downside is we won&#039;t be able to use SAD_X4 anymore.&lt;br /&gt;
* (T)ESA is currently wrong for motion searches done on weightp duplicates.  This effect is miniscule, but it still should be fixed.&lt;br /&gt;
* Hierarchical motion estimation might be a useful way to catch very long motion vectors without the cost of UMH or ESA.  It might also help regularize motion.&lt;br /&gt;
* Somehow take into account the effect of motion vector decision on future blocks.&lt;br /&gt;
** Hierarchical motion estimation&lt;br /&gt;
** Approximations from lookahead MVs&lt;br /&gt;
** Iterative ME (as per Snow)&lt;br /&gt;
** Trellis motion estimation&lt;br /&gt;
* We don&#039;t need to check all 11 predictors all the time for 16x16 fullpel motion search.&lt;br /&gt;
** But how do we know which ones we can afford to skip, and when?&lt;br /&gt;
** Xvid and libtheora have algorithms for this, but the former&#039;s is almost surely 100% useless and the latter doesn&#039;t seem impressive either.&lt;br /&gt;
* libtheora does fullpel motion estimation on the source pixels instead of decoded pixels.  Does this give a better starting point for the subpel search and discourage &amp;quot;weird&amp;quot; MVs?&lt;br /&gt;
* With extremely fast encoding settings (subme 0), can we rip off lookahead MVs instead of doing a real search?&lt;br /&gt;
* Try sub-8x8 partitions in B-frames.  Is it at all useful?&lt;br /&gt;
* Try bidir motion estimation for fullpel.  That is, considering L1&#039;s MV when doing L0 (or vice versa).  Xvid does this.  How much does it help?&lt;br /&gt;
* Fullpel chroma ME?&lt;br /&gt;
** For TESA?&lt;br /&gt;
&lt;br /&gt;
===Intra Analysis===&lt;br /&gt;
* Make the early terminations smarter.  Currently they&#039;re just hacks -- some statistical analysis might be useful.&lt;br /&gt;
* SAD (subme 1) i8x8 vs i4x4 decision is a bit bad.  Can it be improved without significant speed loss?&lt;br /&gt;
&lt;br /&gt;
===Mode Decision===&lt;br /&gt;
* Can we find more ways to skip more motion searches in multiref?&lt;br /&gt;
* On extremely fast encoding settings, fast skip is actually kind of slow.  But anything dumber (e.g. SAD) is completely useless.  Is there some better balance that can be achieved here?&lt;br /&gt;
* See the TODOs for deblock-aware RD in common/deblock.c.&lt;br /&gt;
* Is there a faster way than SA8D/SATD to do 8x8dct vs 4x4dct mode decision?  At very fast settings, the time this uses is nontrivial.&lt;br /&gt;
* Is there a faster way than RD to do 8x8dct vs 4x4dct mode decision that&#039;s still better than SATD?  RD takes over an order of magnitude more time than SATD, so it might be useful to have something in the middle.&lt;br /&gt;
* Is there some value to swapping the mode decision metric from SATD to SA8D if we think that the macroblock will use 8x8dct?  [http://akuvian.org/src/x264/x264_dct8_guess.diff This has been tried before], but only helped if our guess was extremely good (better than we could get in reality).&lt;br /&gt;
* With trellis 2, can we skip most of CABAC and CAVLC bit cost calculation?&lt;br /&gt;
* How about a &amp;quot;brute force&amp;quot; mode decision that takes no shortcuts (no early ref termination in p8x8, no SATD thresholds, etc)?&lt;br /&gt;
&lt;br /&gt;
===Psy===&lt;br /&gt;
* Psy-RD is a hack.  It works, but it&#039;s a hack.  If you apply QNS with Psy-RD as the metric, it goes way overboard and gives terrible results.  This means that Psy-RD only works because normal mode decision is limited in the way it can modify the image to better suit the metric.  Is there a way to make it better?&lt;br /&gt;
* Should RD be linear at all?  Perhaps we should weight more heavily against low quality blocks and also try to ignore minuscule distortion that viewers can&#039;t see.&lt;br /&gt;
* Psy-trellis (and maybe psy-RD?) are too strong at very high QPs.&lt;br /&gt;
* Psy-trellis should be merged with Psy-RD.  There are patches for this, but they probably won&#039;t be committed until psy-RD itself is fixed.&lt;br /&gt;
* RD should take into account local variance.&lt;br /&gt;
* Lambda should be varied on a per-DCT-block basis instead of a per-macroblock basis.&lt;br /&gt;
* Lambda should be picked independent of quantizer (i.e. with greater precision).&lt;br /&gt;
* Classic problem: a block is mostly high complexity but has a small area of low complexity.  How do we judge whether that area is important?  Good example: sharp text on background with film grain; grain gets blurred out because of the text.&lt;br /&gt;
** If we think it&#039;s important all the time, we ruin the quality of many clips that rely on raising complexity on edges (Touhou).&lt;br /&gt;
* Should motion estimation lambda be as high as it is at very high quantizers?  There&#039;s some value to capturing &amp;quot;true motion&amp;quot;...&lt;br /&gt;
* Macroblock tree correlates pretty well with visual perception in that its concept of a &amp;quot;high complexity&amp;quot; matches well with the visual concept.  Except for local illumination changes.  Talk to Dark Shikari for a patch.&lt;br /&gt;
&lt;br /&gt;
===Lookahead===&lt;br /&gt;
* &#039;&#039;&#039;Lookahead should be multithreaded, either by splitting the frame (sliced threads) or running multiple frame analysis calls at once.&#039;&#039;&#039;&lt;br /&gt;
* Temporal MV predictors in lookahead?  There&#039;s a patch for these somewhere, but they biased heavily in favor of B-frames, likely by improving the motion search.&lt;br /&gt;
* Should lookahead use variable lambda based on quantizer (esp. due to adaptive quant)?  If so, should it take into account estimated ratecontrol quantizer, too?  If so, how?&lt;br /&gt;
&lt;br /&gt;
===Quantization===&lt;br /&gt;
* CAVLC &amp;quot;trellis&amp;quot; is a hack.  It works, but it&#039;s a hack.  Make it better.  See the TODOs in encoder/rdo.c.&lt;br /&gt;
* There&#039;s room for something between trellis and deadzone in terms of complexity.  libvpx has a good example -- it biases towards zero-runs in its &amp;quot;medium speed&amp;quot; quantizer.  This can&#039;t be SIMD&#039;d easily, but is still vastly faster than trellis.  A nonlinear quantizer (be more likely to round up larger coefficients) might also be useful.&lt;br /&gt;
* Floyd-Steinberg for quantization?  Try pushing quantization error to nearby DCT coefficients.  Should this go from high to low or low to high?&lt;br /&gt;
* Energy-preserving quantizer -- maintain L1 (or maybe L2?  I&#039;m not sure) energy.  Should we maintain it in the spatial domain (post-iDCT) or residual domain?  Probably the former.&lt;br /&gt;
* Decimation is currently just a ripoff of the JVT recommended algorithm.  Can we do this more optimally?  With RD?&lt;br /&gt;
&lt;br /&gt;
===Transform===&lt;br /&gt;
* Analyze the error characteristics of the fDCT.  Is there any way to make it more accurate without much speed loss?  Particularly at extremely low quantizers, this might help.&lt;br /&gt;
* Before forward transform, run a &amp;quot;blocking filter&amp;quot; that acts as the approximate inverse of the deblock filter.  See [http://akuvian.org/src/x264/Shwang_loopfilter_thesis.pdf this paper].&lt;br /&gt;
&lt;br /&gt;
===Interlacing===&lt;br /&gt;
* &#039;&#039;&#039;Finish adaptive MBAFF.  Talk to horlicks about this one.&#039;&#039;&#039;&lt;br /&gt;
* Make slice-max-mbs/slice-max-size work with interlacing.  Pretty much requires a good portion of adaptive MBAFF.&lt;br /&gt;
* Lookahead currently blend-deinterlaces to get the lowres.  Is this a good idea?  Is there something better that isn&#039;t much slower?&lt;br /&gt;
* Constrained intra + adaptive MBAFF.  Does anyone care about this?&lt;br /&gt;
* PAFF + MBAFF adaptive - PAFF performs better than Adaptive MBAFF on high motion scenes because it can predict from the previous field.&lt;br /&gt;
&lt;br /&gt;
===Weighted Prediction===&lt;br /&gt;
* &#039;&#039;&#039;Make weightp work with interlacing.  Preferably abuse reference duplication to make it useful for MBAFF.&#039;&#039;&#039;&lt;br /&gt;
* Finish K-means decision for weightp.  Talk to DylanZA about getting his current patch for this one.&lt;br /&gt;
* Add explicit weighting for B-frames, too.  This helps in nonlinear fades, among other cases.&lt;br /&gt;
&lt;br /&gt;
===Ratecontrol===&lt;br /&gt;
* VBV might be able to utilize the ability to re-encode a row of the frame for improved accuracy.&lt;br /&gt;
** Maybe re-encode everything in case of an underflow that row-reencoding can&#039;t fix?  This might be better than underflowing.&lt;br /&gt;
* Current per-frame VBV is a hack.  It only adapts per row and is O(N^2), where N is the number of rows.  An O(N) solution would be able to react more often and thus be more accurate.&lt;br /&gt;
* Make the frame size and row size predictors better.  They currently are kind of crappy.&lt;br /&gt;
* Ratecontrol code as a whole is a bit of a mess.  It could be improved.  There&#039;s a lot of cruft left over that is probably not needed now, like qblur.&lt;br /&gt;
* 2-pass VBV is actually more likely to underflow than 1-pass because it doesn&#039;t adapt as aggressively and trusts first pass data a lot.  This trust is often misplaced if the first pass was a fast one.  This should be improved.&lt;br /&gt;
* &amp;quot;Emergency mode&amp;quot; for VBV -- handle cases where abiding by VBV is impossible within normal quantizer bounds.&lt;br /&gt;
** Just force all blocks to skip?&lt;br /&gt;
** Drop frames?&lt;br /&gt;
** Allow QPs higher than 51? (Fake QPs -- just results in &amp;quot;denoising&amp;quot; away DCT coefficients)&lt;br /&gt;
* 2-pass macroblock-tree: if we added the ability to do macroblock-tree on real encoded data, we&#039;d get better results (particularly with repeating patterns and multiref, such as an anime character&#039;s mouth moving).&lt;br /&gt;
* Macroblock-tree: make it more psy-aware.  Maybe we should cap how much it lowers the quantizer on extremely static scenes?  This might tie into the &amp;quot;just-noticeable error&amp;quot; issue in RD.&lt;br /&gt;
&lt;br /&gt;
===GPU===&lt;br /&gt;
* Motion estimation?&lt;br /&gt;
** Methods&lt;br /&gt;
*** Hierarchical?&lt;br /&gt;
*** 2D Wave?&lt;br /&gt;
*** Something else?&lt;br /&gt;
** &amp;quot;Easy&amp;quot;: lookahead motion estimation&lt;br /&gt;
*** Extremely high parallelism, hundreds of frame searches (each with thousands of searches) at once.&lt;br /&gt;
** &amp;quot;Hard&amp;quot;: main motion estimation&lt;br /&gt;
*** Difficult synchronization issues, not as heavily parallel in terms of number of macroblocks, but far more partition sizes and refs to search.&lt;br /&gt;
*** But potentially more useful...&lt;br /&gt;
* Other things?&lt;br /&gt;
&lt;br /&gt;
===x86 assembly===&lt;br /&gt;
* Finish AVX support for x86inc.asm.  Talk to Dark Shikari for a patch.&lt;br /&gt;
* Optimize more for the Phenom.&lt;br /&gt;
* Optimize for the upcoming Sandy Bridge.&lt;br /&gt;
* Work more on 10-bit asm.&lt;br /&gt;
* Convince holger to commit his local patches.&lt;br /&gt;
* Make a merged SA8D/SATD for the 8x8dct mode decision, since the two share most of their calculation.  Hadamard_ac already does this, but slightly differently.&lt;br /&gt;
&lt;br /&gt;
===Other assembly===&lt;br /&gt;
* NEON assembly is nowhere near complete.&lt;br /&gt;
** Chroma MC needs to be rewritten for NV12 support.&lt;br /&gt;
* Altivec assembly is very lacking.&lt;br /&gt;
* SPARC VIS assembly is only available when high bit-depth is disabled.&lt;br /&gt;
&lt;br /&gt;
===Other CPU optimizations===&lt;br /&gt;
* x264 needs more prefetching.  How many L1 and L2 cache misses (particularly L1) can we get rid of via smart prefetching in the right places?  Warning: this is often hard to benchmark.&lt;br /&gt;
* Different CPUs take different relative times for some functions.  Is this enough (particularly across architectures) to justify different encoding settings for different CPUs?&lt;br /&gt;
&lt;br /&gt;
===Other features===&lt;br /&gt;
* MPEG-2 encoding support&lt;br /&gt;
* VP8 encoding support&lt;br /&gt;
* &#039;&#039;&#039;4:2:2 and 4:4:4 colorspace support&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;RGB?&#039;&#039;&#039;&lt;br /&gt;
* Support for timecodes&lt;br /&gt;
* Merge speedcontrol&lt;br /&gt;
&lt;br /&gt;
===x264CLI===&lt;br /&gt;
* Finish audio support.  Talk to Kovensky about this one.&lt;br /&gt;
* Make the filtering system aware of fullrange vs TV range.&lt;br /&gt;
* Make the filtering system aware of BT.601 vs BT.709.&lt;br /&gt;
* Add more filters.&lt;br /&gt;
** Deinterlacers (YADIF).&lt;br /&gt;
** Denoisers (HQDN3D?).&lt;br /&gt;
** IVTC, decomb?&lt;br /&gt;
* Merge L-SMASH mp4 muxer.&lt;br /&gt;
* Add TS muxing support using HRD.  Talk to kierank about this one.&lt;br /&gt;
* Add --device support.&lt;br /&gt;
* Add automatic --level restriction support.&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18662</id>
		<title>X264 Development Newsletters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18662"/>
		<updated>2011-01-27T06:37:45Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: /* Other news: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an archive of the x264 Development Newsletters. &lt;br /&gt;
&lt;br /&gt;
== Volume 1  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/18/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
From now on, with each weekly-ish push of new patches, I&#039;ll try to post a newsletter as well to give an update of what&#039;s going on and the changes. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
Different versions of 64-bit MinGW gcc were inconsistent with regards to whether or not to add a _ prefix to called functions. This broke compilation because the assembly code wouldn&#039;t link in correctly. &lt;br /&gt;
&lt;br /&gt;
Intra refresh got a lot of fixes thanks to bug reports by Chris Brien &amp;amp;lt;chris.brien@tandberg.com&amp;amp;gt;. Because x264 uses column refresh instead of row refresh, it has to be more careful with regards to which pixels it can predict from. This should fix some cases where intra refresh didn&#039;t refresh the whole frame correctly. Furthermore, it turns out that the recovery_frame_cnt syntax element, signaling the length of the intra refresh, is limited by the max frame number. Accordingly, x264 will raise the max frame number to ensure that recovery_frame_cnt is in spec. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
I&#039;ve gone through the file headers and updated them to be more accurate and consistent in terms of dates and authorship. It now also mentions the commercial license, on request from a licensee. &lt;br /&gt;
&lt;br /&gt;
The new --disable-gpl configure option is now added for companies using the commercial license. x264 --version will print both the license information of itself and of the linked libavformat (for decoding). It&#039;ll also warn you if the combination you&#039;ve put together isn&#039;t distributable, such as a nonfree ffmpeg + GPL x264, or a GPL ffmpeg + non-GPL x264. &lt;br /&gt;
&lt;br /&gt;
x264 now passes the &amp;quot;full chroma input&amp;quot; flag to swscale. This should fix this quality issue when using point scaling: http://doom10.org/index.php?topic=585.0 . &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
Kieran Kunhya &amp;amp;lt;kieran@kunhya.com&amp;amp;gt; has finally committed his arbitrary SEI patch, which lets calling apps give x264 any SEI they want to include in the stream. This is useful for closed-captioning, frame packing, and all kinds of other SEIs that x264 doesn&#039;t explicitly support but which the calling application can create itself if necessary. The advantage of giving these to x264 instead of just inserting them separately is that it allows the resulting stream to remain HRD-compliant, since x264 knows they exist. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit-depth input and filtering! x264 supports 10-bit encoding, but currently only takes 8-bit input. This change will finally create a stable API for high bit-depth input and allow users to filter in higher precision. It will also add dithering support to x264CLI for downconversion of high-bit-depth material. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Chroma ME in B-frames will be coming soon, giving an extra bit of compression to those using slower presets. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
After high bit-depth input is complete, a large amount of assembly code will be committed as well, improving high bit-depth encoding performance greatly. &lt;br /&gt;
&lt;br /&gt;
Ubuntu Maverick will include an updated x264, r1653. &lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-September/007808.html Volume 2]  ==&lt;br /&gt;
&#039;&#039;9/27/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
libx264 should now give correct DTS and print the correct bitrate if the input PTS do not start at zero. This doesn&#039;t affect x264CLI, but does affect calling apps that don&#039;t start their PTS at zero. &lt;br /&gt;
&lt;br /&gt;
libx264 ratecontrol should now work correctly in CFR mode with timebase&amp;amp;nbsp;!= 1/fps. As documented, x264 was supposed to ignore the timebase if CFR mode is set (for purposes of ratecontrol), but that&#039;s not what actually happened; things just broke. This should now be fixed. This is necessary for correct behavior with tune=zerolatency in gstreamer. &lt;br /&gt;
&lt;br /&gt;
A missing emms has been added to dump-yuv, fixing some Heisenbug brokenness when dump-yuv was used. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
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&#039;s extra byte, CAVLC&#039;s skip runs). The primary problem, however, was caused by the terrible design of H.264&#039;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. &lt;br /&gt;
&lt;br /&gt;
Chroma mode decision and subpel, mentioned in the last newsletter, is finally in. It&#039;s enabled at subme &amp;amp;gt;= 9 and provides a ~0.4-1% compression improvement. &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
High-bit-depth support has been finished in libx264 and x264cli. The assembly code is still yet to be committed, so it&#039;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&#039;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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-October/007858.html Volume 3]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;10/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the third x264 development newsletter. If you missed the first two, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The sigint handler in x264cli is now volatile, like it should have been. This likely didn&#039;t actually affect anything on any real system, but it&#039;s more correct. &lt;br /&gt;
&lt;br /&gt;
-DNDEBUG broke the filtering system. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
The bugfix from last week regarding intra refresh predicting from topright blocks didn&#039;t work with 8x8dct. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
2-pass ratecontrol now works with CBR HRD. Previously, it ignored filler bits, and thus broke horribly. In general, you don&#039;t need 2-pass for CBR (and it probably doesn&#039;t help), but it should work better now. &lt;br /&gt;
&lt;br /&gt;
A missing mod4-stack check was added; this should fix ICC builds on Phenom CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
The build tree has been cleaned a bit. A bunch of old stuff, like the non-working regression test and doxy, have been removed. &lt;br /&gt;
&lt;br /&gt;
Some of the information in doc/ has been updated to be less absurdly out of date, or at least inform the reader that it is absurdly out of date. &lt;br /&gt;
&lt;br /&gt;
DTS compression has been moved out of the libx264 API and into the muxers, because it&#039;s a giant hack and it was making things ugly and messy (and starting to interfere with ratecontrol). &lt;br /&gt;
&lt;br /&gt;
Various asm functions have been improved, particularly the qpel MC functions. Should help performance a bit on Core 2 and similar CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007920.html Volume 4]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fourth x264 development newsletter. If you missed the first three, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The Altivec SATD gave wrong results with very small strides (e.g. 8). This made output on PPC slightly different from x86, due to different results in lookahead and chroma ME. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
FPS reporting on Windows 64-bit was very imprecise (the timers were only accurate to 1 second). This was due to _ftime using the wrong struct due to the Windows ABI&#039;s complete retardation. This has been fixed by using ftime instead. &lt;br /&gt;
&lt;br /&gt;
ssd_nv12 has been improved to eliminate overflow at high bit depths (this would, in theory, give wrong PSNR). &lt;br /&gt;
&lt;br /&gt;
SATD/SA8D/Hadamard_ac have been improved to eliminate overflow at high bit depths (this would cause wrong analysis results). &lt;br /&gt;
&lt;br /&gt;
Three ratecontrol bugs have been fixed: &lt;br /&gt;
&lt;br /&gt;
#B-frame size prediction has been fixed (it used quantizer instead of linearized qscale). This should improve VBV.&lt;br /&gt;
#Overflow compensation, originally designed for 1-pass ABR, has been disabled with CRF on, as it doesn&#039;t do anything useful with pure CRF and causes very bizarre results with CRF+VBV in areas of extremely high complexity. &lt;br /&gt;
#A bug in the way that clip_qscale caps the amount by which a frame can be higher quality than a previous frame (as a result of attempting to use up extra bits that would otherwise be wasted) has been fixed. This caused CBR to take extremely long times (e.g. seconds) to recover from extreme changes in complexity at low bitrates.&lt;br /&gt;
&lt;br /&gt;
A possible linking problem with lavf has been fixed. &lt;br /&gt;
&lt;br /&gt;
Some MV/ref prefetching code was in the wrong place. Fixing this may result in a tiny performance improvement.&lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
doc/threads.txt has been updated with modern benchmarks. This information may be useful to anyone looking to compare the impact of various threading strategies on quality and performance, as well as get an idea of how well x264 scales over multiple cores at various encoding speeds. &lt;br /&gt;
&lt;br /&gt;
The presets are now addressable numerically (0=ultrafast...9=placebo).&amp;lt;br&amp;gt;&lt;br /&gt;
The exact mappings may change in the future if new presets are added or old presets removed, but they will always be in linear order of fast to slow. &lt;br /&gt;
&lt;br /&gt;
The ffmpeg -vpre error message (if a user doesn&#039;t use a -vpre) has been made more descriptive, to better instruct users about how the ffmpeg -vpre system works. &lt;br /&gt;
&lt;br /&gt;
weightp -1 offset dupes are now disabled in high bit depth mode, as they&#039;re a hack to get around crappy rounding in 8-bit encoding, and thus don&#039;t help in high bit depth. &lt;br /&gt;
&lt;br /&gt;
PSNR and SSIM measurements are now VFR-aware! This means they will take into account the duration of frames. This may result in PSNR and SSIM results appearing dramatically different from other tools when used on variable framerate video. Don&#039;t fret; x264 is correct, they are not. Of course, results will stay the same for constant framerate video. This is the first step to VFR-aware MB-tree. &lt;br /&gt;
&lt;br /&gt;
Quantizer handling has been improved.&amp;lt;br&amp;gt;&lt;br /&gt;
Library change: i_qpplus1 now defaults to X264_QP_AUTO. This doesn&#039;t actually change anything, as X264_QP_AUTO is 0, but this may change in the future. As a reminder, all x264_picture_t structs must be initialized using x264_picture_init or x264_picture_alloc!&amp;lt;br&amp;gt;&lt;br /&gt;
CRF values now make sense in high bit depth: --crf 23 means roughly the same quality in 8-bit or 10-bit, instead of being 4 times higher quality in 10-bit than in 8-bit.&amp;lt;br&amp;gt;&lt;br /&gt;
This means that --qp 0 should be used for lossless, not --crf 0. The latter will not result in lossless compression when in high bit depth mode.&amp;lt;br&amp;gt;&lt;br /&gt;
Bit depth has been added to statsfiles, to prevent users from inadvertently using a statsfile with the wrong bit depth. &lt;br /&gt;
&lt;br /&gt;
Scenecut&#039;s flash detection has been improved to work more sanely in the case of flashes at the end of the videos.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is nearly ready. Speed boost has been measured as about 4.3x and is still improving. &lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is critical for some broadcast applications. Unlike most competing encoders, this VBV Emergency Mode does not drop frames or force all blocks to skip or some similarly extreme step: it adds a &amp;quot;denoising&amp;quot; step to reduce the complexity of the video, which scales upwards until it simply removes all content at the most extreme level. &lt;br /&gt;
&lt;br /&gt;
A pad filter is nearly ready for the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding mostly finished. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007950.html Volume 5]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/19/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fifth x264 development newsletter. If you missed the first four, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
HRD now works correctly when used with intra refresh. Thanks to a certain x264 commercial licensee for the bug report. &lt;br /&gt;
&lt;br /&gt;
QPfile parsing now works as it was supposed to have worked last time: users should be able to omit QP values. &lt;br /&gt;
&lt;br /&gt;
Allocate the correct amount of memory for weightp buffers with weightp + high bit depth (it allocated too much, not too little). &lt;br /&gt;
&lt;br /&gt;
Fix flash detection to work correctly near the end of the keyframe interval. &lt;br /&gt;
&lt;br /&gt;
Fix a crash in dump yuv with some resolutions. &lt;br /&gt;
&lt;br /&gt;
Various fixes have been made to ratecontrol in high-bit-depth mode. &lt;br /&gt;
&lt;br /&gt;
Constrained intra pred is working properly again in all cases. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
x264&#039;s SEI header now indicates whether the build used was GPL or proprietary. &lt;br /&gt;
&lt;br /&gt;
x264 is now compatible with FFMS2&#039;s most recent API break. &lt;br /&gt;
&lt;br /&gt;
configure now logs test programs that failed, not just the error output. &lt;br /&gt;
&lt;br /&gt;
Merge Oskar&#039;s (irock&#039;s) 10-bit asm branch: ~4.4x overall speed boost in high bit depth mode. &lt;br /&gt;
&lt;br /&gt;
Chroma weighted prediction: dramatically improved chroma compression and quality in fades. &lt;br /&gt;
&lt;br /&gt;
Custom cropping rectangle support: users can now specify --crop-rect to add values to the H.264 cropping header. This is supposedly useful for 3D television applications (to allow legacy decoders to access only one view of the image). &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is important for some broadcast applications. &lt;br /&gt;
&lt;br /&gt;
The pad filter and yadif are nearly ready for the x264CLI filter framework. Both now support high bit depth. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding finished and inter coding begun. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks). &lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
Since we started a couple of months ago, over 40 companies have contacted us regarding x264 licensing! &lt;br /&gt;
&lt;br /&gt;
At least one major Blu-ray authoring house is switching to x264 for their commercial Blu-rays. &lt;br /&gt;
&lt;br /&gt;
At least one commercial encoding application based on x264 is currently in the works. An announcement will come Soon™. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/008003.html Volume 6] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/25/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the sixth x264 development newsletter.  If you missed the&lt;br /&gt;
first five, this is a regular email containing updates on fixes and&lt;br /&gt;
improvements in the most recent x264 push, along with updates on&lt;br /&gt;
what&#039;s coming next.  Previous versions can be found in the mailing&lt;br /&gt;
list archives.&lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this&lt;br /&gt;
newsletter includes fixes from those commits as well, i.e. it covers&lt;br /&gt;
everything since the last newsletter.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Fix some crashes in high bit depth on some compilers due to&lt;br /&gt;
insufficient array alignment.&lt;br /&gt;
&lt;br /&gt;
Fix a bug in chroma weightp which could cause corruption in rare cases.&lt;br /&gt;
&lt;br /&gt;
Fix some weird issues in the resize filter&#039;s rounding code.&lt;br /&gt;
&lt;br /&gt;
Fix the build on SPARC Solaris 10 machines.&lt;br /&gt;
&lt;br /&gt;
Fix high bit depth mode on SPARC.&lt;br /&gt;
&lt;br /&gt;
Fix an odd issue in VFR input + forced timebase.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
QPmin default is now 0.&lt;br /&gt;
&lt;br /&gt;
x264 --version now prints a lot more useful information.&lt;br /&gt;
&lt;br /&gt;
x264_encoder_reconfig now copies field order flags.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a new API function to return the maximum number of delayed&lt;br /&gt;
frames with the current parameters (requested by Gstreamer).&lt;br /&gt;
&lt;br /&gt;
Google Code-In is in full swing, with two sets of patches committed:&amp;lt;br&amp;gt;&lt;br /&gt;
SSE versions of some high-bit-depth (i)DCT functions&amp;lt;br&amp;gt;&lt;br /&gt;
x264 now has a totally sweet Python regression test tool.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--weightp 1 is now a better speed tradeoff.  It also doesn&#039;t do any&lt;br /&gt;
reference duplication, so it&#039;s suitable when encoding for broken&lt;br /&gt;
decoders that don&#039;t handle reference duplication correctly (while&lt;br /&gt;
still getting the benefits of fade detection).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and&lt;br /&gt;
bugfixing left.  This makes x264 able to deal gracefully with extreme&lt;br /&gt;
input combined with VBV restrictions (e.g. noise, Doremi Labs test&lt;br /&gt;
boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being&lt;br /&gt;
finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using&lt;br /&gt;
the x264 framework.  Basic structure is done, with intra coding&lt;br /&gt;
finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding&lt;br /&gt;
ASIC for improved encoding performance.  Current status is: waiting on&lt;br /&gt;
Intel (these guys move at the speed of a three-toed sloth swimming&lt;br /&gt;
down a river of bricks).&lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;A commercial encoding application based on x264 is currently in the works. An announcement will come this week.&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This week? Perhaps I should have said &amp;quot;today&amp;quot;!&lt;br /&gt;
&lt;br /&gt;
Pegasys Inc. switches to x264 for their flagship product, TMPGEnc.&lt;br /&gt;
&lt;br /&gt;
English: http://tmpgenc.pegasys-inc.com/en/press/10_1125.html&lt;br /&gt;
&lt;br /&gt;
日本語: http://tmpgenc.pegasys-inc.com/ja/press/10_1126.html&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18661</id>
		<title>X264 Development Newsletters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18661"/>
		<updated>2011-01-27T06:35:45Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an archive of the x264 Development Newsletters. &lt;br /&gt;
&lt;br /&gt;
== Volume 1  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/18/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
From now on, with each weekly-ish push of new patches, I&#039;ll try to post a newsletter as well to give an update of what&#039;s going on and the changes. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
Different versions of 64-bit MinGW gcc were inconsistent with regards to whether or not to add a _ prefix to called functions. This broke compilation because the assembly code wouldn&#039;t link in correctly. &lt;br /&gt;
&lt;br /&gt;
Intra refresh got a lot of fixes thanks to bug reports by Chris Brien &amp;amp;lt;chris.brien@tandberg.com&amp;amp;gt;. Because x264 uses column refresh instead of row refresh, it has to be more careful with regards to which pixels it can predict from. This should fix some cases where intra refresh didn&#039;t refresh the whole frame correctly. Furthermore, it turns out that the recovery_frame_cnt syntax element, signaling the length of the intra refresh, is limited by the max frame number. Accordingly, x264 will raise the max frame number to ensure that recovery_frame_cnt is in spec. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
I&#039;ve gone through the file headers and updated them to be more accurate and consistent in terms of dates and authorship. It now also mentions the commercial license, on request from a licensee. &lt;br /&gt;
&lt;br /&gt;
The new --disable-gpl configure option is now added for companies using the commercial license. x264 --version will print both the license information of itself and of the linked libavformat (for decoding). It&#039;ll also warn you if the combination you&#039;ve put together isn&#039;t distributable, such as a nonfree ffmpeg + GPL x264, or a GPL ffmpeg + non-GPL x264. &lt;br /&gt;
&lt;br /&gt;
x264 now passes the &amp;quot;full chroma input&amp;quot; flag to swscale. This should fix this quality issue when using point scaling: http://doom10.org/index.php?topic=585.0 . &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
Kieran Kunhya &amp;amp;lt;kieran@kunhya.com&amp;amp;gt; has finally committed his arbitrary SEI patch, which lets calling apps give x264 any SEI they want to include in the stream. This is useful for closed-captioning, frame packing, and all kinds of other SEIs that x264 doesn&#039;t explicitly support but which the calling application can create itself if necessary. The advantage of giving these to x264 instead of just inserting them separately is that it allows the resulting stream to remain HRD-compliant, since x264 knows they exist. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit-depth input and filtering! x264 supports 10-bit encoding, but currently only takes 8-bit input. This change will finally create a stable API for high bit-depth input and allow users to filter in higher precision. It will also add dithering support to x264CLI for downconversion of high-bit-depth material. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Chroma ME in B-frames will be coming soon, giving an extra bit of compression to those using slower presets. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
After high bit-depth input is complete, a large amount of assembly code will be committed as well, improving high bit-depth encoding performance greatly. &lt;br /&gt;
&lt;br /&gt;
Ubuntu Maverick will include an updated x264, r1653. &lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-September/007808.html Volume 2]  ==&lt;br /&gt;
&#039;&#039;9/27/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
libx264 should now give correct DTS and print the correct bitrate if the input PTS do not start at zero. This doesn&#039;t affect x264CLI, but does affect calling apps that don&#039;t start their PTS at zero. &lt;br /&gt;
&lt;br /&gt;
libx264 ratecontrol should now work correctly in CFR mode with timebase&amp;amp;nbsp;!= 1/fps. As documented, x264 was supposed to ignore the timebase if CFR mode is set (for purposes of ratecontrol), but that&#039;s not what actually happened; things just broke. This should now be fixed. This is necessary for correct behavior with tune=zerolatency in gstreamer. &lt;br /&gt;
&lt;br /&gt;
A missing emms has been added to dump-yuv, fixing some Heisenbug brokenness when dump-yuv was used. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
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&#039;s extra byte, CAVLC&#039;s skip runs). The primary problem, however, was caused by the terrible design of H.264&#039;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. &lt;br /&gt;
&lt;br /&gt;
Chroma mode decision and subpel, mentioned in the last newsletter, is finally in. It&#039;s enabled at subme &amp;amp;gt;= 9 and provides a ~0.4-1% compression improvement. &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
High-bit-depth support has been finished in libx264 and x264cli. The assembly code is still yet to be committed, so it&#039;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&#039;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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-October/007858.html Volume 3]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;10/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the third x264 development newsletter. If you missed the first two, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The sigint handler in x264cli is now volatile, like it should have been. This likely didn&#039;t actually affect anything on any real system, but it&#039;s more correct. &lt;br /&gt;
&lt;br /&gt;
-DNDEBUG broke the filtering system. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
The bugfix from last week regarding intra refresh predicting from topright blocks didn&#039;t work with 8x8dct. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
2-pass ratecontrol now works with CBR HRD. Previously, it ignored filler bits, and thus broke horribly. In general, you don&#039;t need 2-pass for CBR (and it probably doesn&#039;t help), but it should work better now. &lt;br /&gt;
&lt;br /&gt;
A missing mod4-stack check was added; this should fix ICC builds on Phenom CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
The build tree has been cleaned a bit. A bunch of old stuff, like the non-working regression test and doxy, have been removed. &lt;br /&gt;
&lt;br /&gt;
Some of the information in doc/ has been updated to be less absurdly out of date, or at least inform the reader that it is absurdly out of date. &lt;br /&gt;
&lt;br /&gt;
DTS compression has been moved out of the libx264 API and into the muxers, because it&#039;s a giant hack and it was making things ugly and messy (and starting to interfere with ratecontrol). &lt;br /&gt;
&lt;br /&gt;
Various asm functions have been improved, particularly the qpel MC functions. Should help performance a bit on Core 2 and similar CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007920.html Volume 4]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fourth x264 development newsletter. If you missed the first three, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The Altivec SATD gave wrong results with very small strides (e.g. 8). This made output on PPC slightly different from x86, due to different results in lookahead and chroma ME. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
FPS reporting on Windows 64-bit was very imprecise (the timers were only accurate to 1 second). This was due to _ftime using the wrong struct due to the Windows ABI&#039;s complete retardation. This has been fixed by using ftime instead. &lt;br /&gt;
&lt;br /&gt;
ssd_nv12 has been improved to eliminate overflow at high bit depths (this would, in theory, give wrong PSNR). &lt;br /&gt;
&lt;br /&gt;
SATD/SA8D/Hadamard_ac have been improved to eliminate overflow at high bit depths (this would cause wrong analysis results). &lt;br /&gt;
&lt;br /&gt;
Three ratecontrol bugs have been fixed: &lt;br /&gt;
&lt;br /&gt;
#B-frame size prediction has been fixed (it used quantizer instead of linearized qscale). This should improve VBV.&lt;br /&gt;
#Overflow compensation, originally designed for 1-pass ABR, has been disabled with CRF on, as it doesn&#039;t do anything useful with pure CRF and causes very bizarre results with CRF+VBV in areas of extremely high complexity. &lt;br /&gt;
#A bug in the way that clip_qscale caps the amount by which a frame can be higher quality than a previous frame (as a result of attempting to use up extra bits that would otherwise be wasted) has been fixed. This caused CBR to take extremely long times (e.g. seconds) to recover from extreme changes in complexity at low bitrates.&lt;br /&gt;
&lt;br /&gt;
A possible linking problem with lavf has been fixed. &lt;br /&gt;
&lt;br /&gt;
Some MV/ref prefetching code was in the wrong place. Fixing this may result in a tiny performance improvement.&lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
doc/threads.txt has been updated with modern benchmarks. This information may be useful to anyone looking to compare the impact of various threading strategies on quality and performance, as well as get an idea of how well x264 scales over multiple cores at various encoding speeds. &lt;br /&gt;
&lt;br /&gt;
The presets are now addressable numerically (0=ultrafast...9=placebo).&amp;lt;br&amp;gt;&lt;br /&gt;
The exact mappings may change in the future if new presets are added or old presets removed, but they will always be in linear order of fast to slow. &lt;br /&gt;
&lt;br /&gt;
The ffmpeg -vpre error message (if a user doesn&#039;t use a -vpre) has been made more descriptive, to better instruct users about how the ffmpeg -vpre system works. &lt;br /&gt;
&lt;br /&gt;
weightp -1 offset dupes are now disabled in high bit depth mode, as they&#039;re a hack to get around crappy rounding in 8-bit encoding, and thus don&#039;t help in high bit depth. &lt;br /&gt;
&lt;br /&gt;
PSNR and SSIM measurements are now VFR-aware! This means they will take into account the duration of frames. This may result in PSNR and SSIM results appearing dramatically different from other tools when used on variable framerate video. Don&#039;t fret; x264 is correct, they are not. Of course, results will stay the same for constant framerate video. This is the first step to VFR-aware MB-tree. &lt;br /&gt;
&lt;br /&gt;
Quantizer handling has been improved.&amp;lt;br&amp;gt;&lt;br /&gt;
Library change: i_qpplus1 now defaults to X264_QP_AUTO. This doesn&#039;t actually change anything, as X264_QP_AUTO is 0, but this may change in the future. As a reminder, all x264_picture_t structs must be initialized using x264_picture_init or x264_picture_alloc!&amp;lt;br&amp;gt;&lt;br /&gt;
CRF values now make sense in high bit depth: --crf 23 means roughly the same quality in 8-bit or 10-bit, instead of being 4 times higher quality in 10-bit than in 8-bit.&amp;lt;br&amp;gt;&lt;br /&gt;
This means that --qp 0 should be used for lossless, not --crf 0. The latter will not result in lossless compression when in high bit depth mode.&amp;lt;br&amp;gt;&lt;br /&gt;
Bit depth has been added to statsfiles, to prevent users from inadvertently using a statsfile with the wrong bit depth. &lt;br /&gt;
&lt;br /&gt;
Scenecut&#039;s flash detection has been improved to work more sanely in the case of flashes at the end of the videos.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is nearly ready. Speed boost has been measured as about 4.3x and is still improving. &lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is critical for some broadcast applications. Unlike most competing encoders, this VBV Emergency Mode does not drop frames or force all blocks to skip or some similarly extreme step: it adds a &amp;quot;denoising&amp;quot; step to reduce the complexity of the video, which scales upwards until it simply removes all content at the most extreme level. &lt;br /&gt;
&lt;br /&gt;
A pad filter is nearly ready for the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding mostly finished. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007950.html Volume 5]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/19/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fifth x264 development newsletter. If you missed the first four, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
HRD now works correctly when used with intra refresh. Thanks to a certain x264 commercial licensee for the bug report. &lt;br /&gt;
&lt;br /&gt;
QPfile parsing now works as it was supposed to have worked last time: users should be able to omit QP values. &lt;br /&gt;
&lt;br /&gt;
Allocate the correct amount of memory for weightp buffers with weightp + high bit depth (it allocated too much, not too little). &lt;br /&gt;
&lt;br /&gt;
Fix flash detection to work correctly near the end of the keyframe interval. &lt;br /&gt;
&lt;br /&gt;
Fix a crash in dump yuv with some resolutions. &lt;br /&gt;
&lt;br /&gt;
Various fixes have been made to ratecontrol in high-bit-depth mode. &lt;br /&gt;
&lt;br /&gt;
Constrained intra pred is working properly again in all cases. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
x264&#039;s SEI header now indicates whether the build used was GPL or proprietary. &lt;br /&gt;
&lt;br /&gt;
x264 is now compatible with FFMS2&#039;s most recent API break. &lt;br /&gt;
&lt;br /&gt;
configure now logs test programs that failed, not just the error output. &lt;br /&gt;
&lt;br /&gt;
Merge Oskar&#039;s (irock&#039;s) 10-bit asm branch: ~4.4x overall speed boost in high bit depth mode. &lt;br /&gt;
&lt;br /&gt;
Chroma weighted prediction: dramatically improved chroma compression and quality in fades. &lt;br /&gt;
&lt;br /&gt;
Custom cropping rectangle support: users can now specify --crop-rect to add values to the H.264 cropping header. This is supposedly useful for 3D television applications (to allow legacy decoders to access only one view of the image). &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is important for some broadcast applications. &lt;br /&gt;
&lt;br /&gt;
The pad filter and yadif are nearly ready for the x264CLI filter framework. Both now support high bit depth. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding finished and inter coding begun. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks). &lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
Since we started a couple of months ago, over 40 companies have contacted us regarding x264 licensing! &lt;br /&gt;
&lt;br /&gt;
At least one major Blu-ray authoring house is switching to x264 for their commercial Blu-rays. &lt;br /&gt;
&lt;br /&gt;
At least one commercial encoding application based on x264 is currently in the works. An announcement will come Soon™. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/008003.html Volume 6] ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/25/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This is the sixth x264 development newsletter.  If you missed the&lt;br /&gt;
first five, this is a regular email containing updates on fixes and&lt;br /&gt;
improvements in the most recent x264 push, along with updates on&lt;br /&gt;
what&#039;s coming next.  Previous versions can be found in the mailing&lt;br /&gt;
list archives.&lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this&lt;br /&gt;
newsletter includes fixes from those commits as well, i.e. it covers&lt;br /&gt;
everything since the last newsletter.&lt;br /&gt;
&lt;br /&gt;
===== Fixes: =====&lt;br /&gt;
&lt;br /&gt;
Fix some crashes in high bit depth on some compilers due to&lt;br /&gt;
insufficient array alignment.&lt;br /&gt;
&lt;br /&gt;
Fix a bug in chroma weightp which could cause corruption in rare cases.&lt;br /&gt;
&lt;br /&gt;
Fix some weird issues in the resize filter&#039;s rounding code.&lt;br /&gt;
&lt;br /&gt;
Fix the build on SPARC Solaris 10 machines.&lt;br /&gt;
&lt;br /&gt;
Fix high bit depth mode on SPARC.&lt;br /&gt;
&lt;br /&gt;
Fix an odd issue in VFR input + forced timebase.&lt;br /&gt;
&lt;br /&gt;
===== Improvements: =====&lt;br /&gt;
&lt;br /&gt;
QPmin default is now 0.&lt;br /&gt;
&lt;br /&gt;
x264 --version now prints a lot more useful information.&lt;br /&gt;
&lt;br /&gt;
x264_encoder_reconfig now copies field order flags.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a new API function to return the maximum number of delayed&lt;br /&gt;
frames with the current parameters (requested by Gstreamer).&lt;br /&gt;
&lt;br /&gt;
Google Code-In is in full swing, with two sets of patches committed:&amp;lt;br&amp;gt;&lt;br /&gt;
SSE versions of some high-bit-depth (i)DCT functions&amp;lt;br&amp;gt;&lt;br /&gt;
x264 now has a totally sweet Python regression test tool.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
--weightp 1 is now a better speed tradeoff.  It also doesn&#039;t do any&lt;br /&gt;
reference duplication, so it&#039;s suitable when encoding for broken&lt;br /&gt;
decoders that don&#039;t handle reference duplication correctly (while&lt;br /&gt;
still getting the benefits of fade detection).&lt;br /&gt;
&lt;br /&gt;
===== Upcoming: =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and&lt;br /&gt;
bugfixing left.  This makes x264 able to deal gracefully with extreme&lt;br /&gt;
input combined with VBV restrictions (e.g. noise, Doremi Labs test&lt;br /&gt;
boxes).  This is important for some broadcast applications.&lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being&lt;br /&gt;
finished up currently.&lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using&lt;br /&gt;
the x264 framework.  Basic structure is done, with intra coding&lt;br /&gt;
finished and inter coding begun.&lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding&lt;br /&gt;
ASIC for improved encoding performance.  Current status is: waiting on&lt;br /&gt;
Intel (these guys move at the speed of a three-toed sloth swimming&lt;br /&gt;
down a river of bricks).&lt;br /&gt;
&lt;br /&gt;
===== Other news: =====&lt;br /&gt;
&lt;br /&gt;
A commercial encoding application based on x264 is currently in the&lt;br /&gt;
works.  An announcement will come this week.&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18660</id>
		<title>X264 Development Newsletters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18660"/>
		<updated>2011-01-27T06:30:30Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: /* Volume 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an archive of the x264 Development Newsletters. &lt;br /&gt;
&lt;br /&gt;
== Volume 1  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/18/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
From now on, with each weekly-ish push of new patches, I&#039;ll try to post a newsletter as well to give an update of what&#039;s going on and the changes. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
Different versions of 64-bit MinGW gcc were inconsistent with regards to whether or not to add a _ prefix to called functions. This broke compilation because the assembly code wouldn&#039;t link in correctly. &lt;br /&gt;
&lt;br /&gt;
Intra refresh got a lot of fixes thanks to bug reports by Chris Brien &amp;amp;lt;chris.brien@tandberg.com&amp;amp;gt;. Because x264 uses column refresh instead of row refresh, it has to be more careful with regards to which pixels it can predict from. This should fix some cases where intra refresh didn&#039;t refresh the whole frame correctly. Furthermore, it turns out that the recovery_frame_cnt syntax element, signaling the length of the intra refresh, is limited by the max frame number. Accordingly, x264 will raise the max frame number to ensure that recovery_frame_cnt is in spec. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
I&#039;ve gone through the file headers and updated them to be more accurate and consistent in terms of dates and authorship. It now also mentions the commercial license, on request from a licensee. &lt;br /&gt;
&lt;br /&gt;
The new --disable-gpl configure option is now added for companies using the commercial license. x264 --version will print both the license information of itself and of the linked libavformat (for decoding). It&#039;ll also warn you if the combination you&#039;ve put together isn&#039;t distributable, such as a nonfree ffmpeg + GPL x264, or a GPL ffmpeg + non-GPL x264. &lt;br /&gt;
&lt;br /&gt;
x264 now passes the &amp;quot;full chroma input&amp;quot; flag to swscale. This should fix this quality issue when using point scaling: http://doom10.org/index.php?topic=585.0 . &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
Kieran Kunhya &amp;amp;lt;kieran@kunhya.com&amp;amp;gt; has finally committed his arbitrary SEI patch, which lets calling apps give x264 any SEI they want to include in the stream. This is useful for closed-captioning, frame packing, and all kinds of other SEIs that x264 doesn&#039;t explicitly support but which the calling application can create itself if necessary. The advantage of giving these to x264 instead of just inserting them separately is that it allows the resulting stream to remain HRD-compliant, since x264 knows they exist. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit-depth input and filtering! x264 supports 10-bit encoding, but currently only takes 8-bit input. This change will finally create a stable API for high bit-depth input and allow users to filter in higher precision. It will also add dithering support to x264CLI for downconversion of high-bit-depth material. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Chroma ME in B-frames will be coming soon, giving an extra bit of compression to those using slower presets. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
After high bit-depth input is complete, a large amount of assembly code will be committed as well, improving high bit-depth encoding performance greatly. &lt;br /&gt;
&lt;br /&gt;
Ubuntu Maverick will include an updated x264, r1653. &lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-September/007808.html Volume 2]  ==&lt;br /&gt;
&#039;&#039;9/27/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
libx264 should now give correct DTS and print the correct bitrate if the input PTS do not start at zero. This doesn&#039;t affect x264CLI, but does affect calling apps that don&#039;t start their PTS at zero. &lt;br /&gt;
&lt;br /&gt;
libx264 ratecontrol should now work correctly in CFR mode with timebase&amp;amp;nbsp;!= 1/fps. As documented, x264 was supposed to ignore the timebase if CFR mode is set (for purposes of ratecontrol), but that&#039;s not what actually happened; things just broke. This should now be fixed. This is necessary for correct behavior with tune=zerolatency in gstreamer. &lt;br /&gt;
&lt;br /&gt;
A missing emms has been added to dump-yuv, fixing some Heisenbug brokenness when dump-yuv was used. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
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&#039;s extra byte, CAVLC&#039;s skip runs). The primary problem, however, was caused by the terrible design of H.264&#039;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. &lt;br /&gt;
&lt;br /&gt;
Chroma mode decision and subpel, mentioned in the last newsletter, is finally in. It&#039;s enabled at subme &amp;amp;gt;= 9 and provides a ~0.4-1% compression improvement. &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
High-bit-depth support has been finished in libx264 and x264cli. The assembly code is still yet to be committed, so it&#039;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&#039;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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-October/007858.html Volume 3]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;10/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the third x264 development newsletter. If you missed the first two, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The sigint handler in x264cli is now volatile, like it should have been. This likely didn&#039;t actually affect anything on any real system, but it&#039;s more correct. &lt;br /&gt;
&lt;br /&gt;
-DNDEBUG broke the filtering system. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
The bugfix from last week regarding intra refresh predicting from topright blocks didn&#039;t work with 8x8dct. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
2-pass ratecontrol now works with CBR HRD. Previously, it ignored filler bits, and thus broke horribly. In general, you don&#039;t need 2-pass for CBR (and it probably doesn&#039;t help), but it should work better now. &lt;br /&gt;
&lt;br /&gt;
A missing mod4-stack check was added; this should fix ICC builds on Phenom CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
The build tree has been cleaned a bit. A bunch of old stuff, like the non-working regression test and doxy, have been removed. &lt;br /&gt;
&lt;br /&gt;
Some of the information in doc/ has been updated to be less absurdly out of date, or at least inform the reader that it is absurdly out of date. &lt;br /&gt;
&lt;br /&gt;
DTS compression has been moved out of the libx264 API and into the muxers, because it&#039;s a giant hack and it was making things ugly and messy (and starting to interfere with ratecontrol). &lt;br /&gt;
&lt;br /&gt;
Various asm functions have been improved, particularly the qpel MC functions. Should help performance a bit on Core 2 and similar CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007920.html Volume 4]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fourth x264 development newsletter. If you missed the first three, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The Altivec SATD gave wrong results with very small strides (e.g. 8). This made output on PPC slightly different from x86, due to different results in lookahead and chroma ME. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
FPS reporting on Windows 64-bit was very imprecise (the timers were only accurate to 1 second). This was due to _ftime using the wrong struct due to the Windows ABI&#039;s complete retardation. This has been fixed by using ftime instead. &lt;br /&gt;
&lt;br /&gt;
ssd_nv12 has been improved to eliminate overflow at high bit depths (this would, in theory, give wrong PSNR). &lt;br /&gt;
&lt;br /&gt;
SATD/SA8D/Hadamard_ac have been improved to eliminate overflow at high bit depths (this would cause wrong analysis results). &lt;br /&gt;
&lt;br /&gt;
Three ratecontrol bugs have been fixed: &lt;br /&gt;
&lt;br /&gt;
#B-frame size prediction has been fixed (it used quantizer instead of linearized qscale). This should improve VBV.&lt;br /&gt;
#Overflow compensation, originally designed for 1-pass ABR, has been disabled with CRF on, as it doesn&#039;t do anything useful with pure CRF and causes very bizarre results with CRF+VBV in areas of extremely high complexity. &lt;br /&gt;
#A bug in the way that clip_qscale caps the amount by which a frame can be higher quality than a previous frame (as a result of attempting to use up extra bits that would otherwise be wasted) has been fixed. This caused CBR to take extremely long times (e.g. seconds) to recover from extreme changes in complexity at low bitrates.&lt;br /&gt;
&lt;br /&gt;
A possible linking problem with lavf has been fixed. &lt;br /&gt;
&lt;br /&gt;
Some MV/ref prefetching code was in the wrong place. Fixing this may result in a tiny performance improvement.&lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
doc/threads.txt has been updated with modern benchmarks. This information may be useful to anyone looking to compare the impact of various threading strategies on quality and performance, as well as get an idea of how well x264 scales over multiple cores at various encoding speeds. &lt;br /&gt;
&lt;br /&gt;
The presets are now addressable numerically (0=ultrafast...9=placebo).&amp;lt;br&amp;gt;&lt;br /&gt;
The exact mappings may change in the future if new presets are added or old presets removed, but they will always be in linear order of fast to slow. &lt;br /&gt;
&lt;br /&gt;
The ffmpeg -vpre error message (if a user doesn&#039;t use a -vpre) has been made more descriptive, to better instruct users about how the ffmpeg -vpre system works. &lt;br /&gt;
&lt;br /&gt;
weightp -1 offset dupes are now disabled in high bit depth mode, as they&#039;re a hack to get around crappy rounding in 8-bit encoding, and thus don&#039;t help in high bit depth. &lt;br /&gt;
&lt;br /&gt;
PSNR and SSIM measurements are now VFR-aware! This means they will take into account the duration of frames. This may result in PSNR and SSIM results appearing dramatically different from other tools when used on variable framerate video. Don&#039;t fret; x264 is correct, they are not. Of course, results will stay the same for constant framerate video. This is the first step to VFR-aware MB-tree. &lt;br /&gt;
&lt;br /&gt;
Quantizer handling has been improved.&amp;lt;br&amp;gt;&lt;br /&gt;
Library change: i_qpplus1 now defaults to X264_QP_AUTO. This doesn&#039;t actually change anything, as X264_QP_AUTO is 0, but this may change in the future. As a reminder, all x264_picture_t structs must be initialized using x264_picture_init or x264_picture_alloc!&amp;lt;br&amp;gt;&lt;br /&gt;
CRF values now make sense in high bit depth: --crf 23 means roughly the same quality in 8-bit or 10-bit, instead of being 4 times higher quality in 10-bit than in 8-bit.&amp;lt;br&amp;gt;&lt;br /&gt;
This means that --qp 0 should be used for lossless, not --crf 0. The latter will not result in lossless compression when in high bit depth mode.&amp;lt;br&amp;gt;&lt;br /&gt;
Bit depth has been added to statsfiles, to prevent users from inadvertently using a statsfile with the wrong bit depth. &lt;br /&gt;
&lt;br /&gt;
Scenecut&#039;s flash detection has been improved to work more sanely in the case of flashes at the end of the videos.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is nearly ready. Speed boost has been measured as about 4.3x and is still improving. &lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is critical for some broadcast applications. Unlike most competing encoders, this VBV Emergency Mode does not drop frames or force all blocks to skip or some similarly extreme step: it adds a &amp;quot;denoising&amp;quot; step to reduce the complexity of the video, which scales upwards until it simply removes all content at the most extreme level. &lt;br /&gt;
&lt;br /&gt;
A pad filter is nearly ready for the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding mostly finished. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007950.html Volume 5]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/19/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fifth x264 development newsletter. If you missed the first four, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
HRD now works correctly when used with intra refresh. Thanks to a certain x264 commercial licensee for the bug report. &lt;br /&gt;
&lt;br /&gt;
QPfile parsing now works as it was supposed to have worked last time: users should be able to omit QP values. &lt;br /&gt;
&lt;br /&gt;
Allocate the correct amount of memory for weightp buffers with weightp + high bit depth (it allocated too much, not too little). &lt;br /&gt;
&lt;br /&gt;
Fix flash detection to work correctly near the end of the keyframe interval. &lt;br /&gt;
&lt;br /&gt;
Fix a crash in dump yuv with some resolutions. &lt;br /&gt;
&lt;br /&gt;
Various fixes have been made to ratecontrol in high-bit-depth mode. &lt;br /&gt;
&lt;br /&gt;
Constrained intra pred is working properly again in all cases. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
x264&#039;s SEI header now indicates whether the build used was GPL or proprietary. &lt;br /&gt;
&lt;br /&gt;
x264 is now compatible with FFMS2&#039;s most recent API break. &lt;br /&gt;
&lt;br /&gt;
configure now logs test programs that failed, not just the error output. &lt;br /&gt;
&lt;br /&gt;
Merge Oskar&#039;s (irock&#039;s) 10-bit asm branch: ~4.4x overall speed boost in high bit depth mode. &lt;br /&gt;
&lt;br /&gt;
Chroma weighted prediction: dramatically improved chroma compression and quality in fades. &lt;br /&gt;
&lt;br /&gt;
Custom cropping rectangle support: users can now specify --crop-rect to add values to the H.264 cropping header. This is supposedly useful for 3D television applications (to allow legacy decoders to access only one view of the image). &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is important for some broadcast applications. &lt;br /&gt;
&lt;br /&gt;
The pad filter and yadif are nearly ready for the x264CLI filter framework. Both now support high bit depth. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding finished and inter coding begun. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks). &lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
Since we started a couple of months ago, over 40 companies have contacted us regarding x264 licensing! &lt;br /&gt;
&lt;br /&gt;
At least one major Blu-ray authoring house is switching to x264 for their commercial Blu-rays. &lt;br /&gt;
&lt;br /&gt;
At least one commercial encoding application based on x264 is currently in the works. An announcement will come Soon™. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264&amp;diff=18659</id>
		<title>X264</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264&amp;diff=18659"/>
		<updated>2011-01-26T07:44:45Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: /* Developers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase}}&lt;br /&gt;
&#039;&#039;&#039;x264&#039;&#039;&#039; is a free software library for encoding [[H.264/MPEG-4 AVC]] video streams.  The code is written by Loren Merritt, Laurent Aimar, Eric Petit, Min Chen, Justin Clay, Måns Rullgård, Radek Czyz, Alex Izvorski, Alex Wright, and Christian Heine from scratch.&lt;br /&gt;
&lt;br /&gt;
x264 has a strong user community based at [http://www.Doom9.org Doom9] where discussions for improved development take place.&lt;br /&gt;
&lt;br /&gt;
== Developers  ==&lt;br /&gt;
&lt;br /&gt;
* [http://developers.videolan.org/x264.html x264 home page]&lt;br /&gt;
* [[x264 Development Newsletters]]&lt;br /&gt;
* [[Development Notes]]&lt;br /&gt;
* [[X264 TODO]]&lt;br /&gt;
* [[x264 asm intro]]&lt;br /&gt;
&lt;br /&gt;
== Demos ==&lt;br /&gt;
[http://lives.rm.org/demos/flyingskunk.mkv flyingskunk.mkv] demo encoded with x264/vorbis/matroska - (96 MB, 640x480, 25 fps, 6 minutes), created using [http://lives.sourceforge.net LiVES]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{stub}}&lt;br /&gt;
&lt;br /&gt;
[[Category:VideoLAN projects]]&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18658</id>
		<title>X264 Development Newsletters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18658"/>
		<updated>2011-01-26T07:41:53Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: /* Volume 5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an archive of the x264 Development Newsletters. &lt;br /&gt;
&lt;br /&gt;
== Volume 1  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/18/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
From now on, with each weekly-ish push of new patches, I&#039;ll try to post a newsletter as well to give an update of what&#039;s going on and the changes. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
Different versions of 64-bit MinGW gcc were inconsistent with regards to whether or not to add a _ prefix to called functions. This broke compilation because the assembly code wouldn&#039;t link in correctly. &lt;br /&gt;
&lt;br /&gt;
Intra refresh got a lot of fixes thanks to bug reports by Chris Brien &amp;amp;lt;chris.brien@tandberg.com&amp;amp;gt;. Because x264 uses column refresh instead of row refresh, it has to be more careful with regards to which pixels it can predict from. This should fix some cases where intra refresh didn&#039;t refresh the whole frame correctly. Furthermore, it turns out that the recovery_frame_cnt syntax element, signaling the length of the intra refresh, is limited by the max frame number. Accordingly, x264 will raise the max frame number to ensure that recovery_frame_cnt is in spec. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
I&#039;ve gone through the file headers and updated them to be more accurate and consistent in terms of dates and authorship. It now also mentions the commercial license, on request from a licensee. &lt;br /&gt;
&lt;br /&gt;
The new --disable-gpl configure option is now added for companies using the commercial license. x264 --version will print both the license information of itself and of the linked libavformat (for decoding). It&#039;ll also warn you if the combination you&#039;ve put together isn&#039;t distributable, such as a nonfree ffmpeg + GPL x264, or a GPL ffmpeg + non-GPL x264. &lt;br /&gt;
&lt;br /&gt;
x264 now passes the &amp;quot;full chroma input&amp;quot; flag to swscale. This should fix this quality issue when using point scaling: http://doom10.org/index.php?topic=585.0 . &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
Kieran Kunhya &amp;amp;lt;kieran@kunhya.com&amp;amp;gt; has finally committed his arbitrary SEI patch, which lets calling apps give x264 any SEI they want to include in the stream. This is useful for closed-captioning, frame packing, and all kinds of other SEIs that x264 doesn&#039;t explicitly support but which the calling application can create itself if necessary. The advantage of giving these to x264 instead of just inserting them separately is that it allows the resulting stream to remain HRD-compliant, since x264 knows they exist. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit-depth input and filtering! x264 supports 10-bit encoding, but currently only takes 8-bit input. This change will finally create a stable API for high bit-depth input and allow users to filter in higher precision. It will also add dithering support to x264CLI for downconversion of high-bit-depth material. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Chroma ME in B-frames will be coming soon, giving an extra bit of compression to those using slower presets. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
After high bit-depth input is complete, a large amount of assembly code will be committed as well, improving high bit-depth encoding performance greatly. &lt;br /&gt;
&lt;br /&gt;
Ubuntu Maverick will include an updated x264, r1653. &lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-September/007808.html Volume 2]  ==&lt;br /&gt;
&#039;&#039;9/27/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
libx264 should now give correct DTS and print the correct bitrate if the input PTS do not start at zero. This doesn&#039;t affect x264CLI, but does affect calling apps that don&#039;t start their PTS at zero. &lt;br /&gt;
&lt;br /&gt;
libx264 ratecontrol should now work correctly in CFR mode with timebase&amp;amp;nbsp;!= 1/fps. As documented, x264 was supposed to ignore the timebase if CFR mode is set (for purposes of ratecontrol), but that&#039;s not what actually happened; things just broke. This should now be fixed. This is necessary for correct behavior with tune=zerolatency in gstreamer. &lt;br /&gt;
&lt;br /&gt;
A missing emms has been added to dump-yuv, fixing some Heisenbug brokenness when dump-yuv was used. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
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&#039;s extra byte, CAVLC&#039;s skip runs). The primary problem, however, was caused by the terrible design of H.264&#039;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. &lt;br /&gt;
&lt;br /&gt;
Chroma mode decision and subpel, mentioned in the last newsletter, is finally in. It&#039;s enabled at subme &amp;amp;gt;= 9 and provides a ~0.4-1% compression improvement. &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
High-bit-depth support has been finished in libx264 and x264cli. The assembly code is still yet to be committed, so it&#039;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&#039;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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-October/007858.html Volume 3]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;10/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the third x264 development newsletter. If you missed the first two, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The sigint handler in x264cli is now volatile, like it should have been. This likely didn&#039;t actually affect anything on any real system, but it&#039;s more correct. &lt;br /&gt;
&lt;br /&gt;
-DNDEBUG broke the filtering system. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
The bugfix from last week regarding intra refresh predicting from topright blocks didn&#039;t work with 8x8dct. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
2-pass ratecontrol now works with CBR HRD. Previously, it ignored filler bits, and thus broke horribly. In general, you don&#039;t need 2-pass for CBR (and it probably doesn&#039;t help), but it should work better now. &lt;br /&gt;
&lt;br /&gt;
A missing mod4-stack check was added; this should fix ICC builds on Phenom CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
The build tree has been cleaned a bit. A bunch of old stuff, like the non-working regression test and doxy, have been removed. &lt;br /&gt;
&lt;br /&gt;
Some of the information in doc/ has been updated to be less absurdly out of date, or at least inform the reader that it is absurdly out of date. &lt;br /&gt;
&lt;br /&gt;
DTS compression has been moved out of the libx264 API and into the muxers, because it&#039;s a giant hack and it was making things ugly and messy (and starting to interfere with ratecontrol). &lt;br /&gt;
&lt;br /&gt;
Various asm functions have been improved, particularly the qpel MC functions. Should help performance a bit on Core 2 and similar CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007920.html Volume 4]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fourth x264 development newsletter. If you missed the first three, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The Altivec SATD gave wrong results with very small strides (e.g. 8). This made output on PPC slightly different from x86, due to different results in lookahead and chroma ME. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
FPS reporting on Windows 64-bit was very imprecise (the timers were only accurate to 1 second). This was due to _ftime using the wrong struct due to the Windows ABI&#039;s complete retardation. This has been fixed by using ftime instead. &lt;br /&gt;
&lt;br /&gt;
ssd_nv12 has been improved to eliminate overflow at high bit depths (this would, in theory, give wrong PSNR). &lt;br /&gt;
&lt;br /&gt;
SATD/SA8D/Hadamard_ac have been improved to eliminate overflow at high bit depths (this would cause wrong analysis results). &lt;br /&gt;
&lt;br /&gt;
Three ratecontrol bugs have been fixed: &lt;br /&gt;
&lt;br /&gt;
#B-frame size prediction has been fixed (it used quantizer instead of linearized qscale). This should improve VBV.&lt;br /&gt;
#Overflow compensation, originally designed for 1-pass ABR, has been disabled with CRF on, as it doesn&#039;t do anything useful with pure CRF and causes very bizarre results with CRF+VBV in areas of extremely high complexity. &lt;br /&gt;
#A bug in the way that clip_qscale caps the amount by which a frame can be higher quality than a previous frame (as a result of attempting to use up extra bits that would otherwise be wasted) has been fixed. This caused CBR to take extremely long times (e.g. seconds) to recover from extreme changes in complexity at low bitrates.&lt;br /&gt;
&lt;br /&gt;
A possible linking problem with lavf has been fixed. &lt;br /&gt;
&lt;br /&gt;
Some MV/ref prefetching code was in the wrong place. Fixing this may result in a tiny performance improvement.&lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
doc/threads.txt has been updated with modern benchmarks. This information may be useful to anyone looking to compare the impact of various threading strategies on quality and performance, as well as get an idea of how well x264 scales over multiple cores at various encoding speeds. &lt;br /&gt;
&lt;br /&gt;
The presets are now addressable numerically (0=ultrafast...9=placebo).&lt;br /&gt;
The exact mappings may change in the future if new presets are added or old presets removed, but they will always be in linear order of fast to slow. &lt;br /&gt;
&lt;br /&gt;
The ffmpeg -vpre error message (if a user doesn&#039;t use a -vpre) has been made more descriptive, to better instruct users about how the ffmpeg -vpre system works. &lt;br /&gt;
&lt;br /&gt;
weightp -1 offset dupes are now disabled in high bit depth mode, as they&#039;re a hack to get around crappy rounding in 8-bit encoding, and thus don&#039;t help in high bit depth. &lt;br /&gt;
&lt;br /&gt;
PSNR and SSIM measurements are now VFR-aware! This means they will take into account the duration of frames. This may result in PSNR and SSIM results appearing dramatically different from other tools when used on variable framerate video. Don&#039;t fret; x264 is correct, they are not. Of course, results will stay the same for constant framerate video. This is the first step to VFR-aware MB-tree. &lt;br /&gt;
&lt;br /&gt;
Quantizer handling has been improved.&lt;br /&gt;
&lt;br /&gt;
Library change: i_qpplus1 now defaults to X264_QP_AUTO. This doesn&#039;t actually change anything, as X264_QP_AUTO is 0, but this may change in the future. As a reminder, all x264_picture_t structs must be initialized using x264_picture_init or x264_picture_alloc!&lt;br /&gt;
&lt;br /&gt;
CRF values now make sense in high bit depth: --crf 23 means roughly the same quality in 8-bit or 10-bit, instead of being 4 times higher quality in 10-bit than in 8-bit.&lt;br /&gt;
&lt;br /&gt;
This means that --qp 0 should be used for lossless, not --crf 0. The latter will not result in lossless compression when in high bit depth mode.&lt;br /&gt;
&lt;br /&gt;
Bit depth has been added to statsfiles, to prevent users from inadvertently using a statsfile with the wrong bit depth. &lt;br /&gt;
&lt;br /&gt;
Scenecut&#039;s flash detection has been improved to work more sanely in the case of flashes at the end of the videos.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is nearly ready. Speed boost has been measured as about 4.3x and is still improving. &lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is critical for some broadcast applications. Unlike most competing encoders, this VBV Emergency Mode does not drop frames or force all blocks to skip or some similarly extreme step: it adds a &amp;quot;denoising&amp;quot; step to reduce the complexity of the video, which scales upwards until it simply removes all content at the most extreme level. &lt;br /&gt;
&lt;br /&gt;
A pad filter is nearly ready for the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding mostly finished. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007950.html Volume 5]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/19/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fifth x264 development newsletter. If you missed the first four, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
HRD now works correctly when used with intra refresh. Thanks to a certain x264 commercial licensee for the bug report. &lt;br /&gt;
&lt;br /&gt;
QPfile parsing now works as it was supposed to have worked last time: users should be able to omit QP values. &lt;br /&gt;
&lt;br /&gt;
Allocate the correct amount of memory for weightp buffers with weightp + high bit depth (it allocated too much, not too little). &lt;br /&gt;
&lt;br /&gt;
Fix flash detection to work correctly near the end of the keyframe interval. &lt;br /&gt;
&lt;br /&gt;
Fix a crash in dump yuv with some resolutions. &lt;br /&gt;
&lt;br /&gt;
Various fixes have been made to ratecontrol in high-bit-depth mode. &lt;br /&gt;
&lt;br /&gt;
Constrained intra pred is working properly again in all cases. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
x264&#039;s SEI header now indicates whether the build used was GPL or proprietary. &lt;br /&gt;
&lt;br /&gt;
x264 is now compatible with FFMS2&#039;s most recent API break. &lt;br /&gt;
&lt;br /&gt;
configure now logs test programs that failed, not just the error output. &lt;br /&gt;
&lt;br /&gt;
Merge Oskar&#039;s (irock&#039;s) 10-bit asm branch: ~4.4x overall speed boost in high bit depth mode. &lt;br /&gt;
&lt;br /&gt;
Chroma weighted prediction: dramatically improved chroma compression and quality in fades. &lt;br /&gt;
&lt;br /&gt;
Custom cropping rectangle support: users can now specify --crop-rect to add values to the H.264 cropping header. This is supposedly useful for 3D television applications (to allow legacy decoders to access only one view of the image). &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is important for some broadcast applications. &lt;br /&gt;
&lt;br /&gt;
The pad filter and yadif are nearly ready for the x264CLI filter framework. Both now support high bit depth. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding finished and inter coding begun. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks). &lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
Since we started a couple of months ago, over 40 companies have contacted us regarding x264 licensing! &lt;br /&gt;
&lt;br /&gt;
At least one major Blu-ray authoring house is switching to x264 for their commercial Blu-rays. &lt;br /&gt;
&lt;br /&gt;
At least one commercial encoding application based on x264 is currently in the works. An announcement will come Soon™. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18657</id>
		<title>X264 Development Newsletters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18657"/>
		<updated>2011-01-26T07:40:56Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: /* Volume 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an archive of the x264 Development Newsletters. &lt;br /&gt;
&lt;br /&gt;
== Volume 1  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/18/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
From now on, with each weekly-ish push of new patches, I&#039;ll try to post a newsletter as well to give an update of what&#039;s going on and the changes. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
Different versions of 64-bit MinGW gcc were inconsistent with regards to whether or not to add a _ prefix to called functions. This broke compilation because the assembly code wouldn&#039;t link in correctly. &lt;br /&gt;
&lt;br /&gt;
Intra refresh got a lot of fixes thanks to bug reports by Chris Brien &amp;amp;lt;chris.brien@tandberg.com&amp;amp;gt;. Because x264 uses column refresh instead of row refresh, it has to be more careful with regards to which pixels it can predict from. This should fix some cases where intra refresh didn&#039;t refresh the whole frame correctly. Furthermore, it turns out that the recovery_frame_cnt syntax element, signaling the length of the intra refresh, is limited by the max frame number. Accordingly, x264 will raise the max frame number to ensure that recovery_frame_cnt is in spec. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
I&#039;ve gone through the file headers and updated them to be more accurate and consistent in terms of dates and authorship. It now also mentions the commercial license, on request from a licensee. &lt;br /&gt;
&lt;br /&gt;
The new --disable-gpl configure option is now added for companies using the commercial license. x264 --version will print both the license information of itself and of the linked libavformat (for decoding). It&#039;ll also warn you if the combination you&#039;ve put together isn&#039;t distributable, such as a nonfree ffmpeg + GPL x264, or a GPL ffmpeg + non-GPL x264. &lt;br /&gt;
&lt;br /&gt;
x264 now passes the &amp;quot;full chroma input&amp;quot; flag to swscale. This should fix this quality issue when using point scaling: http://doom10.org/index.php?topic=585.0 . &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
Kieran Kunhya &amp;amp;lt;kieran@kunhya.com&amp;amp;gt; has finally committed his arbitrary SEI patch, which lets calling apps give x264 any SEI they want to include in the stream. This is useful for closed-captioning, frame packing, and all kinds of other SEIs that x264 doesn&#039;t explicitly support but which the calling application can create itself if necessary. The advantage of giving these to x264 instead of just inserting them separately is that it allows the resulting stream to remain HRD-compliant, since x264 knows they exist. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit-depth input and filtering! x264 supports 10-bit encoding, but currently only takes 8-bit input. This change will finally create a stable API for high bit-depth input and allow users to filter in higher precision. It will also add dithering support to x264CLI for downconversion of high-bit-depth material. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Chroma ME in B-frames will be coming soon, giving an extra bit of compression to those using slower presets. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
After high bit-depth input is complete, a large amount of assembly code will be committed as well, improving high bit-depth encoding performance greatly. &lt;br /&gt;
&lt;br /&gt;
Ubuntu Maverick will include an updated x264, r1653. &lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-September/007808.html Volume 2]  ==&lt;br /&gt;
&#039;&#039;9/27/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
libx264 should now give correct DTS and print the correct bitrate if the input PTS do not start at zero. This doesn&#039;t affect x264CLI, but does affect calling apps that don&#039;t start their PTS at zero. &lt;br /&gt;
&lt;br /&gt;
libx264 ratecontrol should now work correctly in CFR mode with timebase&amp;amp;nbsp;!= 1/fps. As documented, x264 was supposed to ignore the timebase if CFR mode is set (for purposes of ratecontrol), but that&#039;s not what actually happened; things just broke. This should now be fixed. This is necessary for correct behavior with tune=zerolatency in gstreamer. &lt;br /&gt;
&lt;br /&gt;
A missing emms has been added to dump-yuv, fixing some Heisenbug brokenness when dump-yuv was used. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
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&#039;s extra byte, CAVLC&#039;s skip runs). The primary problem, however, was caused by the terrible design of H.264&#039;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. &lt;br /&gt;
&lt;br /&gt;
Chroma mode decision and subpel, mentioned in the last newsletter, is finally in. It&#039;s enabled at subme &amp;amp;gt;= 9 and provides a ~0.4-1% compression improvement. &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
High-bit-depth support has been finished in libx264 and x264cli. The assembly code is still yet to be committed, so it&#039;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&#039;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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-October/007858.html Volume 3]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;10/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the third x264 development newsletter. If you missed the first two, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The sigint handler in x264cli is now volatile, like it should have been. This likely didn&#039;t actually affect anything on any real system, but it&#039;s more correct. &lt;br /&gt;
&lt;br /&gt;
-DNDEBUG broke the filtering system. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
The bugfix from last week regarding intra refresh predicting from topright blocks didn&#039;t work with 8x8dct. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
2-pass ratecontrol now works with CBR HRD. Previously, it ignored filler bits, and thus broke horribly. In general, you don&#039;t need 2-pass for CBR (and it probably doesn&#039;t help), but it should work better now. &lt;br /&gt;
&lt;br /&gt;
A missing mod4-stack check was added; this should fix ICC builds on Phenom CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
The build tree has been cleaned a bit. A bunch of old stuff, like the non-working regression test and doxy, have been removed. &lt;br /&gt;
&lt;br /&gt;
Some of the information in doc/ has been updated to be less absurdly out of date, or at least inform the reader that it is absurdly out of date. &lt;br /&gt;
&lt;br /&gt;
DTS compression has been moved out of the libx264 API and into the muxers, because it&#039;s a giant hack and it was making things ugly and messy (and starting to interfere with ratecontrol). &lt;br /&gt;
&lt;br /&gt;
Various asm functions have been improved, particularly the qpel MC functions. Should help performance a bit on Core 2 and similar CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-November/007920.html Volume 4]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fourth x264 development newsletter. If you missed the first three, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The Altivec SATD gave wrong results with very small strides (e.g. 8). This made output on PPC slightly different from x86, due to different results in lookahead and chroma ME. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
FPS reporting on Windows 64-bit was very imprecise (the timers were only accurate to 1 second). This was due to _ftime using the wrong struct due to the Windows ABI&#039;s complete retardation. This has been fixed by using ftime instead. &lt;br /&gt;
&lt;br /&gt;
ssd_nv12 has been improved to eliminate overflow at high bit depths (this would, in theory, give wrong PSNR). &lt;br /&gt;
&lt;br /&gt;
SATD/SA8D/Hadamard_ac have been improved to eliminate overflow at high bit depths (this would cause wrong analysis results). &lt;br /&gt;
&lt;br /&gt;
Three ratecontrol bugs have been fixed: &lt;br /&gt;
&lt;br /&gt;
#B-frame size prediction has been fixed (it used quantizer instead of linearized qscale). This should improve VBV.&lt;br /&gt;
#Overflow compensation, originally designed for 1-pass ABR, has been disabled with CRF on, as it doesn&#039;t do anything useful with pure CRF and causes very bizarre results with CRF+VBV in areas of extremely high complexity. &lt;br /&gt;
#A bug in the way that clip_qscale caps the amount by which a frame can be higher quality than a previous frame (as a result of attempting to use up extra bits that would otherwise be wasted) has been fixed. This caused CBR to take extremely long times (e.g. seconds) to recover from extreme changes in complexity at low bitrates.&lt;br /&gt;
&lt;br /&gt;
A possible linking problem with lavf has been fixed. &lt;br /&gt;
&lt;br /&gt;
Some MV/ref prefetching code was in the wrong place. Fixing this may result in a tiny performance improvement.&lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
doc/threads.txt has been updated with modern benchmarks. This information may be useful to anyone looking to compare the impact of various threading strategies on quality and performance, as well as get an idea of how well x264 scales over multiple cores at various encoding speeds. &lt;br /&gt;
&lt;br /&gt;
The presets are now addressable numerically (0=ultrafast...9=placebo).&lt;br /&gt;
The exact mappings may change in the future if new presets are added or old presets removed, but they will always be in linear order of fast to slow. &lt;br /&gt;
&lt;br /&gt;
The ffmpeg -vpre error message (if a user doesn&#039;t use a -vpre) has been made more descriptive, to better instruct users about how the ffmpeg -vpre system works. &lt;br /&gt;
&lt;br /&gt;
weightp -1 offset dupes are now disabled in high bit depth mode, as they&#039;re a hack to get around crappy rounding in 8-bit encoding, and thus don&#039;t help in high bit depth. &lt;br /&gt;
&lt;br /&gt;
PSNR and SSIM measurements are now VFR-aware! This means they will take into account the duration of frames. This may result in PSNR and SSIM results appearing dramatically different from other tools when used on variable framerate video. Don&#039;t fret; x264 is correct, they are not. Of course, results will stay the same for constant framerate video. This is the first step to VFR-aware MB-tree. &lt;br /&gt;
&lt;br /&gt;
Quantizer handling has been improved.&lt;br /&gt;
&lt;br /&gt;
Library change: i_qpplus1 now defaults to X264_QP_AUTO. This doesn&#039;t actually change anything, as X264_QP_AUTO is 0, but this may change in the future. As a reminder, all x264_picture_t structs must be initialized using x264_picture_init or x264_picture_alloc!&lt;br /&gt;
&lt;br /&gt;
CRF values now make sense in high bit depth: --crf 23 means roughly the same quality in 8-bit or 10-bit, instead of being 4 times higher quality in 10-bit than in 8-bit.&lt;br /&gt;
&lt;br /&gt;
This means that --qp 0 should be used for lossless, not --crf 0. The latter will not result in lossless compression when in high bit depth mode.&lt;br /&gt;
&lt;br /&gt;
Bit depth has been added to statsfiles, to prevent users from inadvertently using a statsfile with the wrong bit depth. &lt;br /&gt;
&lt;br /&gt;
Scenecut&#039;s flash detection has been improved to work more sanely in the case of flashes at the end of the videos.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is nearly ready. Speed boost has been measured as about 4.3x and is still improving. &lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is critical for some broadcast applications. Unlike most competing encoders, this VBV Emergency Mode does not drop frames or force all blocks to skip or some similarly extreme step: it adds a &amp;quot;denoising&amp;quot; step to reduce the complexity of the video, which scales upwards until it simply removes all content at the most extreme level. &lt;br /&gt;
&lt;br /&gt;
A pad filter is nearly ready for the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding mostly finished. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel.&lt;br /&gt;
&lt;br /&gt;
== Volume 5  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/19/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fifth x264 development newsletter. If you missed the first four, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
HRD now works correctly when used with intra refresh. Thanks to a certain x264 commercial licensee for the bug report. &lt;br /&gt;
&lt;br /&gt;
QPfile parsing now works as it was supposed to have worked last time: users should be able to omit QP values. &lt;br /&gt;
&lt;br /&gt;
Allocate the correct amount of memory for weightp buffers with weightp + high bit depth (it allocated too much, not too little). &lt;br /&gt;
&lt;br /&gt;
Fix flash detection to work correctly near the end of the keyframe interval. &lt;br /&gt;
&lt;br /&gt;
Fix a crash in dump yuv with some resolutions. &lt;br /&gt;
&lt;br /&gt;
Various fixes have been made to ratecontrol in high-bit-depth mode. &lt;br /&gt;
&lt;br /&gt;
Constrained intra pred is working properly again in all cases. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
x264&#039;s SEI header now indicates whether the build used was GPL or proprietary. &lt;br /&gt;
&lt;br /&gt;
x264 is now compatible with FFMS2&#039;s most recent API break. &lt;br /&gt;
&lt;br /&gt;
configure now logs test programs that failed, not just the error output. &lt;br /&gt;
&lt;br /&gt;
Merge Oskar&#039;s (irock&#039;s) 10-bit asm branch: ~4.4x overall speed boost in high bit depth mode. &lt;br /&gt;
&lt;br /&gt;
Chroma weighted prediction: dramatically improved chroma compression and quality in fades. &lt;br /&gt;
&lt;br /&gt;
Custom cropping rectangle support: users can now specify --crop-rect to add values to the H.264 cropping header. This is supposedly useful for 3D television applications (to allow legacy decoders to access only one view of the image). &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is important for some broadcast applications. &lt;br /&gt;
&lt;br /&gt;
The pad filter and yadif are nearly ready for the x264CLI filter framework. Both now support high bit depth. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding finished and inter coding begun. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks). &lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
Since we started a couple of months ago, over 40 companies have contacted us regarding x264 licensing! &lt;br /&gt;
&lt;br /&gt;
At least one major Blu-ray authoring house is switching to x264 for their commercial Blu-rays. &lt;br /&gt;
&lt;br /&gt;
At least one commercial encoding application based on x264 is currently in the works. An announcement will come Soon™. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18656</id>
		<title>X264 Development Newsletters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18656"/>
		<updated>2011-01-26T07:40:00Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: /* Volume 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an archive of the x264 Development Newsletters. &lt;br /&gt;
&lt;br /&gt;
== Volume 1  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/18/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
From now on, with each weekly-ish push of new patches, I&#039;ll try to post a newsletter as well to give an update of what&#039;s going on and the changes. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
Different versions of 64-bit MinGW gcc were inconsistent with regards to whether or not to add a _ prefix to called functions. This broke compilation because the assembly code wouldn&#039;t link in correctly. &lt;br /&gt;
&lt;br /&gt;
Intra refresh got a lot of fixes thanks to bug reports by Chris Brien &amp;amp;lt;chris.brien@tandberg.com&amp;amp;gt;. Because x264 uses column refresh instead of row refresh, it has to be more careful with regards to which pixels it can predict from. This should fix some cases where intra refresh didn&#039;t refresh the whole frame correctly. Furthermore, it turns out that the recovery_frame_cnt syntax element, signaling the length of the intra refresh, is limited by the max frame number. Accordingly, x264 will raise the max frame number to ensure that recovery_frame_cnt is in spec. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
I&#039;ve gone through the file headers and updated them to be more accurate and consistent in terms of dates and authorship. It now also mentions the commercial license, on request from a licensee. &lt;br /&gt;
&lt;br /&gt;
The new --disable-gpl configure option is now added for companies using the commercial license. x264 --version will print both the license information of itself and of the linked libavformat (for decoding). It&#039;ll also warn you if the combination you&#039;ve put together isn&#039;t distributable, such as a nonfree ffmpeg + GPL x264, or a GPL ffmpeg + non-GPL x264. &lt;br /&gt;
&lt;br /&gt;
x264 now passes the &amp;quot;full chroma input&amp;quot; flag to swscale. This should fix this quality issue when using point scaling: http://doom10.org/index.php?topic=585.0 . &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
Kieran Kunhya &amp;amp;lt;kieran@kunhya.com&amp;amp;gt; has finally committed his arbitrary SEI patch, which lets calling apps give x264 any SEI they want to include in the stream. This is useful for closed-captioning, frame packing, and all kinds of other SEIs that x264 doesn&#039;t explicitly support but which the calling application can create itself if necessary. The advantage of giving these to x264 instead of just inserting them separately is that it allows the resulting stream to remain HRD-compliant, since x264 knows they exist. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit-depth input and filtering! x264 supports 10-bit encoding, but currently only takes 8-bit input. This change will finally create a stable API for high bit-depth input and allow users to filter in higher precision. It will also add dithering support to x264CLI for downconversion of high-bit-depth material. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Chroma ME in B-frames will be coming soon, giving an extra bit of compression to those using slower presets. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
After high bit-depth input is complete, a large amount of assembly code will be committed as well, improving high bit-depth encoding performance greatly. &lt;br /&gt;
&lt;br /&gt;
Ubuntu Maverick will include an updated x264, r1653. &lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-September/007808.html Volume 2]  ==&lt;br /&gt;
&#039;&#039;9/27/2010&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
libx264 should now give correct DTS and print the correct bitrate if the input PTS do not start at zero. This doesn&#039;t affect x264CLI, but does affect calling apps that don&#039;t start their PTS at zero. &lt;br /&gt;
&lt;br /&gt;
libx264 ratecontrol should now work correctly in CFR mode with timebase&amp;amp;nbsp;!= 1/fps. As documented, x264 was supposed to ignore the timebase if CFR mode is set (for purposes of ratecontrol), but that&#039;s not what actually happened; things just broke. This should now be fixed. This is necessary for correct behavior with tune=zerolatency in gstreamer. &lt;br /&gt;
&lt;br /&gt;
A missing emms has been added to dump-yuv, fixing some Heisenbug brokenness when dump-yuv was used. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
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&#039;s extra byte, CAVLC&#039;s skip runs). The primary problem, however, was caused by the terrible design of H.264&#039;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. &lt;br /&gt;
&lt;br /&gt;
Chroma mode decision and subpel, mentioned in the last newsletter, is finally in. It&#039;s enabled at subme &amp;amp;gt;= 9 and provides a ~0.4-1% compression improvement. &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
High-bit-depth support has been finished in libx264 and x264cli. The assembly code is still yet to be committed, so it&#039;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&#039;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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-October/007858.html Volume 3]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;10/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the third x264 development newsletter. If you missed the first two, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The sigint handler in x264cli is now volatile, like it should have been. This likely didn&#039;t actually affect anything on any real system, but it&#039;s more correct. &lt;br /&gt;
&lt;br /&gt;
-DNDEBUG broke the filtering system. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
The bugfix from last week regarding intra refresh predicting from topright blocks didn&#039;t work with 8x8dct. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
2-pass ratecontrol now works with CBR HRD. Previously, it ignored filler bits, and thus broke horribly. In general, you don&#039;t need 2-pass for CBR (and it probably doesn&#039;t help), but it should work better now. &lt;br /&gt;
&lt;br /&gt;
A missing mod4-stack check was added; this should fix ICC builds on Phenom CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
The build tree has been cleaned a bit. A bunch of old stuff, like the non-working regression test and doxy, have been removed. &lt;br /&gt;
&lt;br /&gt;
Some of the information in doc/ has been updated to be less absurdly out of date, or at least inform the reader that it is absurdly out of date. &lt;br /&gt;
&lt;br /&gt;
DTS compression has been moved out of the libx264 API and into the muxers, because it&#039;s a giant hack and it was making things ugly and messy (and starting to interfere with ratecontrol). &lt;br /&gt;
&lt;br /&gt;
Various asm functions have been improved, particularly the qpel MC functions. Should help performance a bit on Core 2 and similar CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.&lt;br /&gt;
&lt;br /&gt;
== Volume 4  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fourth x264 development newsletter. If you missed the first three, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The Altivec SATD gave wrong results with very small strides (e.g. 8). This made output on PPC slightly different from x86, due to different results in lookahead and chroma ME. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
FPS reporting on Windows 64-bit was very imprecise (the timers were only accurate to 1 second). This was due to _ftime using the wrong struct due to the Windows ABI&#039;s complete retardation. This has been fixed by using ftime instead. &lt;br /&gt;
&lt;br /&gt;
ssd_nv12 has been improved to eliminate overflow at high bit depths (this would, in theory, give wrong PSNR). &lt;br /&gt;
&lt;br /&gt;
SATD/SA8D/Hadamard_ac have been improved to eliminate overflow at high bit depths (this would cause wrong analysis results). &lt;br /&gt;
&lt;br /&gt;
Three ratecontrol bugs have been fixed: &lt;br /&gt;
&lt;br /&gt;
#B-frame size prediction has been fixed (it used quantizer instead of linearized qscale). This should improve VBV.&lt;br /&gt;
#Overflow compensation, originally designed for 1-pass ABR, has been disabled with CRF on, as it doesn&#039;t do anything useful with pure CRF and causes very bizarre results with CRF+VBV in areas of extremely high complexity. &lt;br /&gt;
#A bug in the way that clip_qscale caps the amount by which a frame can be higher quality than a previous frame (as a result of attempting to use up extra bits that would otherwise be wasted) has been fixed. This caused CBR to take extremely long times (e.g. seconds) to recover from extreme changes in complexity at low bitrates.&lt;br /&gt;
&lt;br /&gt;
A possible linking problem with lavf has been fixed. &lt;br /&gt;
&lt;br /&gt;
Some MV/ref prefetching code was in the wrong place. Fixing this may result in a tiny performance improvement.&lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
doc/threads.txt has been updated with modern benchmarks. This information may be useful to anyone looking to compare the impact of various threading strategies on quality and performance, as well as get an idea of how well x264 scales over multiple cores at various encoding speeds. &lt;br /&gt;
&lt;br /&gt;
The presets are now addressable numerically (0=ultrafast...9=placebo).&lt;br /&gt;
The exact mappings may change in the future if new presets are added or old presets removed, but they will always be in linear order of fast to slow. &lt;br /&gt;
&lt;br /&gt;
The ffmpeg -vpre error message (if a user doesn&#039;t use a -vpre) has been made more descriptive, to better instruct users about how the ffmpeg -vpre system works. &lt;br /&gt;
&lt;br /&gt;
weightp -1 offset dupes are now disabled in high bit depth mode, as they&#039;re a hack to get around crappy rounding in 8-bit encoding, and thus don&#039;t help in high bit depth. &lt;br /&gt;
&lt;br /&gt;
PSNR and SSIM measurements are now VFR-aware! This means they will take into account the duration of frames. This may result in PSNR and SSIM results appearing dramatically different from other tools when used on variable framerate video. Don&#039;t fret; x264 is correct, they are not. Of course, results will stay the same for constant framerate video. This is the first step to VFR-aware MB-tree. &lt;br /&gt;
&lt;br /&gt;
Quantizer handling has been improved.&lt;br /&gt;
&lt;br /&gt;
Library change: i_qpplus1 now defaults to X264_QP_AUTO. This doesn&#039;t actually change anything, as X264_QP_AUTO is 0, but this may change in the future. As a reminder, all x264_picture_t structs must be initialized using x264_picture_init or x264_picture_alloc!&lt;br /&gt;
&lt;br /&gt;
CRF values now make sense in high bit depth: --crf 23 means roughly the same quality in 8-bit or 10-bit, instead of being 4 times higher quality in 10-bit than in 8-bit.&lt;br /&gt;
&lt;br /&gt;
This means that --qp 0 should be used for lossless, not --crf 0. The latter will not result in lossless compression when in high bit depth mode.&lt;br /&gt;
&lt;br /&gt;
Bit depth has been added to statsfiles, to prevent users from inadvertently using a statsfile with the wrong bit depth. &lt;br /&gt;
&lt;br /&gt;
Scenecut&#039;s flash detection has been improved to work more sanely in the case of flashes at the end of the videos.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is nearly ready. Speed boost has been measured as about 4.3x and is still improving. &lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is critical for some broadcast applications. Unlike most competing encoders, this VBV Emergency Mode does not drop frames or force all blocks to skip or some similarly extreme step: it adds a &amp;quot;denoising&amp;quot; step to reduce the complexity of the video, which scales upwards until it simply removes all content at the most extreme level. &lt;br /&gt;
&lt;br /&gt;
A pad filter is nearly ready for the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding mostly finished. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel. &lt;br /&gt;
&lt;br /&gt;
== Volume 5  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/19/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fifth x264 development newsletter. If you missed the first four, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
HRD now works correctly when used with intra refresh. Thanks to a certain x264 commercial licensee for the bug report. &lt;br /&gt;
&lt;br /&gt;
QPfile parsing now works as it was supposed to have worked last time: users should be able to omit QP values. &lt;br /&gt;
&lt;br /&gt;
Allocate the correct amount of memory for weightp buffers with weightp + high bit depth (it allocated too much, not too little). &lt;br /&gt;
&lt;br /&gt;
Fix flash detection to work correctly near the end of the keyframe interval. &lt;br /&gt;
&lt;br /&gt;
Fix a crash in dump yuv with some resolutions. &lt;br /&gt;
&lt;br /&gt;
Various fixes have been made to ratecontrol in high-bit-depth mode. &lt;br /&gt;
&lt;br /&gt;
Constrained intra pred is working properly again in all cases. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
x264&#039;s SEI header now indicates whether the build used was GPL or proprietary. &lt;br /&gt;
&lt;br /&gt;
x264 is now compatible with FFMS2&#039;s most recent API break. &lt;br /&gt;
&lt;br /&gt;
configure now logs test programs that failed, not just the error output. &lt;br /&gt;
&lt;br /&gt;
Merge Oskar&#039;s (irock&#039;s) 10-bit asm branch: ~4.4x overall speed boost in high bit depth mode. &lt;br /&gt;
&lt;br /&gt;
Chroma weighted prediction: dramatically improved chroma compression and quality in fades. &lt;br /&gt;
&lt;br /&gt;
Custom cropping rectangle support: users can now specify --crop-rect to add values to the H.264 cropping header. This is supposedly useful for 3D television applications (to allow legacy decoders to access only one view of the image). &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is important for some broadcast applications. &lt;br /&gt;
&lt;br /&gt;
The pad filter and yadif are nearly ready for the x264CLI filter framework. Both now support high bit depth. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding finished and inter coding begun. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks). &lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
Since we started a couple of months ago, over 40 companies have contacted us regarding x264 licensing! &lt;br /&gt;
&lt;br /&gt;
At least one major Blu-ray authoring house is switching to x264 for their commercial Blu-rays. &lt;br /&gt;
&lt;br /&gt;
At least one commercial encoding application based on x264 is currently in the works. An announcement will come Soon™. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18655</id>
		<title>X264 Development Newsletters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18655"/>
		<updated>2011-01-26T07:39:24Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: /* Volume 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an archive of the x264 Development Newsletters. &lt;br /&gt;
&lt;br /&gt;
== Volume 1  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/18/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
From now on, with each weekly-ish push of new patches, I&#039;ll try to post a newsletter as well to give an update of what&#039;s going on and the changes. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
Different versions of 64-bit MinGW gcc were inconsistent with regards to whether or not to add a _ prefix to called functions. This broke compilation because the assembly code wouldn&#039;t link in correctly. &lt;br /&gt;
&lt;br /&gt;
Intra refresh got a lot of fixes thanks to bug reports by Chris Brien &amp;amp;lt;chris.brien@tandberg.com&amp;amp;gt;. Because x264 uses column refresh instead of row refresh, it has to be more careful with regards to which pixels it can predict from. This should fix some cases where intra refresh didn&#039;t refresh the whole frame correctly. Furthermore, it turns out that the recovery_frame_cnt syntax element, signaling the length of the intra refresh, is limited by the max frame number. Accordingly, x264 will raise the max frame number to ensure that recovery_frame_cnt is in spec. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
I&#039;ve gone through the file headers and updated them to be more accurate and consistent in terms of dates and authorship. It now also mentions the commercial license, on request from a licensee. &lt;br /&gt;
&lt;br /&gt;
The new --disable-gpl configure option is now added for companies using the commercial license. x264 --version will print both the license information of itself and of the linked libavformat (for decoding). It&#039;ll also warn you if the combination you&#039;ve put together isn&#039;t distributable, such as a nonfree ffmpeg + GPL x264, or a GPL ffmpeg + non-GPL x264. &lt;br /&gt;
&lt;br /&gt;
x264 now passes the &amp;quot;full chroma input&amp;quot; flag to swscale. This should fix this quality issue when using point scaling: http://doom10.org/index.php?topic=585.0 . &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
Kieran Kunhya &amp;amp;lt;kieran@kunhya.com&amp;amp;gt; has finally committed his arbitrary SEI patch, which lets calling apps give x264 any SEI they want to include in the stream. This is useful for closed-captioning, frame packing, and all kinds of other SEIs that x264 doesn&#039;t explicitly support but which the calling application can create itself if necessary. The advantage of giving these to x264 instead of just inserting them separately is that it allows the resulting stream to remain HRD-compliant, since x264 knows they exist. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit-depth input and filtering! x264 supports 10-bit encoding, but currently only takes 8-bit input. This change will finally create a stable API for high bit-depth input and allow users to filter in higher precision. It will also add dithering support to x264CLI for downconversion of high-bit-depth material. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Chroma ME in B-frames will be coming soon, giving an extra bit of compression to those using slower presets. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
After high bit-depth input is complete, a large amount of assembly code will be committed as well, improving high bit-depth encoding performance greatly. &lt;br /&gt;
&lt;br /&gt;
Ubuntu Maverick will include an updated x264, r1653. &lt;br /&gt;
&lt;br /&gt;
== Volume 2  ==&lt;br /&gt;
&#039;&#039;[http://mailman.videolan.org/pipermail/x264-devel/2010-September/007808.html 9/27/2010]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
libx264 should now give correct DTS and print the correct bitrate if the input PTS do not start at zero. This doesn&#039;t affect x264CLI, but does affect calling apps that don&#039;t start their PTS at zero. &lt;br /&gt;
&lt;br /&gt;
libx264 ratecontrol should now work correctly in CFR mode with timebase&amp;amp;nbsp;!= 1/fps. As documented, x264 was supposed to ignore the timebase if CFR mode is set (for purposes of ratecontrol), but that&#039;s not what actually happened; things just broke. This should now be fixed. This is necessary for correct behavior with tune=zerolatency in gstreamer. &lt;br /&gt;
&lt;br /&gt;
A missing emms has been added to dump-yuv, fixing some Heisenbug brokenness when dump-yuv was used. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
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&#039;s extra byte, CAVLC&#039;s skip runs). The primary problem, however, was caused by the terrible design of H.264&#039;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. &lt;br /&gt;
&lt;br /&gt;
Chroma mode decision and subpel, mentioned in the last newsletter, is finally in. It&#039;s enabled at subme &amp;amp;gt;= 9 and provides a ~0.4-1% compression improvement. &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
High-bit-depth support has been finished in libx264 and x264cli. The assembly code is still yet to be committed, so it&#039;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&#039;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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
== [http://mailman.videolan.org/pipermail/x264-devel/2010-October/007858.html Volume 3]  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;10/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the third x264 development newsletter. If you missed the first two, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The sigint handler in x264cli is now volatile, like it should have been. This likely didn&#039;t actually affect anything on any real system, but it&#039;s more correct. &lt;br /&gt;
&lt;br /&gt;
-DNDEBUG broke the filtering system. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
The bugfix from last week regarding intra refresh predicting from topright blocks didn&#039;t work with 8x8dct. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
2-pass ratecontrol now works with CBR HRD. Previously, it ignored filler bits, and thus broke horribly. In general, you don&#039;t need 2-pass for CBR (and it probably doesn&#039;t help), but it should work better now. &lt;br /&gt;
&lt;br /&gt;
A missing mod4-stack check was added; this should fix ICC builds on Phenom CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
The build tree has been cleaned a bit. A bunch of old stuff, like the non-working regression test and doxy, have been removed. &lt;br /&gt;
&lt;br /&gt;
Some of the information in doc/ has been updated to be less absurdly out of date, or at least inform the reader that it is absurdly out of date. &lt;br /&gt;
&lt;br /&gt;
DTS compression has been moved out of the libx264 API and into the muxers, because it&#039;s a giant hack and it was making things ugly and messy (and starting to interfere with ratecontrol). &lt;br /&gt;
&lt;br /&gt;
Various asm functions have been improved, particularly the qpel MC functions. Should help performance a bit on Core 2 and similar CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework.&lt;br /&gt;
&lt;br /&gt;
== Volume 4  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fourth x264 development newsletter. If you missed the first three, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The Altivec SATD gave wrong results with very small strides (e.g. 8). This made output on PPC slightly different from x86, due to different results in lookahead and chroma ME. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
FPS reporting on Windows 64-bit was very imprecise (the timers were only accurate to 1 second). This was due to _ftime using the wrong struct due to the Windows ABI&#039;s complete retardation. This has been fixed by using ftime instead. &lt;br /&gt;
&lt;br /&gt;
ssd_nv12 has been improved to eliminate overflow at high bit depths (this would, in theory, give wrong PSNR). &lt;br /&gt;
&lt;br /&gt;
SATD/SA8D/Hadamard_ac have been improved to eliminate overflow at high bit depths (this would cause wrong analysis results). &lt;br /&gt;
&lt;br /&gt;
Three ratecontrol bugs have been fixed: &lt;br /&gt;
&lt;br /&gt;
#B-frame size prediction has been fixed (it used quantizer instead of linearized qscale). This should improve VBV.&lt;br /&gt;
#Overflow compensation, originally designed for 1-pass ABR, has been disabled with CRF on, as it doesn&#039;t do anything useful with pure CRF and causes very bizarre results with CRF+VBV in areas of extremely high complexity. &lt;br /&gt;
#A bug in the way that clip_qscale caps the amount by which a frame can be higher quality than a previous frame (as a result of attempting to use up extra bits that would otherwise be wasted) has been fixed. This caused CBR to take extremely long times (e.g. seconds) to recover from extreme changes in complexity at low bitrates.&lt;br /&gt;
&lt;br /&gt;
A possible linking problem with lavf has been fixed. &lt;br /&gt;
&lt;br /&gt;
Some MV/ref prefetching code was in the wrong place. Fixing this may result in a tiny performance improvement.&lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
doc/threads.txt has been updated with modern benchmarks. This information may be useful to anyone looking to compare the impact of various threading strategies on quality and performance, as well as get an idea of how well x264 scales over multiple cores at various encoding speeds. &lt;br /&gt;
&lt;br /&gt;
The presets are now addressable numerically (0=ultrafast...9=placebo).&lt;br /&gt;
The exact mappings may change in the future if new presets are added or old presets removed, but they will always be in linear order of fast to slow. &lt;br /&gt;
&lt;br /&gt;
The ffmpeg -vpre error message (if a user doesn&#039;t use a -vpre) has been made more descriptive, to better instruct users about how the ffmpeg -vpre system works. &lt;br /&gt;
&lt;br /&gt;
weightp -1 offset dupes are now disabled in high bit depth mode, as they&#039;re a hack to get around crappy rounding in 8-bit encoding, and thus don&#039;t help in high bit depth. &lt;br /&gt;
&lt;br /&gt;
PSNR and SSIM measurements are now VFR-aware! This means they will take into account the duration of frames. This may result in PSNR and SSIM results appearing dramatically different from other tools when used on variable framerate video. Don&#039;t fret; x264 is correct, they are not. Of course, results will stay the same for constant framerate video. This is the first step to VFR-aware MB-tree. &lt;br /&gt;
&lt;br /&gt;
Quantizer handling has been improved.&lt;br /&gt;
&lt;br /&gt;
Library change: i_qpplus1 now defaults to X264_QP_AUTO. This doesn&#039;t actually change anything, as X264_QP_AUTO is 0, but this may change in the future. As a reminder, all x264_picture_t structs must be initialized using x264_picture_init or x264_picture_alloc!&lt;br /&gt;
&lt;br /&gt;
CRF values now make sense in high bit depth: --crf 23 means roughly the same quality in 8-bit or 10-bit, instead of being 4 times higher quality in 10-bit than in 8-bit.&lt;br /&gt;
&lt;br /&gt;
This means that --qp 0 should be used for lossless, not --crf 0. The latter will not result in lossless compression when in high bit depth mode.&lt;br /&gt;
&lt;br /&gt;
Bit depth has been added to statsfiles, to prevent users from inadvertently using a statsfile with the wrong bit depth. &lt;br /&gt;
&lt;br /&gt;
Scenecut&#039;s flash detection has been improved to work more sanely in the case of flashes at the end of the videos.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is nearly ready. Speed boost has been measured as about 4.3x and is still improving. &lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is critical for some broadcast applications. Unlike most competing encoders, this VBV Emergency Mode does not drop frames or force all blocks to skip or some similarly extreme step: it adds a &amp;quot;denoising&amp;quot; step to reduce the complexity of the video, which scales upwards until it simply removes all content at the most extreme level. &lt;br /&gt;
&lt;br /&gt;
A pad filter is nearly ready for the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding mostly finished. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel. &lt;br /&gt;
&lt;br /&gt;
== Volume 5  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/19/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fifth x264 development newsletter. If you missed the first four, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
HRD now works correctly when used with intra refresh. Thanks to a certain x264 commercial licensee for the bug report. &lt;br /&gt;
&lt;br /&gt;
QPfile parsing now works as it was supposed to have worked last time: users should be able to omit QP values. &lt;br /&gt;
&lt;br /&gt;
Allocate the correct amount of memory for weightp buffers with weightp + high bit depth (it allocated too much, not too little). &lt;br /&gt;
&lt;br /&gt;
Fix flash detection to work correctly near the end of the keyframe interval. &lt;br /&gt;
&lt;br /&gt;
Fix a crash in dump yuv with some resolutions. &lt;br /&gt;
&lt;br /&gt;
Various fixes have been made to ratecontrol in high-bit-depth mode. &lt;br /&gt;
&lt;br /&gt;
Constrained intra pred is working properly again in all cases. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
x264&#039;s SEI header now indicates whether the build used was GPL or proprietary. &lt;br /&gt;
&lt;br /&gt;
x264 is now compatible with FFMS2&#039;s most recent API break. &lt;br /&gt;
&lt;br /&gt;
configure now logs test programs that failed, not just the error output. &lt;br /&gt;
&lt;br /&gt;
Merge Oskar&#039;s (irock&#039;s) 10-bit asm branch: ~4.4x overall speed boost in high bit depth mode. &lt;br /&gt;
&lt;br /&gt;
Chroma weighted prediction: dramatically improved chroma compression and quality in fades. &lt;br /&gt;
&lt;br /&gt;
Custom cropping rectangle support: users can now specify --crop-rect to add values to the H.264 cropping header. This is supposedly useful for 3D television applications (to allow legacy decoders to access only one view of the image). &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is important for some broadcast applications. &lt;br /&gt;
&lt;br /&gt;
The pad filter and yadif are nearly ready for the x264CLI filter framework. Both now support high bit depth. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding finished and inter coding begun. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks). &lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
Since we started a couple of months ago, over 40 companies have contacted us regarding x264 licensing! &lt;br /&gt;
&lt;br /&gt;
At least one major Blu-ray authoring house is switching to x264 for their commercial Blu-rays. &lt;br /&gt;
&lt;br /&gt;
At least one commercial encoding application based on x264 is currently in the works. An announcement will come Soon™. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18654</id>
		<title>X264 Development Newsletters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18654"/>
		<updated>2011-01-26T07:36:50Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: /* Volume 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an archive of the x264 Development Newsletters. &lt;br /&gt;
&lt;br /&gt;
== Volume 1  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/18/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
From now on, with each weekly-ish push of new patches, I&#039;ll try to post a newsletter as well to give an update of what&#039;s going on and the changes. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
Different versions of 64-bit MinGW gcc were inconsistent with regards to whether or not to add a _ prefix to called functions. This broke compilation because the assembly code wouldn&#039;t link in correctly. &lt;br /&gt;
&lt;br /&gt;
Intra refresh got a lot of fixes thanks to bug reports by Chris Brien &amp;amp;lt;chris.brien@tandberg.com&amp;amp;gt;. Because x264 uses column refresh instead of row refresh, it has to be more careful with regards to which pixels it can predict from. This should fix some cases where intra refresh didn&#039;t refresh the whole frame correctly. Furthermore, it turns out that the recovery_frame_cnt syntax element, signaling the length of the intra refresh, is limited by the max frame number. Accordingly, x264 will raise the max frame number to ensure that recovery_frame_cnt is in spec. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
I&#039;ve gone through the file headers and updated them to be more accurate and consistent in terms of dates and authorship. It now also mentions the commercial license, on request from a licensee. &lt;br /&gt;
&lt;br /&gt;
The new --disable-gpl configure option is now added for companies using the commercial license. x264 --version will print both the license information of itself and of the linked libavformat (for decoding). It&#039;ll also warn you if the combination you&#039;ve put together isn&#039;t distributable, such as a nonfree ffmpeg + GPL x264, or a GPL ffmpeg + non-GPL x264. &lt;br /&gt;
&lt;br /&gt;
x264 now passes the &amp;quot;full chroma input&amp;quot; flag to swscale. This should fix this quality issue when using point scaling: http://doom10.org/index.php?topic=585.0 . &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
Kieran Kunhya &amp;amp;lt;kieran@kunhya.com&amp;amp;gt; has finally committed his arbitrary SEI patch, which lets calling apps give x264 any SEI they want to include in the stream. This is useful for closed-captioning, frame packing, and all kinds of other SEIs that x264 doesn&#039;t explicitly support but which the calling application can create itself if necessary. The advantage of giving these to x264 instead of just inserting them separately is that it allows the resulting stream to remain HRD-compliant, since x264 knows they exist. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit-depth input and filtering! x264 supports 10-bit encoding, but currently only takes 8-bit input. This change will finally create a stable API for high bit-depth input and allow users to filter in higher precision. It will also add dithering support to x264CLI for downconversion of high-bit-depth material. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Chroma ME in B-frames will be coming soon, giving an extra bit of compression to those using slower presets. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
After high bit-depth input is complete, a large amount of assembly code will be committed as well, improving high bit-depth encoding performance greatly. &lt;br /&gt;
&lt;br /&gt;
Ubuntu Maverick will include an updated x264, r1653. &lt;br /&gt;
&lt;br /&gt;
== Volume 2  ==&lt;br /&gt;
&#039;&#039;[http://mailman.videolan.org/pipermail/x264-devel/2010-September/007808.html 9/27/2010]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
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&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
libx264 should now give correct DTS and print the correct bitrate if the input PTS do not start at zero. This doesn&#039;t affect x264CLI, but does affect calling apps that don&#039;t start their PTS at zero. &lt;br /&gt;
&lt;br /&gt;
libx264 ratecontrol should now work correctly in CFR mode with timebase&amp;amp;nbsp;!= 1/fps. As documented, x264 was supposed to ignore the timebase if CFR mode is set (for purposes of ratecontrol), but that&#039;s not what actually happened; things just broke. This should now be fixed. This is necessary for correct behavior with tune=zerolatency in gstreamer. &lt;br /&gt;
&lt;br /&gt;
A missing emms has been added to dump-yuv, fixing some Heisenbug brokenness when dump-yuv was used. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
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&#039;s extra byte, CAVLC&#039;s skip runs). The primary problem, however, was caused by the terrible design of H.264&#039;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. &lt;br /&gt;
&lt;br /&gt;
Chroma mode decision and subpel, mentioned in the last newsletter, is finally in. It&#039;s enabled at subme &amp;amp;gt;= 9 and provides a ~0.4-1% compression improvement. &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
High-bit-depth support has been finished in libx264 and x264cli. The assembly code is still yet to be committed, so it&#039;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&#039;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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently.&lt;br /&gt;
&lt;br /&gt;
== Volume 3  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;10/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the third x264 development newsletter. If you missed the first two, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The sigint handler in x264cli is now volatile, like it should have been. This likely didn&#039;t actually affect anything on any real system, but it&#039;s more correct. &lt;br /&gt;
&lt;br /&gt;
-DNDEBUG broke the filtering system. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
The bugfix from last week regarding intra refresh predicting from topright blocks didn&#039;t work with 8x8dct. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
2-pass ratecontrol now works with CBR HRD. Previously, it ignored filler bits, and thus broke horribly. In general, you don&#039;t need 2-pass for CBR (and it probably doesn&#039;t help), but it should work better now. &lt;br /&gt;
&lt;br /&gt;
A missing mod4-stack check was added; this should fix ICC builds on Phenom CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
The build tree has been cleaned a bit. A bunch of old stuff, like the non-working regression test and doxy, have been removed. &lt;br /&gt;
&lt;br /&gt;
Some of the information in doc/ has been updated to be less absurdly out of date, or at least inform the reader that it is absurdly out of date. &lt;br /&gt;
&lt;br /&gt;
DTS compression has been moved out of the libx264 API and into the muxers, because it&#039;s a giant hack and it was making things ugly and messy (and starting to interfere with ratecontrol). &lt;br /&gt;
&lt;br /&gt;
Various asm functions have been improved, particularly the qpel MC functions. Should help performance a bit on Core 2 and similar CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. &lt;br /&gt;
&lt;br /&gt;
== Volume 4  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fourth x264 development newsletter. If you missed the first three, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The Altivec SATD gave wrong results with very small strides (e.g. 8). This made output on PPC slightly different from x86, due to different results in lookahead and chroma ME. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
FPS reporting on Windows 64-bit was very imprecise (the timers were only accurate to 1 second). This was due to _ftime using the wrong struct due to the Windows ABI&#039;s complete retardation. This has been fixed by using ftime instead. &lt;br /&gt;
&lt;br /&gt;
ssd_nv12 has been improved to eliminate overflow at high bit depths (this would, in theory, give wrong PSNR). &lt;br /&gt;
&lt;br /&gt;
SATD/SA8D/Hadamard_ac have been improved to eliminate overflow at high bit depths (this would cause wrong analysis results). &lt;br /&gt;
&lt;br /&gt;
Three ratecontrol bugs have been fixed: &lt;br /&gt;
&lt;br /&gt;
#B-frame size prediction has been fixed (it used quantizer instead of linearized qscale). This should improve VBV.&lt;br /&gt;
#Overflow compensation, originally designed for 1-pass ABR, has been disabled with CRF on, as it doesn&#039;t do anything useful with pure CRF and causes very bizarre results with CRF+VBV in areas of extremely high complexity. &lt;br /&gt;
#A bug in the way that clip_qscale caps the amount by which a frame can be higher quality than a previous frame (as a result of attempting to use up extra bits that would otherwise be wasted) has been fixed. This caused CBR to take extremely long times (e.g. seconds) to recover from extreme changes in complexity at low bitrates.&lt;br /&gt;
&lt;br /&gt;
A possible linking problem with lavf has been fixed. &lt;br /&gt;
&lt;br /&gt;
Some MV/ref prefetching code was in the wrong place. Fixing this may result in a tiny performance improvement.&lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
doc/threads.txt has been updated with modern benchmarks. This information may be useful to anyone looking to compare the impact of various threading strategies on quality and performance, as well as get an idea of how well x264 scales over multiple cores at various encoding speeds. &lt;br /&gt;
&lt;br /&gt;
The presets are now addressable numerically (0=ultrafast...9=placebo).&lt;br /&gt;
The exact mappings may change in the future if new presets are added or old presets removed, but they will always be in linear order of fast to slow. &lt;br /&gt;
&lt;br /&gt;
The ffmpeg -vpre error message (if a user doesn&#039;t use a -vpre) has been made more descriptive, to better instruct users about how the ffmpeg -vpre system works. &lt;br /&gt;
&lt;br /&gt;
weightp -1 offset dupes are now disabled in high bit depth mode, as they&#039;re a hack to get around crappy rounding in 8-bit encoding, and thus don&#039;t help in high bit depth. &lt;br /&gt;
&lt;br /&gt;
PSNR and SSIM measurements are now VFR-aware! This means they will take into account the duration of frames. This may result in PSNR and SSIM results appearing dramatically different from other tools when used on variable framerate video. Don&#039;t fret; x264 is correct, they are not. Of course, results will stay the same for constant framerate video. This is the first step to VFR-aware MB-tree. &lt;br /&gt;
&lt;br /&gt;
Quantizer handling has been improved.&lt;br /&gt;
&lt;br /&gt;
Library change: i_qpplus1 now defaults to X264_QP_AUTO. This doesn&#039;t actually change anything, as X264_QP_AUTO is 0, but this may change in the future. As a reminder, all x264_picture_t structs must be initialized using x264_picture_init or x264_picture_alloc!&lt;br /&gt;
&lt;br /&gt;
CRF values now make sense in high bit depth: --crf 23 means roughly the same quality in 8-bit or 10-bit, instead of being 4 times higher quality in 10-bit than in 8-bit.&lt;br /&gt;
&lt;br /&gt;
This means that --qp 0 should be used for lossless, not --crf 0. The latter will not result in lossless compression when in high bit depth mode.&lt;br /&gt;
&lt;br /&gt;
Bit depth has been added to statsfiles, to prevent users from inadvertently using a statsfile with the wrong bit depth. &lt;br /&gt;
&lt;br /&gt;
Scenecut&#039;s flash detection has been improved to work more sanely in the case of flashes at the end of the videos.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is nearly ready. Speed boost has been measured as about 4.3x and is still improving. &lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is critical for some broadcast applications. Unlike most competing encoders, this VBV Emergency Mode does not drop frames or force all blocks to skip or some similarly extreme step: it adds a &amp;quot;denoising&amp;quot; step to reduce the complexity of the video, which scales upwards until it simply removes all content at the most extreme level. &lt;br /&gt;
&lt;br /&gt;
A pad filter is nearly ready for the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding mostly finished. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel. &lt;br /&gt;
&lt;br /&gt;
== Volume 5  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/19/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fifth x264 development newsletter. If you missed the first four, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
HRD now works correctly when used with intra refresh. Thanks to a certain x264 commercial licensee for the bug report. &lt;br /&gt;
&lt;br /&gt;
QPfile parsing now works as it was supposed to have worked last time: users should be able to omit QP values. &lt;br /&gt;
&lt;br /&gt;
Allocate the correct amount of memory for weightp buffers with weightp + high bit depth (it allocated too much, not too little). &lt;br /&gt;
&lt;br /&gt;
Fix flash detection to work correctly near the end of the keyframe interval. &lt;br /&gt;
&lt;br /&gt;
Fix a crash in dump yuv with some resolutions. &lt;br /&gt;
&lt;br /&gt;
Various fixes have been made to ratecontrol in high-bit-depth mode. &lt;br /&gt;
&lt;br /&gt;
Constrained intra pred is working properly again in all cases. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
x264&#039;s SEI header now indicates whether the build used was GPL or proprietary. &lt;br /&gt;
&lt;br /&gt;
x264 is now compatible with FFMS2&#039;s most recent API break. &lt;br /&gt;
&lt;br /&gt;
configure now logs test programs that failed, not just the error output. &lt;br /&gt;
&lt;br /&gt;
Merge Oskar&#039;s (irock&#039;s) 10-bit asm branch: ~4.4x overall speed boost in high bit depth mode. &lt;br /&gt;
&lt;br /&gt;
Chroma weighted prediction: dramatically improved chroma compression and quality in fades. &lt;br /&gt;
&lt;br /&gt;
Custom cropping rectangle support: users can now specify --crop-rect to add values to the H.264 cropping header. This is supposedly useful for 3D television applications (to allow legacy decoders to access only one view of the image). &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is important for some broadcast applications. &lt;br /&gt;
&lt;br /&gt;
The pad filter and yadif are nearly ready for the x264CLI filter framework. Both now support high bit depth. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding finished and inter coding begun. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks). &lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
Since we started a couple of months ago, over 40 companies have contacted us regarding x264 licensing! &lt;br /&gt;
&lt;br /&gt;
At least one major Blu-ray authoring house is switching to x264 for their commercial Blu-rays. &lt;br /&gt;
&lt;br /&gt;
At least one commercial encoding application based on x264 is currently in the works. An announcement will come Soon™. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18653</id>
		<title>X264 Development Newsletters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18653"/>
		<updated>2011-01-26T07:27:38Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: /* Improvements: */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an archive of the x264 Development Newsletters. &lt;br /&gt;
&lt;br /&gt;
== Volume 1  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/18/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
From now on, with each weekly-ish push of new patches, I&#039;ll try to post a newsletter as well to give an update of what&#039;s going on and the changes. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
Different versions of 64-bit MinGW gcc were inconsistent with regards to whether or not to add a _ prefix to called functions. This broke compilation because the assembly code wouldn&#039;t link in correctly. &lt;br /&gt;
&lt;br /&gt;
Intra refresh got a lot of fixes thanks to bug reports by Chris Brien &amp;amp;lt;chris.brien@tandberg.com&amp;amp;gt;. Because x264 uses column refresh instead of row refresh, it has to be more careful with regards to which pixels it can predict from. This should fix some cases where intra refresh didn&#039;t refresh the whole frame correctly. Furthermore, it turns out that the recovery_frame_cnt syntax element, signaling the length of the intra refresh, is limited by the max frame number. Accordingly, x264 will raise the max frame number to ensure that recovery_frame_cnt is in spec. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
I&#039;ve gone through the file headers and updated them to be more accurate and consistent in terms of dates and authorship. It now also mentions the commercial license, on request from a licensee. &lt;br /&gt;
&lt;br /&gt;
The new --disable-gpl configure option is now added for companies using the commercial license. x264 --version will print both the license information of itself and of the linked libavformat (for decoding). It&#039;ll also warn you if the combination you&#039;ve put together isn&#039;t distributable, such as a nonfree ffmpeg + GPL x264, or a GPL ffmpeg + non-GPL x264. &lt;br /&gt;
&lt;br /&gt;
x264 now passes the &amp;quot;full chroma input&amp;quot; flag to swscale. This should fix this quality issue when using point scaling: http://doom10.org/index.php?topic=585.0 . &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
Kieran Kunhya &amp;amp;lt;kieran@kunhya.com&amp;amp;gt; has finally committed his arbitrary SEI patch, which lets calling apps give x264 any SEI they want to include in the stream. This is useful for closed-captioning, frame packing, and all kinds of other SEIs that x264 doesn&#039;t explicitly support but which the calling application can create itself if necessary. The advantage of giving these to x264 instead of just inserting them separately is that it allows the resulting stream to remain HRD-compliant, since x264 knows they exist. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit-depth input and filtering! x264 supports 10-bit encoding, but currently only takes 8-bit input. This change will finally create a stable API for high bit-depth input and allow users to filter in higher precision. It will also add dithering support to x264CLI for downconversion of high-bit-depth material. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Chroma ME in B-frames will be coming soon, giving an extra bit of compression to those using slower presets. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
After high bit-depth input is complete, a large amount of assembly code will be committed as well, improving high bit-depth encoding performance greatly. &lt;br /&gt;
&lt;br /&gt;
Ubuntu Maverick will include an updated x264, r1653. &lt;br /&gt;
&lt;br /&gt;
== Volume 2  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/27/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
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&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
libx264 should now give correct DTS and print the correct bitrate if the input PTS do not start at zero. This doesn&#039;t affect x264CLI, but does affect calling apps that don&#039;t start their PTS at zero. &lt;br /&gt;
&lt;br /&gt;
libx264 ratecontrol should now work correctly in CFR mode with timebase&amp;amp;nbsp;!= 1/fps. As documented, x264 was supposed to ignore the timebase if CFR mode is set (for purposes of ratecontrol), but that&#039;s not what actually happened; things just broke. This should now be fixed. This is necessary for correct behavior with tune=zerolatency in gstreamer. &lt;br /&gt;
&lt;br /&gt;
A missing emms has been added to dump-yuv, fixing some Heisenbug brokenness when dump-yuv was used. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
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&#039;s extra byte, CAVLC&#039;s skip runs). The primary problem, however, was caused by the terrible design of H.264&#039;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. &lt;br /&gt;
&lt;br /&gt;
Chroma mode decision and subpel, mentioned in the last newsletter, is finally in. It&#039;s enabled at subme &amp;amp;gt;= 9 and provides a ~0.4-1% compression improvement. &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
High-bit-depth support has been finished in libx264 and x264cli. The assembly code is still yet to be committed, so it&#039;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&#039;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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
== Volume 3  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;10/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the third x264 development newsletter. If you missed the first two, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The sigint handler in x264cli is now volatile, like it should have been. This likely didn&#039;t actually affect anything on any real system, but it&#039;s more correct. &lt;br /&gt;
&lt;br /&gt;
-DNDEBUG broke the filtering system. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
The bugfix from last week regarding intra refresh predicting from topright blocks didn&#039;t work with 8x8dct. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
2-pass ratecontrol now works with CBR HRD. Previously, it ignored filler bits, and thus broke horribly. In general, you don&#039;t need 2-pass for CBR (and it probably doesn&#039;t help), but it should work better now. &lt;br /&gt;
&lt;br /&gt;
A missing mod4-stack check was added; this should fix ICC builds on Phenom CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
The build tree has been cleaned a bit. A bunch of old stuff, like the non-working regression test and doxy, have been removed. &lt;br /&gt;
&lt;br /&gt;
Some of the information in doc/ has been updated to be less absurdly out of date, or at least inform the reader that it is absurdly out of date. &lt;br /&gt;
&lt;br /&gt;
DTS compression has been moved out of the libx264 API and into the muxers, because it&#039;s a giant hack and it was making things ugly and messy (and starting to interfere with ratecontrol). &lt;br /&gt;
&lt;br /&gt;
Various asm functions have been improved, particularly the qpel MC functions. Should help performance a bit on Core 2 and similar CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. &lt;br /&gt;
&lt;br /&gt;
== Volume 4  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fourth x264 development newsletter. If you missed the first three, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The Altivec SATD gave wrong results with very small strides (e.g. 8). This made output on PPC slightly different from x86, due to different results in lookahead and chroma ME. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
FPS reporting on Windows 64-bit was very imprecise (the timers were only accurate to 1 second). This was due to _ftime using the wrong struct due to the Windows ABI&#039;s complete retardation. This has been fixed by using ftime instead. &lt;br /&gt;
&lt;br /&gt;
ssd_nv12 has been improved to eliminate overflow at high bit depths (this would, in theory, give wrong PSNR). &lt;br /&gt;
&lt;br /&gt;
SATD/SA8D/Hadamard_ac have been improved to eliminate overflow at high bit depths (this would cause wrong analysis results). &lt;br /&gt;
&lt;br /&gt;
Three ratecontrol bugs have been fixed: &lt;br /&gt;
&lt;br /&gt;
#B-frame size prediction has been fixed (it used quantizer instead of linearized qscale). This should improve VBV.&lt;br /&gt;
#Overflow compensation, originally designed for 1-pass ABR, has been disabled with CRF on, as it doesn&#039;t do anything useful with pure CRF and causes very bizarre results with CRF+VBV in areas of extremely high complexity. &lt;br /&gt;
#A bug in the way that clip_qscale caps the amount by which a frame can be higher quality than a previous frame (as a result of attempting to use up extra bits that would otherwise be wasted) has been fixed. This caused CBR to take extremely long times (e.g. seconds) to recover from extreme changes in complexity at low bitrates.&lt;br /&gt;
&lt;br /&gt;
A possible linking problem with lavf has been fixed. &lt;br /&gt;
&lt;br /&gt;
Some MV/ref prefetching code was in the wrong place. Fixing this may result in a tiny performance improvement.&lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
doc/threads.txt has been updated with modern benchmarks. This information may be useful to anyone looking to compare the impact of various threading strategies on quality and performance, as well as get an idea of how well x264 scales over multiple cores at various encoding speeds. &lt;br /&gt;
&lt;br /&gt;
The presets are now addressable numerically (0=ultrafast...9=placebo).&lt;br /&gt;
The exact mappings may change in the future if new presets are added or old presets removed, but they will always be in linear order of fast to slow. &lt;br /&gt;
&lt;br /&gt;
The ffmpeg -vpre error message (if a user doesn&#039;t use a -vpre) has been made more descriptive, to better instruct users about how the ffmpeg -vpre system works. &lt;br /&gt;
&lt;br /&gt;
weightp -1 offset dupes are now disabled in high bit depth mode, as they&#039;re a hack to get around crappy rounding in 8-bit encoding, and thus don&#039;t help in high bit depth. &lt;br /&gt;
&lt;br /&gt;
PSNR and SSIM measurements are now VFR-aware! This means they will take into account the duration of frames. This may result in PSNR and SSIM results appearing dramatically different from other tools when used on variable framerate video. Don&#039;t fret; x264 is correct, they are not. Of course, results will stay the same for constant framerate video. This is the first step to VFR-aware MB-tree. &lt;br /&gt;
&lt;br /&gt;
Quantizer handling has been improved.&lt;br /&gt;
&lt;br /&gt;
Library change: i_qpplus1 now defaults to X264_QP_AUTO. This doesn&#039;t actually change anything, as X264_QP_AUTO is 0, but this may change in the future. As a reminder, all x264_picture_t structs must be initialized using x264_picture_init or x264_picture_alloc!&lt;br /&gt;
&lt;br /&gt;
CRF values now make sense in high bit depth: --crf 23 means roughly the same quality in 8-bit or 10-bit, instead of being 4 times higher quality in 10-bit than in 8-bit.&lt;br /&gt;
&lt;br /&gt;
This means that --qp 0 should be used for lossless, not --crf 0. The latter will not result in lossless compression when in high bit depth mode.&lt;br /&gt;
&lt;br /&gt;
Bit depth has been added to statsfiles, to prevent users from inadvertently using a statsfile with the wrong bit depth. &lt;br /&gt;
&lt;br /&gt;
Scenecut&#039;s flash detection has been improved to work more sanely in the case of flashes at the end of the videos.&lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is nearly ready. Speed boost has been measured as about 4.3x and is still improving. &lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is critical for some broadcast applications. Unlike most competing encoders, this VBV Emergency Mode does not drop frames or force all blocks to skip or some similarly extreme step: it adds a &amp;quot;denoising&amp;quot; step to reduce the complexity of the video, which scales upwards until it simply removes all content at the most extreme level. &lt;br /&gt;
&lt;br /&gt;
A pad filter is nearly ready for the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding mostly finished. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel. &lt;br /&gt;
&lt;br /&gt;
== Volume 5  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/19/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fifth x264 development newsletter. If you missed the first four, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
HRD now works correctly when used with intra refresh. Thanks to a certain x264 commercial licensee for the bug report. &lt;br /&gt;
&lt;br /&gt;
QPfile parsing now works as it was supposed to have worked last time: users should be able to omit QP values. &lt;br /&gt;
&lt;br /&gt;
Allocate the correct amount of memory for weightp buffers with weightp + high bit depth (it allocated too much, not too little). &lt;br /&gt;
&lt;br /&gt;
Fix flash detection to work correctly near the end of the keyframe interval. &lt;br /&gt;
&lt;br /&gt;
Fix a crash in dump yuv with some resolutions. &lt;br /&gt;
&lt;br /&gt;
Various fixes have been made to ratecontrol in high-bit-depth mode. &lt;br /&gt;
&lt;br /&gt;
Constrained intra pred is working properly again in all cases. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
x264&#039;s SEI header now indicates whether the build used was GPL or proprietary. &lt;br /&gt;
&lt;br /&gt;
x264 is now compatible with FFMS2&#039;s most recent API break. &lt;br /&gt;
&lt;br /&gt;
configure now logs test programs that failed, not just the error output. &lt;br /&gt;
&lt;br /&gt;
Merge Oskar&#039;s (irock&#039;s) 10-bit asm branch: ~4.4x overall speed boost in high bit depth mode. &lt;br /&gt;
&lt;br /&gt;
Chroma weighted prediction: dramatically improved chroma compression and quality in fades. &lt;br /&gt;
&lt;br /&gt;
Custom cropping rectangle support: users can now specify --crop-rect to add values to the H.264 cropping header. This is supposedly useful for 3D television applications (to allow legacy decoders to access only one view of the image). &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is important for some broadcast applications. &lt;br /&gt;
&lt;br /&gt;
The pad filter and yadif are nearly ready for the x264CLI filter framework. Both now support high bit depth. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding finished and inter coding begun. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks). &lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
Since we started a couple of months ago, over 40 companies have contacted us regarding x264 licensing! &lt;br /&gt;
&lt;br /&gt;
At least one major Blu-ray authoring house is switching to x264 for their commercial Blu-rays. &lt;br /&gt;
&lt;br /&gt;
At least one commercial encoding application based on x264 is currently in the works. An announcement will come Soon™. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18652</id>
		<title>X264 Development Newsletters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18652"/>
		<updated>2011-01-26T07:22:07Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an archive of the x264 Development Newsletters. &lt;br /&gt;
&lt;br /&gt;
== Volume 1  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/18/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
From now on, with each weekly-ish push of new patches, I&#039;ll try to post a newsletter as well to give an update of what&#039;s going on and the changes. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
Different versions of 64-bit MinGW gcc were inconsistent with regards to whether or not to add a _ prefix to called functions. This broke compilation because the assembly code wouldn&#039;t link in correctly. &lt;br /&gt;
&lt;br /&gt;
Intra refresh got a lot of fixes thanks to bug reports by Chris Brien &amp;amp;lt;chris.brien@tandberg.com&amp;amp;gt;. Because x264 uses column refresh instead of row refresh, it has to be more careful with regards to which pixels it can predict from. This should fix some cases where intra refresh didn&#039;t refresh the whole frame correctly. Furthermore, it turns out that the recovery_frame_cnt syntax element, signaling the length of the intra refresh, is limited by the max frame number. Accordingly, x264 will raise the max frame number to ensure that recovery_frame_cnt is in spec. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
I&#039;ve gone through the file headers and updated them to be more accurate and consistent in terms of dates and authorship. It now also mentions the commercial license, on request from a licensee. &lt;br /&gt;
&lt;br /&gt;
The new --disable-gpl configure option is now added for companies using the commercial license. x264 --version will print both the license information of itself and of the linked libavformat (for decoding). It&#039;ll also warn you if the combination you&#039;ve put together isn&#039;t distributable, such as a nonfree ffmpeg + GPL x264, or a GPL ffmpeg + non-GPL x264. &lt;br /&gt;
&lt;br /&gt;
x264 now passes the &amp;quot;full chroma input&amp;quot; flag to swscale. This should fix this quality issue when using point scaling: http://doom10.org/index.php?topic=585.0 . &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
Kieran Kunhya &amp;amp;lt;kieran@kunhya.com&amp;amp;gt; has finally committed his arbitrary SEI patch, which lets calling apps give x264 any SEI they want to include in the stream. This is useful for closed-captioning, frame packing, and all kinds of other SEIs that x264 doesn&#039;t explicitly support but which the calling application can create itself if necessary. The advantage of giving these to x264 instead of just inserting them separately is that it allows the resulting stream to remain HRD-compliant, since x264 knows they exist. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit-depth input and filtering! x264 supports 10-bit encoding, but currently only takes 8-bit input. This change will finally create a stable API for high bit-depth input and allow users to filter in higher precision. It will also add dithering support to x264CLI for downconversion of high-bit-depth material. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Chroma ME in B-frames will be coming soon, giving an extra bit of compression to those using slower presets. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
After high bit-depth input is complete, a large amount of assembly code will be committed as well, improving high bit-depth encoding performance greatly. &lt;br /&gt;
&lt;br /&gt;
Ubuntu Maverick will include an updated x264, r1653. &lt;br /&gt;
&lt;br /&gt;
== Volume 2  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/27/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
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&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
libx264 should now give correct DTS and print the correct bitrate if the input PTS do not start at zero. This doesn&#039;t affect x264CLI, but does affect calling apps that don&#039;t start their PTS at zero. &lt;br /&gt;
&lt;br /&gt;
libx264 ratecontrol should now work correctly in CFR mode with timebase&amp;amp;nbsp;!= 1/fps. As documented, x264 was supposed to ignore the timebase if CFR mode is set (for purposes of ratecontrol), but that&#039;s not what actually happened; things just broke. This should now be fixed. This is necessary for correct behavior with tune=zerolatency in gstreamer. &lt;br /&gt;
&lt;br /&gt;
A missing emms has been added to dump-yuv, fixing some Heisenbug brokenness when dump-yuv was used. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
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&#039;s extra byte, CAVLC&#039;s skip runs). The primary problem, however, was caused by the terrible design of H.264&#039;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. &lt;br /&gt;
&lt;br /&gt;
Chroma mode decision and subpel, mentioned in the last newsletter, is finally in. It&#039;s enabled at subme &amp;amp;gt;= 9 and provides a ~0.4-1% compression improvement. &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
High-bit-depth support has been finished in libx264 and x264cli. The assembly code is still yet to be committed, so it&#039;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&#039;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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
== Volume 3  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;10/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the third x264 development newsletter. If you missed the first two, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The sigint handler in x264cli is now volatile, like it should have been. This likely didn&#039;t actually affect anything on any real system, but it&#039;s more correct. &lt;br /&gt;
&lt;br /&gt;
-DNDEBUG broke the filtering system. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
The bugfix from last week regarding intra refresh predicting from topright blocks didn&#039;t work with 8x8dct. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
2-pass ratecontrol now works with CBR HRD. Previously, it ignored filler bits, and thus broke horribly. In general, you don&#039;t need 2-pass for CBR (and it probably doesn&#039;t help), but it should work better now. &lt;br /&gt;
&lt;br /&gt;
A missing mod4-stack check was added; this should fix ICC builds on Phenom CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
The build tree has been cleaned a bit. A bunch of old stuff, like the non-working regression test and doxy, have been removed. &lt;br /&gt;
&lt;br /&gt;
Some of the information in doc/ has been updated to be less absurdly out of date, or at least inform the reader that it is absurdly out of date. &lt;br /&gt;
&lt;br /&gt;
DTS compression has been moved out of the libx264 API and into the muxers, because it&#039;s a giant hack and it was making things ugly and messy (and starting to interfere with ratecontrol). &lt;br /&gt;
&lt;br /&gt;
Various asm functions have been improved, particularly the qpel MC functions. Should help performance a bit on Core 2 and similar CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. &lt;br /&gt;
&lt;br /&gt;
== Volume 4  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fourth x264 development newsletter. If you missed the first three, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The Altivec SATD gave wrong results with very small strides (e.g. 8). This made output on PPC slightly different from x86, due to different results in lookahead and chroma ME. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
FPS reporting on Windows 64-bit was very imprecise (the timers were only accurate to 1 second). This was due to _ftime using the wrong struct due to the Windows ABI&#039;s complete retardation. This has been fixed by using ftime instead. &lt;br /&gt;
&lt;br /&gt;
ssd_nv12 has been improved to eliminate overflow at high bit depths (this would, in theory, give wrong PSNR). &lt;br /&gt;
&lt;br /&gt;
SATD/SA8D/Hadamard_ac have been improved to eliminate overflow at high bit depths (this would cause wrong analysis results). &lt;br /&gt;
&lt;br /&gt;
Three ratecontrol bugs have been fixed: &lt;br /&gt;
&lt;br /&gt;
#B-frame size prediction has been fixed (it used quantizer instead of linearized qscale). This should improve VBV.&lt;br /&gt;
#Overflow compensation, originally designed for 1-pass ABR, has been disabled with CRF on, as it doesn&#039;t do anything useful with pure CRF and causes very bizarre results with CRF+VBV in areas of extremely high complexity. &lt;br /&gt;
#A bug in the way that clip_qscale caps the amount by which a frame can be higher quality than a previous frame (as a result of attempting to use up extra bits that would otherwise be wasted) has been fixed. This caused CBR to take extremely long times (e.g. seconds) to recover from extreme changes in complexity at low bitrates.&lt;br /&gt;
&lt;br /&gt;
A possible linking problem with lavf has been fixed. &lt;br /&gt;
&lt;br /&gt;
Some MV/ref prefetching code was in the wrong place. Fixing this may result in a tiny performance improvement.&lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
doc/threads.txt has been updated with modern benchmarks. This information may be useful to anyone looking to compare the impact of various threading strategies on quality and performance, as well as get an idea of how well x264 scales over multiple cores at various encoding speeds. &lt;br /&gt;
&lt;br /&gt;
The presets are now addressable numerically (0=ultrafast...9=placebo). &lt;br /&gt;
&lt;br /&gt;
 The exact mappings may change in the future if new presets are added&lt;br /&gt;
&lt;br /&gt;
or old presets removed, but they will always be in linear order of fast to slow. &lt;br /&gt;
&lt;br /&gt;
The ffmpeg -vpre error message (if a user doesn&#039;t use a -vpre) has been made more descriptive, to better instruct users about how the ffmpeg -vpre system works. &lt;br /&gt;
&lt;br /&gt;
weightp -1 offset dupes are now disabled in high bit depth mode, as they&#039;re a hack to get around crappy rounding in 8-bit encoding, and thus don&#039;t help in high bit depth. &lt;br /&gt;
&lt;br /&gt;
PSNR and SSIM measurements are now VFR-aware! This means they will take into account the duration of frames. This may result in PSNR and SSIM results appearing dramatically different from other tools when used on variable framerate video. Don&#039;t fret; x264 is correct, they are not. Of course, results will stay the same for constant framerate video. This is the first step to VFR-aware MB-tree. &lt;br /&gt;
&lt;br /&gt;
Quantizer handling has been improved. Library change: i_qpplus1 now defaults to X264_QP_AUTO. This doesn&#039;t actually change anything, as X264_QP_AUTO is 0, but this may change in the future. As a reminder, all x264_picture_t structs must be initialized using x264_picture_init or x264_picture_alloc! CRF values now make sense in high bit depth: --crf 23 means roughly the same quality in 8-bit or 10-bit, instead of being 4 times higher quality in 10-bit than in 8-bit. This means that --qp 0 should be used for lossless, not --crf 0. The latter will not result in lossless compression when in high bit depth mode. Bit depth has been added to statsfiles, to prevent users from inadvertently using a statsfile with the wrong bit depth. &lt;br /&gt;
&lt;br /&gt;
Scenecut&#039;s flash detection has been improved to work more sanely in the case of flashes at the end of the videos. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is nearly ready. Speed boost has been measured as about 4.3x and is still improving. &lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is critical for some broadcast applications. Unlike most competing encoders, this VBV Emergency Mode does not drop frames or force all blocks to skip or some similarly extreme step: it adds a &amp;quot;denoising&amp;quot; step to reduce the complexity of the video, which scales upwards until it simply removes all content at the most extreme level. &lt;br /&gt;
&lt;br /&gt;
A pad filter is nearly ready for the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding mostly finished. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel. &lt;br /&gt;
&lt;br /&gt;
== Volume 5  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/19/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fifth x264 development newsletter. If you missed the first four, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
HRD now works correctly when used with intra refresh. Thanks to a certain x264 commercial licensee for the bug report. &lt;br /&gt;
&lt;br /&gt;
QPfile parsing now works as it was supposed to have worked last time: users should be able to omit QP values. &lt;br /&gt;
&lt;br /&gt;
Allocate the correct amount of memory for weightp buffers with weightp + high bit depth (it allocated too much, not too little). &lt;br /&gt;
&lt;br /&gt;
Fix flash detection to work correctly near the end of the keyframe interval. &lt;br /&gt;
&lt;br /&gt;
Fix a crash in dump yuv with some resolutions. &lt;br /&gt;
&lt;br /&gt;
Various fixes have been made to ratecontrol in high-bit-depth mode. &lt;br /&gt;
&lt;br /&gt;
Constrained intra pred is working properly again in all cases. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
x264&#039;s SEI header now indicates whether the build used was GPL or proprietary. &lt;br /&gt;
&lt;br /&gt;
x264 is now compatible with FFMS2&#039;s most recent API break. &lt;br /&gt;
&lt;br /&gt;
configure now logs test programs that failed, not just the error output. &lt;br /&gt;
&lt;br /&gt;
Merge Oskar&#039;s (irock&#039;s) 10-bit asm branch: ~4.4x overall speed boost in high bit depth mode. &lt;br /&gt;
&lt;br /&gt;
Chroma weighted prediction: dramatically improved chroma compression and quality in fades. &lt;br /&gt;
&lt;br /&gt;
Custom cropping rectangle support: users can now specify --crop-rect to add values to the H.264 cropping header. This is supposedly useful for 3D television applications (to allow legacy decoders to access only one view of the image). &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is important for some broadcast applications. &lt;br /&gt;
&lt;br /&gt;
The pad filter and yadif are nearly ready for the x264CLI filter framework. Both now support high bit depth. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding finished and inter coding begun. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks). &lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
Since we started a couple of months ago, over 40 companies have contacted us regarding x264 licensing! &lt;br /&gt;
&lt;br /&gt;
At least one major Blu-ray authoring house is switching to x264 for their commercial Blu-rays. &lt;br /&gt;
&lt;br /&gt;
At least one commercial encoding application based on x264 is currently in the works. An announcement will come Soon™. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18651</id>
		<title>X264 Development Newsletters</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=X264_Development_Newsletters&amp;diff=18651"/>
		<updated>2011-01-26T07:14:07Z</updated>

		<summary type="html">&lt;p&gt;Saintdev: Created page with &amp;quot;This is an archive of the x264 Development Newsletters.   == Volume 1  ==  &amp;#039;&amp;#039;9/18/2010&amp;#039;&amp;#039;   From now on, with each weekly-ish push of new patches, I&amp;#039;ll try to post a newsletter as…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an archive of the x264 Development Newsletters. &lt;br /&gt;
&lt;br /&gt;
== Volume 1  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/18/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
From now on, with each weekly-ish push of new patches, I&#039;ll try to post a newsletter as well to give an update of what&#039;s going on and the changes. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
Different versions of 64-bit MinGW gcc were inconsistent with regards to whether or not to add a _ prefix to called functions. This broke compilation because the assembly code wouldn&#039;t link in correctly. &lt;br /&gt;
&lt;br /&gt;
Intra refresh got a lot of fixes thanks to bug reports by Chris Brien &amp;amp;lt;chris.brien@tandberg.com&amp;amp;gt;. Because x264 uses column refresh instead of row refresh, it has to be more careful with regards to which pixels it can predict from. This should fix some cases where intra refresh didn&#039;t refresh the whole frame correctly. Furthermore, it turns out that the recovery_frame_cnt syntax element, signaling the length of the intra refresh, is limited by the max frame number. Accordingly, x264 will raise the max frame number to ensure that recovery_frame_cnt is in spec. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
I&#039;ve gone through the file headers and updated them to be more accurate and consistent in terms of dates and authorship. It now also mentions the commercial license, on request from a licensee. &lt;br /&gt;
&lt;br /&gt;
The new --disable-gpl configure option is now added for companies using the commercial license. x264 --version will print both the license information of itself and of the linked libavformat (for decoding). It&#039;ll also warn you if the combination you&#039;ve put together isn&#039;t distributable, such as a nonfree ffmpeg + GPL x264, or a GPL ffmpeg + non-GPL x264. &lt;br /&gt;
&lt;br /&gt;
x264 now passes the &amp;quot;full chroma input&amp;quot; flag to swscale. This should fix this quality issue when using point scaling: http://doom10.org/index.php?topic=585.0 . &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
Kieran Kunhya &amp;amp;lt;kieran@kunhya.com&amp;amp;gt; has finally committed his arbitrary SEI patch, which lets calling apps give x264 any SEI they want to include in the stream. This is useful for closed-captioning, frame packing, and all kinds of other SEIs that x264 doesn&#039;t explicitly support but which the calling application can create itself if necessary. The advantage of giving these to x264 instead of just inserting them separately is that it allows the resulting stream to remain HRD-compliant, since x264 knows they exist. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit-depth input and filtering! x264 supports 10-bit encoding, but currently only takes 8-bit input. This change will finally create a stable API for high bit-depth input and allow users to filter in higher precision. It will also add dithering support to x264CLI for downconversion of high-bit-depth material. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Chroma ME in B-frames will be coming soon, giving an extra bit of compression to those using slower presets. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
After high bit-depth input is complete, a large amount of assembly code will be committed as well, improving high bit-depth encoding performance greatly. &lt;br /&gt;
&lt;br /&gt;
Ubuntu Maverick will include an updated x264, r1653. &lt;br /&gt;
&lt;br /&gt;
== Volume 2  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;9/27/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
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&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
libx264 should now give correct DTS and print the correct bitrate if the input PTS do not start at zero. This doesn&#039;t affect x264CLI, but does affect calling apps that don&#039;t start their PTS at zero. &lt;br /&gt;
&lt;br /&gt;
libx264 ratecontrol should now work correctly in CFR mode with timebase&amp;amp;nbsp;!= 1/fps. As documented, x264 was supposed to ignore the timebase if CFR mode is set (for purposes of ratecontrol), but that&#039;s not what actually happened; things just broke. This should now be fixed. This is necessary for correct behavior with tune=zerolatency in gstreamer. &lt;br /&gt;
&lt;br /&gt;
A missing emms has been added to dump-yuv, fixing some Heisenbug brokenness when dump-yuv was used. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
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&#039;s extra byte, CAVLC&#039;s skip runs). The primary problem, however, was caused by the terrible design of H.264&#039;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. &lt;br /&gt;
&lt;br /&gt;
Chroma mode decision and subpel, mentioned in the last newsletter, is finally in. It&#039;s enabled at subme &amp;amp;gt;= 9 and provides a ~0.4-1% compression improvement. &lt;br /&gt;
&lt;br /&gt;
===== New features:  =====&lt;br /&gt;
&lt;br /&gt;
High-bit-depth support has been finished in libx264 and x264cli. The assembly code is still yet to be committed, so it&#039;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&#039;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. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
== Volume 3  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;10/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the third x264 development newsletter. If you missed the first two, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The sigint handler in x264cli is now volatile, like it should have been. This likely didn&#039;t actually affect anything on any real system, but it&#039;s more correct. &lt;br /&gt;
&lt;br /&gt;
-DNDEBUG broke the filtering system. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
The bugfix from last week regarding intra refresh predicting from topright blocks didn&#039;t work with 8x8dct. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
2-pass ratecontrol now works with CBR HRD. Previously, it ignored filler bits, and thus broke horribly. In general, you don&#039;t need 2-pass for CBR (and it probably doesn&#039;t help), but it should work better now. &lt;br /&gt;
&lt;br /&gt;
A missing mod4-stack check was added; this should fix ICC builds on Phenom CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
The build tree has been cleaned a bit. A bunch of old stuff, like the non-working regression test and doxy, have been removed. &lt;br /&gt;
&lt;br /&gt;
Some of the information in doc/ has been updated to be less absurdly out of date, or at least inform the reader that it is absurdly out of date. &lt;br /&gt;
&lt;br /&gt;
DTS compression has been moved out of the libx264 API and into the muxers, because it&#039;s a giant hack and it was making things ugly and messy (and starting to interfere with ratecontrol). &lt;br /&gt;
&lt;br /&gt;
Various asm functions have been improved, particularly the qpel MC functions. Should help performance a bit on Core 2 and similar CPUs. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is coming soon, which should give a nice (3x+) improvement to high bit depth encoding speed. &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. &lt;br /&gt;
&lt;br /&gt;
== Volume 4  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/10/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fourth x264 development newsletter. If you missed the first three, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
The Altivec SATD gave wrong results with very small strides (e.g. 8). This made output on PPC slightly different from x86, due to different results in lookahead and chroma ME. This is now fixed. &lt;br /&gt;
&lt;br /&gt;
FPS reporting on Windows 64-bit was very imprecise (the timers were only accurate to 1 second). This was due to _ftime using the wrong struct due to the Windows ABI&#039;s complete retardation. This has been fixed by using ftime instead. &lt;br /&gt;
&lt;br /&gt;
ssd_nv12 has been improved to eliminate overflow at high bit depths (this would, in theory, give wrong PSNR). &lt;br /&gt;
&lt;br /&gt;
SATD/SA8D/Hadamard_ac have been improved to eliminate overflow at high bit depths (this would cause wrong analysis results). &lt;br /&gt;
&lt;br /&gt;
Three ratecontrol bugs have been fixed: 1. B-frame size prediction has been fixed (it used quantizer instead of linearized qscale). This should improve VBV. 2. Overflow compensation, originally designed for 1-pass ABR, has been disabled with CRF on, as it doesn&#039;t do anything useful with pure CRF and causes very bizarre results with CRF+VBV in areas of extremely high complexity. 3. A bug in the way that clip_qscale caps the amount by which a frame can be higher quality than a previous frame (as a result of attempting to use up extra bits that would otherwise be wasted) has been fixed. This caused CBR to take extremely long times (e.g. seconds) to recover from extreme changes in complexity at low bitrates. &lt;br /&gt;
&lt;br /&gt;
A possible linking problem with lavf has been fixed. &lt;br /&gt;
&lt;br /&gt;
Some MV/ref prefetching code was in the wrong place. Fixing this may result in a tiny performance improvement. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
doc/threads.txt has been updated with modern benchmarks. This information may be useful to anyone looking to compare the impact of various threading strategies on quality and performance, as well as get an idea of how well x264 scales over multiple cores at various encoding speeds. &lt;br /&gt;
&lt;br /&gt;
The presets are now addressable numerically (0=ultrafast...9=placebo). &lt;br /&gt;
&lt;br /&gt;
 The exact mappings may change in the future if new presets are added&lt;br /&gt;
&lt;br /&gt;
or old presets removed, but they will always be in linear order of fast to slow. &lt;br /&gt;
&lt;br /&gt;
The ffmpeg -vpre error message (if a user doesn&#039;t use a -vpre) has been made more descriptive, to better instruct users about how the ffmpeg -vpre system works. &lt;br /&gt;
&lt;br /&gt;
weightp -1 offset dupes are now disabled in high bit depth mode, as they&#039;re a hack to get around crappy rounding in 8-bit encoding, and thus don&#039;t help in high bit depth. &lt;br /&gt;
&lt;br /&gt;
PSNR and SSIM measurements are now VFR-aware! This means they will take into account the duration of frames. This may result in PSNR and SSIM results appearing dramatically different from other tools when used on variable framerate video. Don&#039;t fret; x264 is correct, they are not. Of course, results will stay the same for constant framerate video. This is the first step to VFR-aware MB-tree. &lt;br /&gt;
&lt;br /&gt;
Quantizer handling has been improved. Library change: i_qpplus1 now defaults to X264_QP_AUTO. This doesn&#039;t actually change anything, as X264_QP_AUTO is 0, but this may change in the future. As a reminder, all x264_picture_t structs must be initialized using x264_picture_init or x264_picture_alloc! CRF values now make sense in high bit depth: --crf 23 means roughly the same quality in 8-bit or 10-bit, instead of being 4 times higher quality in 10-bit than in 8-bit. This means that --qp 0 should be used for lossless, not --crf 0. The latter will not result in lossless compression when in high bit depth mode. Bit depth has been added to statsfiles, to prevent users from inadvertently using a statsfile with the wrong bit depth. &lt;br /&gt;
&lt;br /&gt;
Scenecut&#039;s flash detection has been improved to work more sanely in the case of flashes at the end of the videos. &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
High bit depth assembly code is nearly ready. Speed boost has been measured as about 4.3x and is still improving. &lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is critical for some broadcast applications. Unlike most competing encoders, this VBV Emergency Mode does not drop frames or force all blocks to skip or some similarly extreme step: it adds a &amp;quot;denoising&amp;quot; step to reduce the complexity of the video, which scales upwards until it simply removes all content at the most extreme level. &lt;br /&gt;
&lt;br /&gt;
A pad filter is nearly ready for the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
HQDN3D (denoiser) and YADIF (deinterlacer) will be making their way into the x264CLI filter framework. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding mostly finished. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel. &lt;br /&gt;
&lt;br /&gt;
== Volume 5  ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;11/19/2010&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
This is the fifth x264 development newsletter. If you missed the first four, this is a regular email containing updates on fixes and improvements in the most recent x264 push, along with updates on what&#039;s coming next. Previous versions can be found in the mailing list archives. &lt;br /&gt;
&lt;br /&gt;
Note that we pushed a bugfix release this time around, so this newsletter includes fixes from those commits as well, i.e. it covers everything since the last newsletter. &lt;br /&gt;
&lt;br /&gt;
===== Fixes:  =====&lt;br /&gt;
&lt;br /&gt;
HRD now works correctly when used with intra refresh. Thanks to a certain x264 commercial licensee for the bug report. &lt;br /&gt;
&lt;br /&gt;
QPfile parsing now works as it was supposed to have worked last time: users should be able to omit QP values. &lt;br /&gt;
&lt;br /&gt;
Allocate the correct amount of memory for weightp buffers with weightp + high bit depth (it allocated too much, not too little). &lt;br /&gt;
&lt;br /&gt;
Fix flash detection to work correctly near the end of the keyframe interval. &lt;br /&gt;
&lt;br /&gt;
Fix a crash in dump yuv with some resolutions. &lt;br /&gt;
&lt;br /&gt;
Various fixes have been made to ratecontrol in high-bit-depth mode. &lt;br /&gt;
&lt;br /&gt;
Constrained intra pred is working properly again in all cases. &lt;br /&gt;
&lt;br /&gt;
===== Improvements:  =====&lt;br /&gt;
&lt;br /&gt;
x264&#039;s SEI header now indicates whether the build used was GPL or proprietary. &lt;br /&gt;
&lt;br /&gt;
x264 is now compatible with FFMS2&#039;s most recent API break. &lt;br /&gt;
&lt;br /&gt;
configure now logs test programs that failed, not just the error output. &lt;br /&gt;
&lt;br /&gt;
Merge Oskar&#039;s (irock&#039;s) 10-bit asm branch: ~4.4x overall speed boost in high bit depth mode. &lt;br /&gt;
&lt;br /&gt;
Chroma weighted prediction: dramatically improved chroma compression and quality in fades. &lt;br /&gt;
&lt;br /&gt;
Custom cropping rectangle support: users can now specify --crop-rect to add values to the H.264 cropping header. This is supposedly useful for 3D television applications (to allow legacy decoders to access only one view of the image). &lt;br /&gt;
&lt;br /&gt;
===== Upcoming:  =====&lt;br /&gt;
&lt;br /&gt;
VBV Emergency Mode is finally completed, with just fine-tuning and bugfixing left. This makes x264 able to deal gracefully with extreme input combined with VBV restrictions (e.g. noise, Doremi Labs test boxes). This is important for some broadcast applications. &lt;br /&gt;
&lt;br /&gt;
The pad filter and yadif are nearly ready for the x264CLI filter framework. Both now support high bit depth. &lt;br /&gt;
&lt;br /&gt;
Adaptive MBAFF development is coming along, with B-frames being finished up currently. &lt;br /&gt;
&lt;br /&gt;
x262 is under development: a best-in-class MPEG-2 encoder built using the x264 framework. Basic structure is done, with intra coding finished and inter coding begun. &lt;br /&gt;
&lt;br /&gt;
Work is planned to integrate x264 with the Sandy Bridge&#039;s encoding ASIC for improved encoding performance. Current status is: waiting on Intel (these guys move at the speed of a three-toed sloth swimming down a river of bricks). &lt;br /&gt;
&lt;br /&gt;
===== Other news:  =====&lt;br /&gt;
&lt;br /&gt;
Since we started a couple of months ago, over 40 companies have contacted us regarding x264 licensing! &lt;br /&gt;
&lt;br /&gt;
At least one major Blu-ray authoring house is switching to x264 for their commercial Blu-rays. &lt;br /&gt;
&lt;br /&gt;
At least one commercial encoding application based on x264 is currently in the works. An announcement will come Soon™. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Saintdev</name></author>
	</entry>
</feed>