Commit Graph

731 Commits

Author SHA1 Message Date
Jingning Han
8e3d0e4d7d Add building blocks for 4x8/8x4 rd search
These building blocks enable rate-distortion optimization search
over block sizes of 8x4 and 4x8. Need to convert them into mmx/sse
forms.

Change-Id: I570ea2d22d14ceec3fe3575128d7dfa172a577de
2013-05-16 10:41:29 -07:00
Jingning Han
c0f70cca40 Merge "Fix the transform type selection in 4x4 partition" into experimental 2013-05-16 10:14:49 -07:00
Paul Wilkins
18e07420a2 Merge "Further Implicit Segmentation Changes" into experimental 2013-05-16 03:03:44 -07:00
John Koleszar
7addafb5b1 Merge "Fix vp9_build_intra_predictors_sbuv_s for non-4:2:0" into experimental 2013-05-15 20:58:15 -07:00
John Koleszar
501ae3484c Fix vp9_build_intra_predictors_sbuv_s for non-4:2:0
Remove an assumption about chroma size, and the number of planes.

Change-Id: I286a7fac296ec334c6a8ad847f663f3adbb9f43e
2013-05-15 17:57:08 -07:00
Dmitry Kovalev
5c5582242d Moving the same code to new function vp9_setup_scale_factors.
Change-Id: I2408ad22717784a40e23701ccb9d978265440e4f
2013-05-15 16:33:36 -07:00
Jingning Han
8468a5c1a0 Fix the transform type selection in 4x4 partition
This commit allows proper transform type (DCT/ADST) selection in
the settings of partition 4x4 level.

Change-Id: Iec6f922a46480d777e7ca9142a99e8c131f0077b
2013-05-15 16:09:58 -07:00
Dmitry Kovalev
cd16fe9160 Merge "Preparing vp9_deblock and vp9_denoise to alpha support." into experimental 2013-05-15 15:40:52 -07:00
Dmitry Kovalev
80c0715375 Merge "Moving several static functions from vp9_reconinter.h to vp9_reconinter.c." into experimental 2013-05-15 15:39:43 -07:00
Scott LaVarnway
a272ff25cd WIP: 16x16 idct/recon merge
This patch eliminates the intermediate diff buffer usage by
combining the short idct and the add residual into one function.
The encoder can use the same code as well.

Change-Id: Iea7976b22b1927d24b8004d2a3fddae7ecca3ba1
2013-05-15 13:16:02 -04:00
Paul Wilkins
7d7e5b5131 Further Implicit Segmentation Changes
Trial use of a combination of reference frame,
prediction block size and mv to define segmentation.

Change-Id: Ie8946a0446dbad777fdcf7626f89e5af0994db50
2013-05-15 16:00:06 +01:00
Dmitry Kovalev
6706e674b1 Moving several static functions from vp9_reconinter.h to vp9_reconinter.c.
Change-Id: I5da9c16bab26f6ff0c9d3a2a29ef6c84f5093161
2013-05-14 17:49:41 -07:00
Scott LaVarnway
2cf0d4be12 WIP: 32x32 idct/recon merge
This patch eliminates the intermediate diff buffer usage by
combining the short idct and the add residual into one function.
The encoder can use the same code as well.

Change-Id: I4ea09df0e162591e420d869b7431c2e7f89a8c1a
2013-05-14 15:54:17 -07:00
Jingning Han
1f26840fbf Enable recursive partition down to 4x4
This commit allows the rate-distortion optimization recursion
at encoder to go down to 4x4 block size. It deprecates the use
of I4X4_PRED and SPLITMV syntax elements from bit-stream
writing/reading. Will remove the unused probability models in
the next patch.

The partition type search and bit-stream are now capable of
supporting the rectangular partition of 8x8 block, i.e., 8x4
and 4x8. Need to revise the rate-distortion parts to get these
two partition tested in the rd loop.

Change-Id: I0dfe3b90a1507ad6138db10cc58e6e237a06a9d6
2013-05-14 12:39:56 -07:00
Dmitry Kovalev
7bbf716f04 Preparing vp9_deblock and vp9_denoise to alpha support.
Change-Id: I299feefa64b93bd62263aea1ff1e41e85faeb6ca
2013-05-14 11:01:57 -07:00
Yaowu Xu
8be35347a8 Merge "changed to use adst for D63_PRED" into experimental 2013-05-14 09:30:17 -07:00
John Koleszar
d31a632dcd Merge "Revert "Preparing vp9_deblock and vp9_denoise to alpha support."" into experimental 2013-05-14 06:47:44 -07:00
John Koleszar
56efb73be3 Revert "Preparing vp9_deblock and vp9_denoise to alpha support."
This reverts commit a933311131

Change-Id: I2321f88011178381adbcffeda1bcc6a430ab8f1d
2013-05-14 06:46:11 -07:00
Yaowu Xu
da3aec6c8a changed to use adst for D63_PRED
To be consistent with other prediciton modes

Change-Id: If9e1464e5c807f0b36047a046c4ac59d91b1b868
2013-05-13 22:09:38 -07:00
Dmitry Kovalev
571aa44606 Merge "Preparing vp9_deblock and vp9_denoise to alpha support." into experimental 2013-05-13 21:48:37 -07:00
Dmitry Kovalev
ce70ad5967 Merge "Code cleanup inside vp9_firstpass.c." into experimental 2013-05-13 21:46:14 -07:00
Dmitry Kovalev
2149852935 Merge "Removing simple loopfilter and code duplication from loopfilter code." into experimental 2013-05-13 18:25:15 -07:00
Dmitry Kovalev
1c43e643b7 Removing simple loopfilter and code duplication from loopfilter code.
Change-Id: Ib19352e391408507f2237985501406900a355964
2013-05-13 18:09:11 -07:00
Dmitry Kovalev
a933311131 Preparing vp9_deblock and vp9_denoise to alpha support.
Change-Id: Id1cc1c2663b9c2219cb830ffb4b0c6ab3468dc04
2013-05-13 14:03:29 -07:00
Jingning Han
089ed30d07 Merge "Use consistent partition context setup in enc/dec" into experimental 2013-05-13 10:51:51 -07:00
Jingning Han
fc31ae479d Merge "Move get_sb_index to vp9_blockd.h" into experimental 2013-05-13 10:51:29 -07:00
Paul Wilkins
e5f715201a Change to band calculation.
Change band calculation back to simpler model based
on the order in which coefficients are coded in scan order
not the absolute coefficient positions.

With the scatter scan experiment enabled the results were
appear broadly neutral on derf (-0.028) but up a little on std-hd +0.134).

Without the scatterscan experiment on the results were up derf as well.

Change-Id: Ie9ef03ce42a6b24b849a4bebe950d4a5dffa6791
2013-05-13 17:21:49 +01:00
Jingning Han
6910f178f1 Use consistent partition context setup in enc/dec
Move set_partition_seg_context_ to common file. Use consistent
context setup conditions for partition probability model update at
encoder and decoder.

Change-Id: I24b7ed3b1c48e3d2568191a46b70136b99b67b1a
2013-05-11 15:22:13 -07:00
Jingning Han
2117d4ee96 Move get_sb_index to vp9_blockd.h
Use common function to fetch/assign sb_index in rd loop, bit-stream
writing and reading.

Change-Id: I1d8a214a57ed9cbcd026040436ef33e5e39d65b7
2013-05-11 13:26:59 -07:00
John Koleszar
5f221e7ac4 Merge "Fix token allocation for non-4:2:0" into experimental 2013-05-10 16:57:09 -07:00
John Koleszar
998b540fe2 Merge "Fix non-4:2:0 chroma MV calculation for SPLITMV" into experimental 2013-05-10 16:57:03 -07:00
John Koleszar
64667d5af7 Merge "Subsampling aware allocs and bitstream" into experimental 2013-05-10 16:55:00 -07:00
Dmitry Kovalev
4a559d3448 Merge "Removing unused simple loopfilter code." into experimental 2013-05-10 12:14:34 -07:00
Dmitry Kovalev
effaa3263d Removing unused simple loopfilter code.
Change-Id: Ic11dc052fb641687c015e1bbc37181b9babcd43e
2013-05-10 11:04:43 -07:00
Yunqing Wang
9f5811c2da Add joint motion search in comp_inter_inter mode(experiment)
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
2013-05-10 10:15:43 -07:00
John Koleszar
da5054c5af Fix token allocation for non-4:2:0
Increase the allocated size of the token array to support 4:4:4.

Change-Id: I7766a7bedc74b819dcc1f3622d634f340fd3186d
2013-05-09 20:22:59 -07:00
John Koleszar
a37ee9d2e8 Fix non-4:2:0 chroma MV calculation for SPLITMV
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
2013-05-09 20:14:39 -07:00
John Koleszar
da58436f43 Subsampling aware allocs and bitstream
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
2013-05-09 17:50:12 -07:00
John Koleszar
eab6a421ea Merge "Use common get_uv_tx_size()" into experimental 2013-05-09 12:18:10 -07:00
Dmitry Kovalev
eb93893bee Updating comments for prediction modes.
Change-Id: If4063184f7b37dc011ec6a7a3e75260f4251e984
2013-05-09 11:37:51 -07:00
John Koleszar
1fec23bef6 Use common get_uv_tx_size()
Use a single method for calculating the transform size of
non-luma planes.

Change-Id: I16ebd10e7944d7b9075ab79d15e6a5b5f9bab775
2013-05-08 20:48:32 -07:00
Dmitry Kovalev
dc5418050a Code cleanup inside vp9_firstpass.c.
Change-Id: Ia2814402e3c2ec97c24c536c05f0f526fe1a431c
2013-05-08 18:13:46 -07:00
Dmitry Kovalev
f66320abff Removing LOOPFILTER_TYPE and corresponding bit in bitstream.
We don't have two loopfilter types anymore.

Change-Id: I53c0137361342c7d00887ad03be3490f0dfa3532
2013-05-08 16:44:08 -07:00
Dmitry Kovalev
267e9331e2 Merge "Using 4-iteration loop for extra_mb_col inside loopfilter function." into experimental 2013-05-08 16:37:34 -07:00
Dmitry Kovalev
7b602cba65 Merge "Eliminating several YV12_BUFFER_CONFIG usages." into experimental 2013-05-08 16:36:24 -07:00
Jingning Han
944ad130b6 Merge "Extend left/above partition context to per mi(8x8)" into experimental 2013-05-08 16:33:25 -07:00
Dmitry Kovalev
81f33bc091 Eliminating several YV12_BUFFER_CONFIG usages.
Change-Id: Ia85b987c935d545920dcae5a6f44136b1a08a008
2013-05-08 14:11:47 -07:00
Dmitry Kovalev
673cc21dfc Using loop to iterate through YV12_BUFFER_CONFIG planes.
Change-Id: I22f1066eb0022c8d75f65a78435ee4ffecdfe0c9
2013-05-08 13:39:16 -07:00
Dmitry Kovalev
a0b6b8a7d4 Merge "Removing unused code + little cleanup." into experimental 2013-05-08 11:23:14 -07:00
Jingning Han
4a88ad89fd Extend left/above partition context to per mi(8x8)
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
2013-05-08 10:20:34 -07:00