summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encoder.h
AgeCommit message (Collapse)Author
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
2018-09-20Merge changes Ibbe7a1c1,I4333a207Angie Chiang
* changes: Add feature score for each block Correct mv rows/cols bug in read_frame_dpl_stats
2018-09-19Add feature score for each blockAngie Chiang
The feature score is used to indicate whether a block's mv is reliable or not. Now we use Harris Corner Detector method to compute the score. Change-Id: Ibbe7a1c1f3391d0bf4b03307eaabb5cc3cfb1360
2018-09-17Update frame index per buffer at encoderJingning Han
Update the frame index counting from key frame offset for all the processed frames at the encoder. This would allow encoder to automatically decide frame sign bias next. Change-Id: Ibbdc2a29b7245be27422272e1fb539596eed63d1
2018-09-18Merge "cosmetics: normalize include guards"James Zern
2018-09-17Remove multi_arf_last_grp_enabled flag.Paul Wilkins
Delete flag and associated code. Change-Id: I899d258a4cd7b84de9136ccfa27cf8a50108b130
2018-09-17Remove multi_arf_enabled.Paul Wilkins
Remove deprecated multi_arf_enabled flag and associated code. Change-Id: I73f06362a10faa5b3bd91a78eedb201a96434f18
2018-09-17Remove multi_arf_allowed variable.Paul Wilkins
Removes deprecated multi_arf_allowed variable and dependent code. Change-Id: Ic1cf341f807c38207e728c48a4c4442387db93ff
2018-09-15cosmetics: normalize include guardsJames Zern
use the recommended format [1] of: <PROJECT>_<PATH>_<FILE>_H_ [1] https://google.github.io/styleguide/cppguide.html#The__define_Guard "All header files should have #define guards to prevent multiple inclusion. The format of the symbol name should be <PROJECT>_<PATH>_<FILE>_H_." Change-Id: I2e8ab0b32fb23c30fa43cff5fec12d043c0d2037
2018-09-12Remove unused variables from VP9_COMPJingning Han
Change-Id: I853e0925d29becb9c1f84e5c00d84649fb070a07
2018-09-12Remove unused rate control data elementsPaul Wilkins
Removal of rate control structure elements related to Zoe's deprecated multi laryer ARF work. Change-Id: I5070657f91df7bd3f9137cf74016f737313417c8
2018-09-12Remove extra_arf_allowed.Paul Wilkins
Removed VP9_COMP element that is no longer used. Change-Id: I2b3e1e16244074e3510c1467b0e7532213c4ae05
2018-09-10Store mv/inter_cost/recon_error/err for ref framesAngie Chiang
These information will help with making better mv search decision Add functionality to dump tpl_stats for offline analysis Change-Id: Ic2ec34368499c9bccb4d1f21a12b66453847fcf2
2018-08-31Build arf index stackJingning Han
Stack the ARF frame indexes. Use the most recent one as the ARF reference frame for frame coding. Change-Id: I88a2202fa5deb2587d861b434d27ab8de0642cf7
2018-08-31Add element stack operations for arf index controlJingning Han
Support arf index stack operation. Change-Id: Ifcf521ffc95a520344824ffc159883b71e8fc7a0
2018-08-20Add multi_layer_arf flagJingning Han
This flag will control the use of multiple layer arf + show existing frames. Change-Id: Ic6b9e8e67b2db7d32706bdf0a14663a39f57295f
2018-08-14Add vpxenc control to turn on/off tpl modelJingning Han
The default is set to turn on the temporal dependency model at speed 0. Use --enable-tpl to control turning it on/off when calling vpxenc. Change-Id: I61614cd8100ae57dc01fd46b2a69c5b67287f18a
2018-07-30Add frame pointer to support recon frames in tpl modelJingning Han
Add frame pointer to re-use spare frames to store the reconstructed frames. Change-Id: I870aa048fc9b7d8b356aa73df3a92b4670425f95
2018-07-27Remove unused variables from VP9_COMPJingning Han
Change-Id: I3bdd44e65b56c7600b9faadd2c117138c3911c14
2018-07-13Set the estimate frame qp in tpl_frameJingning Han
Assign the estimate frame quantization parameter in the tpl_frame data structure. Change-Id: I6149bdb1e15dbdae348f06ff61bf814004462232
2018-07-11Change the tpl model operating block size to 32x32Jingning Han
Increase the temporal dependency model operating block size from 8x8 to 32x32. Change-Id: I26b13493fe957d67c8646575370e651584b56ea5
2018-07-02Add hierarchical structure based ref frame updateZoe Liu
Change-Id: I23559110bae8fa2328fe9bdb6672c7b1da84e17f
2018-06-29Exploit the spatial variance in temporal dependency modelJingning Han
Adapt the Lagrangian multipler based on the spatial variance in the temporal dependency model. The functionality is disabled by default. To turn on, set enable_tpl_model to 1. Change-Id: I1b50606d9e2c8eb9c790c49eacc12c00d3d7c211
2018-06-22Add reference frame update flags for hierarchicalZoe Liu
Previous CLs have implemented the construction of the hierarchical structure at the encoder side. This CL is to define and configure the according flags that will guide the reference frame update according to the constructed hierarchical structure. Change-Id: Iae55f2400f7c7beff41feff9308f87bfc70c7b21
2018-06-22Add extra altref option for hierarchical structureZoe Liu
This CL is to hook up the implemented hierarchical structure construction as well as its corresponding bitrate allocation functionality with the defining of a GF group. Currently the hierarchical structure is off by default. Hence this CL has no impact on coding performance. Change-Id: I9e1ddfd877559e99072c23970f7fe103b64ed9ee
2018-06-20Merge "Add hierarchical structure in GF group"Zoe Liu
2018-06-19Add hierarchical structure in GF groupZoe Liu
Change-Id: I06fc4b0ad5a45c49e10a9601a2356fbc6e93d6da