summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encoder.h
AgeCommit message (Collapse)Author
2019-10-10Add FRAME_INFO into VP9_COMPangiebird
Change-Id: Ibc804f2420113010013c04dc005b02dfebdfda8a
2019-09-20Remove USE_PQSORT and CHANGE_MV_SEARCH_ORDERAngie Chiang
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
2019-08-28Move motion field from TplDepFrame to MotionFieldAngie Chiang
Replace get_pyramid_mv by vp9_motion_field_mi_get_mv. The goal is to modularize motion field related operations. Change-Id: I33084e680567ab106659ba9389cc4b507b893c69
2019-08-27Add motion_filed_info in VP9_COMPAngie Chiang
Call vp9_alloc_motion_field_info and vp9_free_motion_field_info properly Change-Id: I79fcb1fd37ee5e95bf7febb728480583ebd5a065
2019-08-16Add MotionField and MotionFieldInfoAngie Chiang
Also add related buffer alloc/free functions. Change-Id: I77dde3dd991f6b21b5c2c1ffa72300ce7738fd50
2019-06-21Make type of lambda int in TplDepFrameAngie Chiang
Change-Id: I8fdf1ad4790201b1624c8408d92983aeb0b08302
2019-05-31Remove RD code for CONFIG_REALTIME_ONLY in vp9.Jerome Jiang
This reduces vp9 only binary size by ~5.7%. Change-Id: I57e46baf591d68b0a0cecbc9319a1190df8b0457
2019-05-10Assign perceptual AQ mode as 5Jingning Han
Change-Id: I8f301fab3bedcd71588c57ccd6e49dcb7042e220
2019-05-01Rework the wiener variance bufferJingning Han
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
2019-05-01Deprecate stack_rank_buffer usageJingning Han
This large buffer is no longer needed. Change-Id: I9f2b3b28663d299649208f6172bba136103342ad
2019-04-29Add PERCEPTUAL_AQ tagJingning Han
Refactor the percetual AQ mode control. Change-Id: I9c00c32139ec98fd6aebc1d5086e042730f3616f
2019-04-21Remove mv_dist and mv_cost from TplDepStatsAngie Chiang
Change-Id: I1af8814449a187e900df9c930dc174f0832b0212
2019-04-21Remove inter_cost_arr and recon_error_arrAngie Chiang
Change-Id: I9eaf9563f2ee92fcfbe38d0f5e36c82632af468f
2019-04-21Remove unused mv_[dist/cost]_sumAngie Chiang
Change-Id: I8d173add2d1fc599a7915a3c9668870f18a0c59f
2019-04-12Add Tune for SSIMsdeng
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
2019-03-18Compute count_ls in vp9_kmeansAngie Chiang
Change-Id: Id5a83554f2037b03a3a7d86f83e47cac311fbe1d
2019-03-15Fix race condition in wiener_var_rd_multAngie Chiang
Change-Id: Id5e9c2cbfe35809ac99a3bc9ba93cf462a6b1a34
2019-03-14Let vp9_kmeans provide boundary for each groupAngie Chiang
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
2019-03-13Apply kmeans on log of wiener_varianceAngie Chiang
Change-Id: Ifc0068902e036cd5d94fc5d39f0349a5875469b7
2019-03-12Add normalization over frame level Wiener varianceJingning Han
Normalize the block level Wiener variance based decision according to the frame level Wiener variance. Change-Id: Ic2bdf1b322a65661775541dd6c174ba71579461a
2019-03-12Set up Wiener variance for macroblocks in a frameJingning Han
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
2019-03-05Add rd_diff_arr to store future blocks' rd diffAngie Chiang
Change-Id: Id996c1a427fb22a32b7a521cadf9f1523e5cf068
2019-02-13Only discount new mv mode when tpl model is readyAngie Chiang
Change-Id: I3326f0912627981fd604b16ddbf668d2262d4287
2019-02-13Use mv_mode_arr to decide the newmv discount placeAngie Chiang
Change-Id: I98c32aba4c9e81380b588dcdbfa991468487ce73
2019-02-05Add tpl_bsize to VP9_COMPAngie Chiang
Change-Id: Ibbe12dade04b218a41de9b65bbedba0054a69d83
2019-01-29Add some const qualifiers where applicableHui Su
Change-Id: Ib820f625e0b616fd57a2722ec3614b4fccf307f8
2019-01-24Add find_best_ref_mv_mode()Angie Chiang
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
2019-01-24Add get_mv_from_mv_mode()Angie Chiang
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
2019-01-14clean up debug print.Jerome Jiang
printf -> assert(0 & ...) Change-Id: I7bd6c0127ad816e8a5b555e86d54961b33da2bc4
2019-01-03Build pyramid motion fieldAngie Chiang
Change-Id: I43fd61f7946a8a96d444dab5e94a9b01483ffab7
2018-12-18Merge "Add PSNR_AQ mode"Jingning Han
2018-12-17Relocate tpl buffer allocationJingning Han
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
2018-12-17Add PSNR_AQ modeJingning Han
Placeholder to support adaptive quantizer for PSNR and SSIM coding quality improvement. Change-Id: Id967c9914bb1d72a6f480ef1ba9d6650914dd658
2018-12-12Replace mv_arr by pyramid_mv_arrAngie Chiang
We plan to compute mv field in different scale. Change-Id: I49a92d948f8b5dbab78e38c61f5f4f879bbe269f
2018-10-30clang-tidy: fix vp9/encoder parametersJohann
BUG=webm:1444 Change-Id: I6823635eb1a99c3fcca0a8f091878e3ab2fdd2ac
2018-10-17Variant implementation of changing mv search orderAngie Chiang
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
2018-10-17Add feature_score_loc_sortAngie Chiang
This CL is for facilitating the upcoming change, a variant implementation of change mv search order according to feature score Change-Id: Ie6024b1a5ec02343aea6aa81fc14f94e2e515d06
2018-10-17Change mv search order according to feature_scoreAngie Chiang
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
2018-10-17Merge "Reduce the cpi->scaled_ref_idx array size by 1."Wan-Teh Chang
2018-10-15Add encoder side frame buffer for tpl modelJingning Han
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
2018-10-15Refactor tpl model setup to support multi-layer ARF setupJingning Han
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
2018-10-11Remove unused variable from VP9_COMPJingning Han
Change-Id: I61447b7a21ac5b03f2a6accd6e433d8f9369e508
2018-10-09Merge changes I67700eba,I9e8f8ed3,Id93565ccAngie Chiang
* changes: Move feature_score into an independent for loop Add set_mv_limits() Move lambda into TplDepFrame
2018-10-08Set up the unit scaling factor for motion searchYunqing Wang
Set up the unit scaling factor used during motion search. Change-Id: I6fda018d593b7ad4b7658d44c39be950a502d192
2018-10-08Move lambda into TplDepFrameAngie Chiang
Change-Id: Id93565cca41e00d4ab5de4c6de30accabf2adc52
2018-10-08Reduce the cpi->scaled_ref_idx array size by 1.Wan-Teh Chang
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
2018-10-04Fix bug in prepare_nb_full_mvsAngie Chiang
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
2018-09-28Add mv_{dist/cost}_sum to TplDepFrameAngie Chiang
Change-Id: Iacce1f88630ba93ff72d745a83dd4b853b6b61af
2018-09-28Add mv_dist/mv_cost to TplDepStatsAngie Chiang
Change-Id: I66b35ef76c229d4eb3bf3c913619a0e219c4c2f9
2018-09-26Call vp9_full_pixel_diamond_new in tpl mv searchAngie Chiang
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