Commit Graph

273 Commits

Author SHA1 Message Date
Herman Chen
a75c5edcb7 [legacy]: Remove vpu dependence on mpp_service cmd
Change-Id: Ib447f1612f16cb9854fcee32c79eef5bcf26fe75
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-11-06 11:47:53 +08:00
Herman Chen
93bc0690d4 [mpp_enc_refs]: Add flag for recon frame writing
Change-Id: I8f68573a4156056b61a05c14d5eb7d2734958e0d
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-10-28 15:20:06 +08:00
Herman Chen
3c55b55e46 [mpp_dec]: Add query interface for debug
1. Add query interface.
2. Add query result in mpi_dec_test.

Change-Id: Ie0026f155331c0b0f8e1b5409aeb7d41b6a3ecc6
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-10-23 14:17:34 +08:00
yandong.lin
e54234a11b [vp8e]: Fix vp8e reencode and ivf problems
1. Not do reencode in vp8 enc
2. Add api to control whether need to add ivf header
   (default: have ivf header)

Signed-off-by: yandong.lin <yandong.lin@rock-chips.com>
Change-Id: I59a3a7193abead6c73e6e1eed593a115add77888
2020-10-23 10:07:10 +08:00
timkingh.huang
0f8aeda99d [comment]: add comments in the format of Doxygen
Change-Id: I1df49ed78b5b5cf88ff253c35c59cb0b061b4ea9
Signed-off-by: timkingh.huang <timkingh.huang@rock-chips.com>
2020-10-23 09:27:53 +08:00
Herman Chen
e509662728 [mpp_frame]: Make MppFrameFormat value visible
Change-Id: I1276af32ca4907bfabae2664ff6f0fe67eb8aa0d
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-10-09 08:54:59 +08:00
Herman Chen
51d01e0069 [utils]: Fix error on RGB color fill
Change-Id: I5b7768e410135910d5c20994c84629678cd37524
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-29 16:39:10 +08:00
sayon.chen
96aad17638 [rc_v2]: Used I frame tuning config set
Change-Id: Iaaa717268804e047fa51bb0cf05790e25df143ba
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-09-28 17:59:02 +08:00
Herman Chen
cd311d877f [rc]: Separate check reenc and rc_end function
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: Ib594afdd25a0e4283612fd5808a27b229d40f597
2020-09-24 11:54:22 +08:00
Herman Chen
85ada595ee [mpp_enc_cfg]: Add encoder I frame tuning config
Add max_i_prop, min_i_prop and init_ip_ration for I frame tuning config.

max_i_prop:
The max percentage of intra frame size in one gop.

min_i_prop:
The min percentage of intra frame size in one gop.

init_ip_ration:
Define the first I frame size is how many times of one P frame size.
Set to 16 mean I frame size is equal to P frame size.
Set to 160 mean I frame size is 10 times of P frame size.

These three parameters are for tuning Intra frame quality.

Change-Id: Iac1e700fe2a51fb3a6ad94753784cd54ee789176
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-23 10:28:43 +08:00
Herman Chen
e3278d7655 [vepu541]: Fix OSD AYUV bit order definition error
Change-Id: I89ddd7b626873ea1d4ba22569f79d8706b216b55
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-23 10:28:43 +08:00
Herman Chen
4b386eba08 [mpp_frame]: Fix using ffmpeg definition
Do NOT use ffmpeg define.

Change-Id: I018cbd56db12d708d5a9db20523d674248ba540f
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-17 15:52:09 +08:00
Herman Chen
95670aa475 [mpi]: Add rk_venc_rc.h
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>
2020-09-11 16:32:38 +08:00
sayon.chen
74cc83f69e [rc_v2]: Support avbr ratecontrol
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>
2020-09-11 11:15:55 +08:00
Herman Chen
e8a428ea04 [mpi]: Cleanup unused definition
Change-Id: Ib8490abf7241f432164f647165b1c67c618c1168
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-10 14:59:03 +08:00
yandong.lin
5ea05d986e [vp8e_v2] add vp8e v2 implement
1. add vp8e_api_v2 module
2. add hal_vp8e_vepu1_v2 and hal_vp8e_vepu2_v2 module
3. add default rc for vp8e

Signed-off-by: yandong.lin <yandong.lin@rock-chips.com>
Change-Id: I6c0e9b0a0a7654b92905ac50431ba3f4b023c2e2
2020-09-09 16:09:31 +08:00
Herman Chen
b56cfdb688 [mpp_enc_cfg]: Add frame drop paramters
Add frame drop parameters for frame drop behavior on bitrate overflow.

Change-Id: Id90fbd0c63b1a0909e426a2c9f09c8b371bec0b7
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-09 15:21:54 +08:00
Herman Chen
f1ebb21814 [mlvec]: Fix error when ltr_frames larger than 3
Enlarge max ltr_frames support from 3 to 16.

Change-Id: I2d87a956019cbb4ce807aedc7be2d0c4987fa4d2
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-09 08:57:41 +08:00
sayon.chen
74f2f76fd7 [mpp_enc]: Support vui colour_description set
Change-Id: If84d8b04ce6ea430ed38d39c339eb9da783c6510
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-08 14:32:45 +08:00
Ding Wei
ea095cc3ae [jpege]: add rc for jpege
usage:
    q_factor - init factor
    qf_max   - max q_factor
    qf_min   - min q_factor

Change-Id: Idea1dea50f1f9c5e7e9ae41e1da228d5fb1a806b
Signed-off-by: Ding Wei <leo.ding@rock-chips.com>
2020-09-08 09:05:59 +08:00
Herman Chen
ff9283dff7 [rk_venc_cmd]: Fix enum defintion error
Change-Id: I88426dc75362ef86c0a21109d295ce8bd983de4d
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-08-31 11:33:05 +08:00
Herman Chen
455e1ceb40 [legacy]: Add VPU_API_SET_PARSER_SPLIT_MODE ctrl
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>
2020-08-11 11:52:41 +08:00
Herman Chen
21c21209c8 [h264e]: Add qp_delta_ip
The qp_delta_ip for H.264 is 3.

Change-Id: I33c052489011e93e8b496a284a84db1450ef5981
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-08-05 18:13:59 +08:00
Johnson Ding
cba637c3f1 [jpege/h264e]: fix RGB encode config
Change-Id: Iec9d928ad6fb1a31cbf6f224b264ebb6797294a3
Signed-off-by: Johnson Ding <johnson.ding@rock-chips.com>
2020-08-05 10:52:05 +08:00
Herman Chen
e638362114 [mpp_enc]: Add max/min intra qp for H.264
NOTE: may change the behavior of get cfg

Change-Id: I1b3cd4cbbe7dc0f03e4cc38f1e831e429d4911c2
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-07-29 10:26:30 +08:00
Herman Chen
3f2a548916 [mpp_enc_refs]: Add refs configure force path
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
2020-07-29 08:33:39 +08:00
Herman Chen
df0a7f0203 [h264e]: Add poc type / poc_lsb / frm_num setup
1. Add poc type / poc_lsb / frm_num default device value.
2. Add force update path.
3. Sps will use codec cfg directly.

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I5f23b74f0453213c89c7238a36570484b91b48ce
2020-07-28 11:29:49 +08:00
yandong.lin
0f91ba604c [jpege:] Add q_factor and qtable
Add q_factor and qtalbe interface

Signed-off-by: yandong.lin <yandong.lin@rock-chips.com>
Change-Id: I6b59d0b2e740e4b2815e7c83ad9a3641fe700e2f
2020-07-27 17:37:38 +08:00
Herman Chen
6a64cde817 [mlvec]: Add MLVEC interface in vpu_api
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>
2020-07-24 16:18:31 +08:00
sayon.chen
c7bedd82e4 [rc_v2]: Support smart gop rate control
Change-Id: Ie8cb39304af2628f3bed2cd452f164df643300da
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-07-24 08:55:16 +08:00
Herman Chen
c71b5338c3 [mpp_rc_defs]: Add rc force parameter
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>
2020-07-22 11:07:36 +08:00
Herman Chen
81ec42ffb7 [mpp_packet]: Add metadata check function
Change-Id: I493d62c4aef6d93fdaebd503a7cc787d955b3541
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-07-22 11:07:36 +08:00
Herman Chen
31e911d44b [mpp_frame]: Add metadata check function
Change-Id: I95f722ae95b8db969c484b3157ddbe8c8f92a13f
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-07-22 11:07:36 +08:00
Herman Chen
f654f1a0ad [rk_venc_cmd]: Change h264 codec cfg
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
2020-07-08 16:32:33 +08:00
Herman Chen
7f4ebeec8e [meta]: Add more meta key for encoder
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
2020-07-08 15:41:23 +08:00
Herman Chen
33e7e4c52a [mpi]: Remove unused H.264 mpi cfg structure
Remove sei / ref cfg in MppEncH264Cfg.

Change-Id: Iaef6a8a845b691dc21d0a6a6eca62e27bc5cf5a4
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-06-10 17:37:49 +08:00
Herman Chen
550e2ee6b3 [mpi]: Remove unused encoder cfg cmd defines
Change-Id: I183fa54d9f074ab94f3bb71bb525ff88372a7724
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-06-10 11:47:16 +08:00
Herman Chen
c2069f3345 [mpp_enc_ref]: Add MppEncRef/MppEncRefs module
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>
2020-05-26 16:29:40 +08:00
Herman Chen
90a62f52a3 [rk_venc_ref]: Add new reference config interface
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>
2020-05-26 16:29:40 +08:00
Herman Chen
6a6521ed13 [gop_ref]: Remove gop_ref
New reference frame config interface will be added.

Change-Id: I5766cefde12237561bbc20c905e47ed2d3e90011
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-26 16:29:40 +08:00
Herman Chen
d638ef1bb7 [rk_venc_cmd]: Restore skip_cnt for compatibility
Change-Id: Ib542ace59e199752d6316c422ae11b4e57a0990b
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-20 18:12:24 +08:00
Herman Chen
d95306a63b [mpp_enc]: Add color range support
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>
2020-05-15 15:48:06 +08:00
Herman Chen
0b4532c6d5 [rk_mpi_cmd]: Add max_reenc_cnt for reencode flow
When max_reenc_cnt is zero the reencode flow is disabled.

Change-Id: Iba600b37bb5ab6e4f720b652d59abfae36f9e52f
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-15 15:48:06 +08:00
Herman Chen
85f9662150 [mpi_enc_test]: Use MppEncCfg to setup encoder
Change-Id: Ie3506a3555751344f54264d85804ee509a976659
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-15 15:48:06 +08:00
Herman Chen
83e2724158 [mpp_enc_cfg]: Add MppEncCfg control
1. Add h264e process function.
1. Add h265e process function.
2. Add jpege process function.
2. Add vpu_api_legacy support.
3. Clear input MppEncCfgSet when MPP_ENC_SET_CFG is finished.

Change-Id: Ida1234c351483bd9f96a75bc77e90ca2d75ec38b
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-15 15:48:06 +08:00
sayon.chen
8e00c203d7 [mpp_enc_cfg]: Add h265e default cfg
Change-Id: I7f4b05be7bcfdbb93cf3b40f74941e14190ce3b4
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-05-15 15:48:06 +08:00
sayon.chen
49f610442a [h265e_ps]: Support vui set
Change-Id: I5fa20430eb3cd8dd5f66d367db19463b0973e0df
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-05-13 15:33:29 +08:00
Herman Chen
d40aea09bc [rk_venc_cfg]: Add new encoder cfg method
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>
2020-05-13 14:10:34 +08:00
Herman Chen
4b8a5f557a [rk_mpi_cmd]: Rename MPP_ENC_SET/GET_ALL_CFG
We are going to use new configure method for all encoders.

Change-Id: Id478d2567714ee9c6ddee3d410a4a855825f1c42
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-13 09:42:20 +08:00
Herman Chen
d42f4ed028 [mpi]: Support relative qp in ROI region
New vepu541 encoder support relative qp delta config in ROI region.

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: Iac57469c30ea09ca03368cc3e02372a326c525ec
2020-04-20 10:34:42 +08:00