1. Add rk_venc_rc.h for rate control definitions.
2. Add drop parameter to set_rc_cfg.
Change-Id: Iab27a1505ba187f512815f7ab00cd0ea7f863cb8
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
when select avbr must set target_bps max_bps min_bps,in still scene
will used min_bps for enc, in the moving scene will max_bps for enc.
and final avg bit will get close to target_bps
Change-Id: I84b2878c7e76b18a593ca2a0d99c0c8f26a2d557
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
Add frame drop parameters for frame drop behavior on bitrate overflow.
Change-Id: Id90fbd0c63b1a0909e426a2c9f09c8b371bec0b7
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Enlarge max ltr_frames support from 3 to 16.
Change-Id: I2d87a956019cbb4ce807aedc7be2d0c4987fa4d2
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Add VPU_API_SET_PARSER_SPLIT_MODE control for MPP_DEC_SET_PARSER_SPLIT_MODE
Change-Id: I7d6c2738f8d39ac4b179ae5d0c8534b580de80b7
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
1. Add keep_cpb flag to keep the cpb status on refs cfg changed.
2. Add hdr_need_update check flag for resend header.
3. Add force flag implement in refs process.
4. Do not resend header on max_tid change only.
5. When gop is update the cpb should restart.
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I2eb3191ce6f45ccea081fa861e4927abae96ff2b
1. Add vpu_api_mlvec module.
2. Attach vpu_api_mlvec module to vpu_api_legacy.
3. Add static and dynamic configure process.
4. At VpuApiLegacy::init if the extra_data is NULL do not get sps/pps.
5. Add VPU_API_GET_EXTRA_INFO (0x200) control to provide sps/pps.
Change-Id: I4666148ba4c150eea81bfa8cd25b63264cd16a2b
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
1. Add force frame qp mode.
2. More mode is reserved for future extension.
Change-Id: Ic12000082c7674b294c0be506f74a7d6129be6b9
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
1. Remove slice mode/arg in H.264 codec cfg.
2. Add max long-term reference number / max temporal layer id / prefix
mode / base layer priority id.
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: If34166e4658edba65f4c6c095412a6fadd941320
1. Add KEY_ENC_MARK_LTR for marking current frame to be long-term
referece frame.
2. Add KEY_ENC_USE_LTR for assigning a long-term reference frame as
current frame's reference frame.
3. Add KEY_ENC_FRAME_QP for assigning a fix QP for current frame.
4. Add KEY_ENC_BASE_LAYER_PID for assining a priority id for base layer
in tsvc mode.
All these four features are defined in MLVEC test.
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: Ib041d9c2f203d7e582a3402bd61dd6a9eb18015a
Add MppEncRef/MppEncRefs module
MppEncRefs is for mpp encoder coded picture buffer (CPB) management.
MppEncRefs will gnerate reference buffer status EncCpbStatus for each
encoder to implement its own process.
Change-Id: I5f85a0f46dc6bc40954b0393ba52ad4008565643
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Add MppEncRefCfg for reference frame relationship configure.
MppEncRefCfg is for user to setup its own gop reference hierarchy.
Setup flow:
mpp_enc_ref_cfg_get_preset (can be ommitted, helper for setup lt/st cfg)
mpp_enc_ref_cfg_init
mpp_enc_ref_cfg_set_cfg_cnt
mpp_enc_ref_cfg_add_lt_cfg (can be omitted)
mpp_enc_ref_cfg_add_st_cfg
mpp_enc_ref_cfg_check (IMPORTANT: need to check before contol to mpp)
control to mpp
mpp_enc_ref_cfg_deinit
Change-Id: Ia0f5c4c713a4b11d8e4e5581609f8501f36549cc
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
New reference frame config interface will be added.
Change-Id: I5766cefde12237561bbc20c905e47ed2d3e90011
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
1. Change interface for adding color range to MppPrepCfg.
2. Add option in MppEncCfg.
3. Add H.264 / H.265 sps support on full / limit range.
IMPORTANT: the binary backward compatibility is broken since this commit.
Change-Id: Ib68f29bab5c6d364fe8b612bd4dff2ecd5bc59cd
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
When max_reenc_cnt is zero the reencode flow is disabled.
Change-Id: Iba600b37bb5ab6e4f720b652d59abfae36f9e52f
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
For better binary comaptibility users should use this method to
configure encoders.
NOTE: api only init once.
Change-Id: I5ced15b504e4933560895e6e11f62613ae89e350
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
We are going to use new configure method for all encoders.
Change-Id: Id478d2567714ee9c6ddee3d410a4a855825f1c42
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
New vepu541 encoder support relative qp delta config in ROI region.
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: Iac57469c30ea09ca03368cc3e02372a326c525ec
Attach MppFrame to EncRcTask as meta data channel between user and
internal RC strategy.
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I2787a69bec3911fe2e4f637153925c5ea88031ec
1. Update OSD palette config API. User must specify palette is default
or user defined.
2. OSD palette config will go through control and OSD data (region)
config will go through meta data in each frame.
3. Remove unused code.
4. Add mpi_enc_utils for mpi_enc_test cases
Change-Id: Ib4aeb60789a3e999446212841508e604533efb3c
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
1. Default output mode is output header only on config changed.
2. Add new mode to output header on each intra frame.
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: Iea8dd1e6bb377318b88300d6a013f2c736b15afc
1. Add offset set / get function to MppBuffer
2. Add U32 register address converstion function.
Change-Id: Id297b7a05e47d4e249f5e33c1924a0539729c808
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
1. Add mpp_rc_api and mpp_rc_defs for open rc module to external users.
2. Add RcImplApi registration and setup function.
3. Separate RC module from the encoder implement.
4. Use EncFrmStatus and EncRcTaskInfo to control work flow.
5. proc_rc and update_rc function in enc_impl are removed.
6. Use rc_frm_start and rc_hal_start to process rate control.
7. Add more RcCfg setup in mpp_enc_v2.cpp.
8. Use rc_task to replace all the frame status and rc config transmit.
EncFrmStatus is for encoder flow control.
EncRcTaskInfo is for communication between rc / hal / hardware
Change-Id: Ia72b0e0804bfca13963c2b2a5887983fd9b5bcbf
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
User can define its own rate control stategy function and can use them
in MPP encoder flow.
Change-Id: I9573ab8cb5a63c543e17faf07e89f64f5d7013ef
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Currently, this patch only works well on jpege.
Signed-off-by: Chen Jinsen <kevin.chen@rock-chips.com>
Change-Id: I77026c1975f4937b5bc042e490a2230708b3e715
Slice split has two modes: split by byte and split by CTU number.
Change-Id: Id5a07f8a8cae612b6b913e9cb747dacec5b8e5a2
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>