Age | Commit message (Collapse) | Author |
|
Change-Id: Ibc804f2420113010013c04dc005b02dfebdfda8a
|
|
Remove the feature_score related code to simplify the code.
The feature_score is incorporated in get_local_structure and will
be integrated in later.
The current non_greedy_mv performances are
lowres: -0.239% midres: -0.569% hdres: -0.365%
Change-Id: Ida28bb1baff6932f1c28b24d371a35a1546fa7e9
|
|
Replace get_pyramid_mv by vp9_motion_field_mi_get_mv.
The goal is to modularize motion field related operations.
Change-Id: I33084e680567ab106659ba9389cc4b507b893c69
|
|
Call vp9_alloc_motion_field_info and
vp9_free_motion_field_info properly
Change-Id: I79fcb1fd37ee5e95bf7febb728480583ebd5a065
|
|
Also add related buffer alloc/free functions.
Change-Id: I77dde3dd991f6b21b5c2c1ffa72300ce7738fd50
|
|
Change-Id: I8fdf1ad4790201b1624c8408d92983aeb0b08302
|
|
This reduces vp9 only binary size by ~5.7%.
Change-Id: I57e46baf591d68b0a0cecbc9319a1190df8b0457
|
|
Change-Id: I8f301fab3bedcd71588c57ccd6e49dcb7042e220
|
|
Support the potential frame scaling use case. The operation flow
now allows the codec to allocate the memory buffer only when
perceptual AQ mode is enabled.
Change-Id: I7529e63131276dbe3a29f910d3a227f20dbc94a2
|
|
This large buffer is no longer needed.
Change-Id: I9f2b3b28663d299649208f6172bba136103342ad
|
|
Refactor the percetual AQ mode control.
Change-Id: I9c00c32139ec98fd6aebc1d5086e042730f3616f
|
|
Change-Id: I1af8814449a187e900df9c930dc174f0832b0212
|
|
Change-Id: I9eaf9563f2ee92fcfbe38d0f5e36c82632af468f
|
|
Change-Id: I8d173add2d1fc599a7915a3c9668870f18a0c59f
|
|
Implementation with some tuning of the paper:
C. Yeo, H. L. Tan, and Y. H. Tan, "On rate distortion optimization using
SSIM," Circuits and Systems for Video Technology, IEEE Transactions on,
vol. 23, no. 7, pp. 1170-1181, 2013.
Test results:
avg_psnr ssim ms-ssim
lowres 2.516 -2.622 -2.450
midres 2.312 -3.062 -3.882
hdres 2.292 -4.293 -5.246
The encoding time is about the same as the baseline.
Change-Id: Ida2c380ade79b6c15cf12b88bf090069da8765d8
|
|
Change-Id: Id5a83554f2037b03a3a7d86f83e47cac311fbe1d
|
|
Change-Id: Id5e9c2cbfe35809ac99a3bc9ba93cf462a6b1a34
|
|
boundary_ls[j] is the upper bound of data centered at ctr_ls[j]
Add vp9_get_group_idx() for computing group_idx
Change-Id: I3b1b488edf8acbfb63c469eeeba15f3e42b0a645
|
|
Change-Id: Ifc0068902e036cd5d94fc5d39f0349a5875469b7
|
|
Normalize the block level Wiener variance based decision according
to the frame level Wiener variance.
Change-Id: Ic2bdf1b322a65661775541dd6c174ba71579461a
|
|
This commit introduces a Wiener variance term. For each block in
the source frame, we first estimate its film grain noise level
using median filter in the transform domain. Each transform
coefficient is then processed using Wiener filter to account for
the impact on the energy level due to film grain noise. The result
leads to a second moment of the denoised signal.
Change-Id: Ibce7cb1b0cb8fe1aba807d95289712271d576948
|
|
Change-Id: Id996c1a427fb22a32b7a521cadf9f1523e5cf068
|
|
Change-Id: I3326f0912627981fd604b16ddbf668d2262d4287
|
|
Change-Id: I98c32aba4c9e81380b588dcdbfa991468487ce73
|
|
Change-Id: Ibbe12dade04b218a41de9b65bbedba0054a69d83
|
|
Change-Id: Ib820f625e0b616fd57a2722ec3614b4fccf307f8
|
|
This function compute the rd cost for each mv_mode and return the
one with minimum rd cost.
eval_mv_mode()
Evaluate the rd cost for a given mv_mode.
Change-Id: Ia1b3ec7e1dd538e443e1bc79f2cab352408cd0a0
|
|
Given an mv_mode, this function will return the corresponding mv.
find_ref_mv()
A helper function finds the nearest and near mvs from the neighbor
blocks.
select_mv_arr[]
An array used for storing selected motion vectors.
Change-Id: Ibeb434007f65b2c6e461360f208d99455e76bcbf
|
|
printf -> assert(0 & ...)
Change-Id: I7bd6c0127ad816e8a5b555e86d54961b33da2bc4
|
|
Change-Id: I43fd61f7946a8a96d444dab5e94a9b01483ffab7
|
|
|
|
Move it to deeper stages where all the encoder configurations have
been set. This avoids the encoding failure when the buffer is
allocated before the encoder is fully configured.
Change-Id: I6723966fd2c7c36fbab9a92d1f3bd59c83ed95f0
|
|
Placeholder to support adaptive quantizer for PSNR and SSIM coding
quality improvement.
Change-Id: Id967c9914bb1d72a6f480ef1ba9d6650914dd658
|
|
We plan to compute mv field in different scale.
Change-Id: I49a92d948f8b5dbab78e38c61f5f4f879bbe269f
|
|
BUG=webm:1444
Change-Id: I6823635eb1a99c3fcca0a8f091878e3ab2fdd2ac
|
|
We start mv search from the block with highest feature score, then
move on to the block's neighbors with with an searching order using
their feature scores.
We use max heap to help us achieve the functionality.
This feature is under flag USE_PQSORT
Change-Id: Ie5dc5ea715b0f9a7a594e5080a7cb4f5309f5597
|
|
This CL is for facilitating the upcoming change,
a variant implementation of change mv search order according to
feature score
Change-Id: Ie6024b1a5ec02343aea6aa81fc14f94e2e515d06
|
|
Sort the feature_score in descending order.
Do mv search from the block with higher score to the block with
lower score
Change-Id: I47a87cd66ea3e40d8c8fc55a7517ab8aa10fdb94
|
|
|
|
Add an encoder side reference frame buffer pool to store the
reference frames for tpl model. This servces as an intermediate
step to support multi-layer ARF system. The buffer memory size will
be optimized afterwards.
Change-Id: If2d2f095d4911a4996f6c2a0b0a8e3d235ceadb2
|
|
Generalize the tpl model framework to support the newly designed
GOP structure system. The existing tpl model assumes single layer
ARF.
This design will separate the tpl model operation for GOP with
and without ARF cases. When a GOP has ARF, the maximum lookahead
offset would upper limit the needed frame buffer to build the
tpl model for the entire GOP. When a GOP does not have ARF, we
would use the temporal model in a different approach.
The first step will focus on GOP with ARF. All the tpl model related
operation will only be triggered by ARF frame generation.
Change-Id: I13ab03a7bc68f5a4f6b03f2cb01c10befe955e73
|
|
Change-Id: I61447b7a21ac5b03f2a6accd6e433d8f9369e508
|
|
* changes:
Move feature_score into an independent for loop
Add set_mv_limits()
Move lambda into TplDepFrame
|
|
Set up the unit scaling factor used during motion search.
Change-Id: I6fda018d593b7ad4b7658d44c39be950a502d192
|
|
Change-Id: Id93565cca41e00d4ab5de4c6de30accabf2adc52
|
|
The last element of the cpi->scaled_ref_idx array was not used, so
reduce the array size by 1.
The corresponding libaom CL is
https://aomedia-review.googlesource.com/c/aom/+/72445.
Change-Id: I9166f0fbe1a7898c8b611b1535fcc74b4f766997
|
|
Previously, the prepare_nb_full_mvs might construct nb_full_mv with
wrong mvs (from other ref frame).
The following changes will fix the bug.
1) Let ready in TplDepStats becomes int array
2) Add parameter rf_idx
3) Use mv_arr instead of mv to build the nb_full_mv
Change-Id: I199798aec4c6762d54799562e142457cc26ee043
|
|
Change-Id: Iacce1f88630ba93ff72d745a83dd4b853b6b61af
|
|
Change-Id: I66b35ef76c229d4eb3bf3c913619a0e219c4c2f9
|
|
The function is called in motion_compensated_prediction when
CONFIG_NON_GREEDY_MV is on.
The parameter lambda is used to adjust the importance of
mv consistency between neighbor blocks.
The lambda value is set to a random value for now, and still needs
to be tuned.
Change-Id: I918eb36a686eaa56b4009058f5f329e90c75870b
|