In current code, motion vectors got from single prediction mode are used
in compound prediction mode directly. These motion vectors may not give
accurate prediction since they are searched independently. In this patch,
we took Pascal's suggestion, and did joint motion search in compound
prediction mode to find better motion vectors in this situation.
Test results:
Overall PSNR: 0.570%(derf), 0.918%(stdhd);
SSIM: 0.572%(derf), 1.009%(stdhd);
The encoder is a little slower. This can be improved since some c
code is used in motion search.
Change-Id: Ib30c9240f6c56c9b070867b4ca89412a76d9f3c6
This commit enables the search for the optimal superblock
partition types in the recursion form. The intention is to
make the optimization process more concise and ready to
support partition down to 4x4 block size next.
Change-Id: Iae279a67df3a7cc372553c84c775bc4d2f3e4336
The previous code was somewhat vestigial for 16x16 MI units, but was
incorrect when called with chroma blocks larger than 4x4 because the
block index caused a reference to a non-existent BMI. This patch uses
the same MV for all chroma subblocks in SPLITMV mode, which is
suboptimal for non-4:2:0 subsamplings, but as SPLITMV may be removed
in the near future, will use this as a stop gap.
Change-Id: I3211cee5ccf1cfb426e5eef5353b0ce5bb92b4cd
Make framebuffer allocations according to the chroma subsamping
factors in use. A bit is placed in the raw part of the frame header for
each of the two subsampling factors. This will be moved in a future
commit to make them part of the TBD feature set bits, probably only set
on keyframes, etc.
Change-Id: I59ed38d3a3c0d4af3c7c277617de28d04a001853
The chroma planes are not used during the first pass encode,
but the vp9_encode_sb() function was operating on them anyway.
This was causing the use of uninitialized memory.
Change-Id: I5ebafcd3d5e34ed91a8336dad159b573995a939f
Code was previously using VPX_IMG_FMT_VPXI420, which was intended to be the
"vpx" non-YUV colorspace variant.
Change-Id: Icf8771eeefeb574055ed638a93450c3d0ed5b9f5
Update and buffer left/above partition information context per 8x8
block. This allows to further enable recursive partition down to
4x4 block size, and hence deprecating I4X4_PRED and SPLITMV.
This commit also fixes a context buffer swap/restore issue in 32x32
partition type search. This gives 0.1% performance gain for derf/yt.
Will refactor the superblock partition type search into recursion
form.
Change-Id: Ib61975aca5f12b78d8018481d7fa1393d085689b
Makes the temporary storage of the filtered data agnostic to
the number of planes and how they're subsampled.
Change-Id: I12f352cd69a47ebe1ac622af30db29b49becb7f4
Skip Q values between the q.0 mode and a real q of
2.0 as these are not valuable from an RD perspective.
Change-Id: I110c4858c57f97315953f4d88a2596d4764360df