summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_encoder.h
AgeCommit message (Collapse)Author
2022-01-11Revert "Add vp9 ref frame to flag map function"Jerome Jiang
This reverts commit 44e611482e13fdffa0acde780a20dd68ee153498. Change-Id: Ic900cc01be4de7983fab42178a488277efab77b3
2022-01-01Add vp9 ref frame to flag map functionJianhui Dai
Change-Id: I371c2346b9e0153c0f8053cab399ce14cd286c56
2021-12-11Set unused reference frames to first refJianhui Dai
If a reference frame is not referenced, then set the index for that reference to the first one used/referenced instead of unused slot. Unused slot means key frame, as key frame resets all slots with itself. This CL extracts `get_first_ref_frame()` from `reset_fb_idx_unused()` with a typo fixing, and sets all unused reference frames to first ref in vp9 uncompressed header. Bug: webrtc:13442 Change-Id: I99523bc2ceedf27efe376d1113851ff342982181
2021-07-23Remove unused old FP_MB_STATS codeYunqing Wang
Change-Id: I78ac1f8ce1598de295efd2ac1fe8244072d9b501
2021-07-23Clean up allow_partition_search_skip codeYunqing Wang
Change-Id: Ia05157fc3e613d93f10df5abddd77a740a0005ca
2021-07-13Add codec control for rtc external ratectrl libJerome Jiang
This will do 3 things: Turn off low motion computation Turn off gf update constrain on key frame frequency turn off content mode for cyclic refresh Those are used to verify the external ratectrl lib works as expected. Change-Id: Ic6e61498de82d6b3973e58df246cf5e05f838680
2021-06-21Add use_simple_encode_api to oxcfAngie Chiang
Use this flag to change the encoder behavior when SimpleEncode APIs are used BUG=webm:1733 Change-Id: I9f0852a03ff99faa01cdd8eee8ab71718cc58632
2021-03-03Add fields into RC for Vizier ML experiments.Paul Wilkins
This patch adds fields into the RC data structure for the Vizier. The added fields allow control of some extra rate control parameters and rate distortion. This patch also adds functions to initialize the various parameters though many are not yet used / wired in and for now all are set to default values. Ultimately many will be set through new command line options. Change-Id: I41591bb627d3837d2104fb363845adedbddf2e02
2020-11-09Accumulate frame tpl stats and pass through rate control apiCheng Chen
Tpl stats is computed at the beginning of encoding the altref frame. We aggregate tpl stats of all blocks for every frame of the current group of picture. After the altref frame is encoded, the tpl stats is passed through the encode frame result to external environment. Change-Id: I2284f8cf9c45d35ba02f3ea45f0187edbbf48294
2020-10-20Add ref frame info to vpx_rc_encodeframe_info_tAngie Chiang
Bug: webm:1707 Change-Id: I2ff9e54a9c8ae535628c1c471a2d078652f49a31
2020-10-09Add vp9_extrc_init/create/deleteangiebird
Change-Id: I9fcb9f4cc5c565794229593fadde87286fcf0ffd
2020-10-09Add callback functions for external_rate_controlangiebird
Change-Id: I20a1179a2131d2cd069dae9076aa2c18b80784f3
2020-10-02Add codec control for external rate control libangiebird
VP9E_SET_EXTERNAL_RATE_CONTROL One can assign an external library using the control flag, VP9E_SET_EXTERNAL_RATE_CONTROL. The args alongside the control flag should be of type char**. args[0]: char* points to the path of rate control library args[1]: char* points to the config of the rate control library. Change-Id: Iae47362cdfafa00614bac427884bffcf6944c583
2020-10-02Add codec control to disable loopfilter for vp9Jerome Jiang
Change-Id: I6d693e84570c353d20ec314acea43363956c0590
2020-08-10Avoid re-allocating fp_motion_vector_infoangiebird
Replace fp_motion_vector_info_init() by fp_motion_vector_info_reset() in first_pass_encode() Change-Id: Iadacb1ecc4f07435340399564fdd3bfd4ac702f4
2020-08-10Make target_frame_bits error margin configurable.angiebird
Change-Id: I05dd4d60741743c13951727ce6608acf4224ebec
2020-08-07Add rq_history to encode_frame_resultangiebird
Change-Id: Ic2a52dcf5e5a6d57b80d390a2c48ee498e89e7b2
2020-08-07Fix ObserveFirstPassMotionVectors()angiebird
1) Use kRefFrameTypeNone in the unit test 2) Reset mv_info in fp_motion_vector_info_init 3) Call fp_motion_vector_info_init() in first_pass_encode() 4) Set mv_info for intra frame. 5) Set mv_info with zero mv as default for inter frame 6) Remove duplicated fp_motion_vector_info in encode_frame_info Change-Id: I2f7db5cd4cf1f19db039c9ce638d17b832f45b6e
2020-08-06Merge "Cosmetic changes for rate_ctrl experiment"Angie Chiang
2020-08-05Cosmetic changes for rate_ctrl experimentangiebird
Change-Id: I133c93c2ad4c824fc97a18de3ac2cb2aedac9013
2020-08-03L2E: Add ObserveFirstPassMotionVectorCheng Chen
Store motion vectors for each 16x16 block found in the first pass motion search. Provide an api "ObserveFirstPassMotionVector()" in SimpleEncode class, similar to "ObserveFirstPassStats()". Change-Id: Ia86386b7e4aa549f7000e7965c287380bf52e62c
2020-08-03Add recode loop logics for rate_ctrl experimentangiebird
Change-Id: I4de5a38e25d6b0836d90e8fcd0e56d268e5fd838
2020-07-20Add init version of EncodeFrameWithTargetFrameBits()angiebird
Will add a unit test in a followup CL. Change-Id: I6a6354f307c427e1a352be7c6421927323eb5e1b
2020-05-26Add GOP_COMMANDangiebird
Send GOP_COMMAND to vp9 for setting gop decisions on the fly. GOP_COMMAND has three members. use: use this command to set gop or use vp9's gop decision. show_frame_count: number of show frames in this gop. use_alt_ref: use alt ref frame or not. Move the logic of processing external_arf_indexes_ from get_gop_coding_frame_num() to GetGopCommand() and GetCodingFrameNumFromGopMap(). Change-Id: Ic1942c7a4cf6eecdf3507864577688350c7ef0cf
2020-04-24Revert "Revert "Remove RD code for CONFIG_REALTIME_ONLY in vp9.""Jerome Jiang
Under CONFIG_REALTIME_ONLY flag, map speed < 5 to speed 5. Bug: webm:1684 This reverts commit 85cb983682fe9ca14fd302b50d27d762da05d665. Change-Id: I67b7ed37e8b74417db310ea0c817d3c5a5de9e44
2020-04-20Revert "Remove RD code for CONFIG_REALTIME_ONLY in vp9."Jerome Jiang
This reverts commit da24d35132e80422dc2c33e7c92462f4db7cd83d. BUG=webm:1684 Change-Id: I552c37c7bdc844610879a65cc02038d76a5d32b1
2020-04-06vp9: add rate control interface for RTCJerome Jiang
Add vp9 RTC rate control without creating encoder, to allow external codecs to use vp9 rate control. A new library (libvp9rc.a) will be built. Applications using this interface must be linked with the library. BUG=1060775 Change-Id: Ib3e597256725a37d2d104e1e1a1733c469991b03
2020-03-03Add ref_frame_info to encode_frame_resultangiebird
Change-Id: If41a1ea6ce0a2b8db3811f2fa8efcf16f97fa0bd
2020-02-24Make external arf consistent with vp9Cheng Chen
Add a test to ensure that encoding with the external arfs gets the same result as long as the arfs are the same as the vp9 baseline. Change-Id: I92c79001018f4df3bc16e9fc56c733509bebb9dc
2020-02-24Allow external arf to determine gop sizeCheng Chen
When "rate_ctrl" experiment is on, we allow the external arf passed from outside to determine group of picture size in define_gf_group(). Change-Id: I0b8c3e1bf3087f21a4e484354168df4967d35bba
2020-02-24Add interface for external arf indexes.Cheng Chen
Pass in external arf indexes to encode command. Change-Id: Ifea5a7d835643760fc5effc594bb448848f6d639
2020-02-10Do save/restore_encode_params when rate_ctrl is onangiebird
Change-Id: I06492a4d1511869cb243477a47295d5f82608fca
2020-02-05Add coded_frame to EncodeFrameResultsangiebird
This coded_frame represents the raw coded image. Change-Id: Iea439da2f9e84c4507b082d77ebaac49bfd74fff
2020-02-02Store frame motion vector infoCheng Chen
Allocate motion vector information for the frame, and store it when a superblock (64x64) is encoded. The unit size of the smallest block is 4x4. A special requirement by the vp9 spec is that sub 8x8 blocks of a 8x8 block must have the same reference frame. There is no such requirement for blocks large or equal to 8x8. Change-Id: Iba17c568c450361e5d059503c6fb7bc458184c31
2020-01-27Consistency test for partition infoCheng Chen
Test the information stored in the encoder is the same between two encode runs. Change-Id: I4f97fac4f212602f766aee0a6cbef566ca43b41e
2020-01-27Pass partition info to encode frame resultCheng Chen
Init the memory for partition information in "EncodeFrameResult". And pass the partition information of vp9 encoder to it through the interface: "update_encode_frame_result()". Change-Id: Iea049e661da79f54d41da7924b9ef28ff7cfbfa3
2020-01-24Store frame partition infoCheng Chen
Allocate partition information for the frame, and update it when a superblock (64x64) is encoded. The unit size of the smallest block is 4x4. For each 4x4 block, store the current positition (row, column), the start positition (row_start, column_start) of the partition, and the block width and height of the partition. Change-Id: I11c16bbca7e89a088715a1200abd23fe2f9ca1d6
2020-01-17vp9: add delta q for uv channel. add tests.Jerome Jiang
Add control for delta q for uv. 0 by default. Change-Id: Ib8ed160b1a5c9a61ba15985076f6c6f121477103
2020-01-09Copy frame counts to the encode result.Cheng Chen
Explicitly copy frame counts of each frame to the encode result struct. Change-Id: Icc18ac83a9e2be8d7a4819f2fffcfda6568b275c
2019-12-13Move psnr/sse computation under RATE_CTRL flagangiebird
in update_encode_frame_result() Change-Id: Ie86d11f66744ef95dd224c7daf325750a5e5458b
2019-11-21Cosmetic changes of SimpleEncode codeangiebird
Change-Id: Ied06630d605a4978711070778b92bfb731c32161
2019-11-18Add SimpleEncode::EncodeFrameWithQuantizeIndex()angiebird
Change-Id: I4442de01dfdbf13b0b9f7830f0fb393d3b935522
2019-11-18Add quantize_index to EncodeFrameResultangiebird
Change-Id: Idfb36a8bfa264df8294eba70424fd25fa5d88cda
2019-11-18Add psnr and sse to EncodeFrameResultangiebird
Change-Id: I33c410a14b86f95278eff8d1d0e6992f1b82a17d
2019-11-18Add frame_type and show_idx to EncodeFrameResultangiebird
Let vp9_get_compressed_data update ENCODE_FRAME_RESULT, a C version of EncodeFrameResult. Let unit test to test frame_type and show_idx properly. Change-Id: Id810c26c826254fd82249f19ab855ea3b440d99c
2019-11-15Add const to oxcf of vp9_create_compressorangiebird
Change-Id: Id42dbdddae3e0a16022343c89cbc57912297398c
2019-11-14Add vp9_update_compressor_with_img_fmt()angiebird
Add utility functions vpx_img_chroma_subsampling vpx_img_use_highbitdepth Change-Id: I7b44fdc2cf67bbb49e161fdf778917b9ec0c8832
2019-11-14Remove output_pkt_list from cpiangiebird
Move the pkt operations to encoder_encode Change-Id: Ibe730baab61bf7a395998641f106eb0f06d3b8ae
2019-11-13Pack psnr pkt outside of vp9_get_compressed_dataangiebird
Change-Id: I5549c3dbcbe1550824deaebf03178e38c1b07d54
2019-11-13Add g_timebase/g_timebase_in_ts to oxcfangiebird
Use get_g_timebase_in_ts() to set priv->timestamp_ratio and oxcf->g_timebase_in_ts Change-Id: Iea9d589cb7e5611067bcedfdf6f5becd4592d3cf