Commit Graph

85 Commits

Author SHA1 Message Date
Johnson Ding
a9cb2cff35 [enc]: fix IDR not encoded problem
When GOP is set to 60 that is the same as the default GOP by
application, igop at reference module isn't set as expected, that leads
to CPB not be cleaned correctly and IDR frame won't be encoded.

see [issue](https://redmine.rock-chips.com/issues/374780)

Change-Id: I2f1030cab700aa560dea07284b820a73c637631e
Signed-off-by: Johnson Ding <johnson.ding@rock-chips.com>
2022-10-11 14:50:08 +08:00
Herman Chen
326dd264b8 [mpp_enc]: Prepareation for slice output mode
1. Add mpp_enc_callback for hal module.
2. Add low delay output check.

Change-Id: Ibda81043e3760defc0c2fd41166197a57abbbbe3
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2022-06-14 08:58:21 +08:00
Herman Chen
81bbf310e6 Fix extra IDR frame on setup same cfg
Change-Id: I40b54e2e4dfa2ed1ba59e25428b08bf98f416263
Signed-off-by: Xinhuang Li <buluess.li@rock-chips.com>
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2022-05-17 09:58:35 +08:00
Herman Chen
f50df9b272 [mpp_enc]: Optimize encoder flow
1. Create hal_task_group in mpp_enc_hal.
2. Reduce EncAsyncTaskInfo copy in async flow.

Change-Id: If81ffc72122f87eb6d2f83bb5ecd7de5400bc140
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2022-04-21 09:37:52 +08:00
Herman Chen
2e25db1a7d [mpp/mpp_enc]: Add async encoder flow
Change-Id: I0e040b8e9b1cdb40be996afc818a7ffb16802d09
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2022-03-02 15:20:57 +08:00
Herman Chen
fb73f3e32d [mpp_enc]: Add task count to encoder init flow
Change-Id: I0bc871ec80cee70bfa83fdcfdbea42e6019089af
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2022-03-01 15:14:48 +08:00
sayon.chen
783abcfc7a [vepu580]: Support intra frame twopass deflicker
NOTE: Only vepu580 support this feature.

Change-Id: I05768a5ca5f6d32eab3d0d9eccab0c471882cd0e
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2022-02-17 15:26:17 +08:00
Herman Chen
d097c445c7 [mpp_enc]: Fix rotation case GET_CFG mismatch
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: Ie4ba9fed993495b8deddab9740531cf15337a872
2021-11-10 09:29:39 +08:00
Herman Chen
9ba242bb9c [mpp_enc]: Change thread name rule
Change-Id: Iddaa528e83828057de428e0076c253a0c7efae97
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2021-05-22 16:17:04 +08:00
sayon.chen
3f5b640345 [mpp_enc_v2]: Modify idr set flow
Move idr request to mpp_enc_proc_cfg

Change-Id: Ic93af13297971b9fd2766bc18b7c6fd71ce18d09
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2021-01-19 08:35:23 +08:00
Herman Chen
c2466a97b5 [mpp_enc]: Add low delay encoding path
NOTE: low delay path should be used with slice encoding.

Change-Id: I75b774fc5dbbc910d5aa722c4eeffe255415efbb
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-12-12 15:05:48 +08:00
Herman Chen
d4dffbdf92 [mpp_enc]: Move mpp_enc_thread to new file
Change-Id: Iaf6ce415662b1bfc0c9a1dd3e51a3ca70ee50086
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-12-12 15:04:25 +08:00
Herman Chen
cb4539fdc3 [enc_impl]: Rename mpp_enc_impl to enc_impl
Change-Id: I751ae2fd21069bb933bf861e2b327c1e7c6b4d44
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-12-12 10:11:12 +08:00
Herman Chen
96a7affc2b [mpp_enc_cfg]: Add low delay to MppEncCfgSet
Change-Id: I5f9e595b44cc39cc255c69a875618ea36de5e878
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-12-12 09:47:09 +08:00
sayon.chen
dfe9428017 [rc_v2]: Support super frame cfg process
Change-Id: I4de4d3e27925d81f26ed5819e07d3e45ed42061e
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-11-30 09:46:27 +08:00
sayon.chen
5012336bc2 [enc_v2]: Suppport user data set
User data set is for multiple user data with uuid.

Change-Id: Iad952961ab6242ff3a14f554410144bebd3801ba
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-11-16 09:46:53 +08:00
Herman Chen
6013568d64 [mpp_enc]: Add fps calculation
Change-Id: I4a56a6560dcef1a373f27a22ae47762933f69b67
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-11-09 10:28:12 +08:00
Herman Chen
b0c1f86b32 [mpp_enc]: Add MppDev and HalInfo to mpp_enc
1. Add MppDev output for all encoder.
2. Update HalInfo to MppDev on each header update.

Change-Id: I8fce811dda7232740042917c9738bc11253ee672
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Signed-off-by: Ding Wei <leo.ding@rock-chips.com>
2020-11-09 10:28:12 +08:00
Herman Chen
3be4151964 [mpp_enc_v2]: Avoid control async error
1. In some case cmd_send is increased but param is not write to memory
then the mpp_enc_proc_cfg function may read zero param.

Add extra sem_t to sync cmd / param value.

2. Move MppEncCfgSet to the bottom of encoder.

3. Add control return value path.

Change-Id: Iddc4e690d8e0e45d2922c6666dc5fd9c4d57fef2
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-10-28 15:20:06 +08:00
Herman Chen
d29cb91c22 [mpp_hal]: Remove hal header dependency
1. Remove dependency between mpp_hal.h and mpp_enc_hal.h.
2. Remove unused work_mode.

Change-Id: I1d8e8163e3c2de00636665d7aff38652309820ba
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-10-22 09:27:41 +08:00
Herman Chen
a79544d7cf [mpp_enc]: Remove MppEncCfgSet set from cfg
Encoder will use only one MppEncCfgSet.

Change-Id: Iaf418fc8e04616618e8d7868fab56d31085ec9b7
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-10-22 08:46:04 +08:00
Ding Wei
fa3478c309 [mpp_enc_v2]: set init_quality equal q_fator instead of quant
Signed-off-by: Ding Wei <leo.ding@rock-chips.com>
Change-Id: Ib96a1667a007060df180b800a6f01aca1b64a9e8
2020-10-19 17:44:23 +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
dbd5ae4099 [mpp_enc_v2]: Fix header not send on frame drop
When the frame is not encoded do not set ready flag in header status.

Change-Id: I21980d48a5abedc562de9875e24466fea5315121
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-25 11:52:00 +08:00
Herman Chen
5859a7c50d [mpp_enc_v2]: Add error process flow
Change-Id: Ibcf967d91f533eeaa9a5c5f4b0337f5d3e3bf4b6
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-24 11:54:22 +08:00
Herman Chen
304df8fbf4 [mpp_enc_v2]: Add drop and pskip flow
1. Separate rc_frm_end to rc_frm_check_reenc and rc_frm_end.
2. Add drop mode parameter copy in H.264/H.265 encoder.
3. Separate normal encoding process and reenc/drop flow.

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: Ica29eb6d5e700fb51c4019e39c42f4918857ac71
2020-09-24 11:54:22 +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
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
6c34abfd8c [mpp_enc_v2]: Add more log for pts debug
Change-Id: Idcb3b29373b6290c7c2e7405b5169235e6240ceb
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-08 09:05:59 +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
1edcff8a6b [mpp_enc]: Add debug sei flag
MPP_ENC_SEI_MODE_DISABLE   : no debug sei at all.
MPP_ENC_SEI_MODE_ONE_SEQ   : Add debug sei on each IDR frame.
MPP_ENC_SEI_MODE_ONE_FRAME : Add debug sei on each frame.

Change-Id: I6c40e447de7f97ce1e433c3ac5adbf2c6be3de40
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-08-20 16:50:49 +08:00
Herman Chen
14e44247d8 [mpp_enc_v2]: Fix roi/osd error on reencode
The reencode flow should be clean before rc_end.

Change-Id: I9567f1533979ef4f1e3feb61f7a530166daf30d0
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-08-20 16:16:33 +08:00
Herman Chen
9e771d441a [jpege]: Disable some log for jpeg encoder
Change-Id: I3f062b68231f43dc6820d34fd6b01796af0c15eb
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-08-20 08:59:47 +08:00
sayon.chen
d5f8e9a441 [mpp_enc_v2]: Fix reencoder flow issue
Change-Id: If8543d4501c726fe504d04eaeb7103fd1583cda4
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-08-13 15:03:09 +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
sayon.chen
4a61fda3cb [vepu_api_v2]: Fix rotation issue
1.when input set rotation 0->90->180, due to 0->90 w&h will sawp
if only set 90->180 w&h no change will cause error,so when
rotatio must recheck w&h
2.when input is fbc no support rotation and mirror

Change-Id: I4e77b10e25fd66caccaa131be8a9063570f1e3df
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-07-31 16:15:45 +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
f7e400f8b7 [mpp_enc_v2]: Check meta before getting user data
Use has_meta to check input frame has meta data or not. Otherwise each
frame will have a metadata.

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I166346b668fe5ec46032d5c27a7a368fe2fea3b1
2020-07-27 18:07:01 +08:00
Herman Chen
576650aa05 [misc]: Remove some encoder runtime print
1. Remove rc api impl print.
2. Remove mpp_enc_cfg create print.
3. Change mpp_enc_cfg init and show log on node count.
3. Add header resend log.

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I273db39b844d8c3fcd6a0ac9763a4df9b65b56d0
2020-07-27 16:37:31 +08:00
Herman Chen
37ba4229ad [hal_enc_task]: Add MppEncRefFrmUsrCfg
There force reference frame user configure is added to encoder task.

Change-Id: I4482a831f988f47913c6e1d0385ccbdd0cd46031
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
yandong.lin
e9721ad516 [mpp_enc_v2:] Clear header packet length on init
Set 0 length when init hdr_pkt

Signed-off-by: yandong.lin <yandong.lin@rock-chips.com>
Change-Id: Iaee6f64beb205d4a60c98681896828f156b4fb0f
2020-07-22 11:03:37 +08:00
Herman Chen
f1643a579e [mpp_enc_v2]: Fix function print macro error
Change-Id: Idbd832c2cb57bab845f1f6e44615d2cbbb08384f
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-06-29 11:06:49 +08:00
Herman Chen
46bfafa614 [mpp_enc_v2]: Fix memory leak of header buffer
Change-Id: If4ef68a09b8e14b127105e41b7e4d17b3e58a5ac
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-06-11 16:15:36 +08:00
Herman Chen
c7274a6192 [mpp_enc_v2]: Fix memory leak of rc_ctx
Change-Id: Ifbce970cf10797edc04afa0910d422bc5b1d216d
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-06-11 15:55:04 +08:00
Herman Chen
bb32442d5e [mpp_enc_v2]: Fix missing rc update on qp changed
When qp limit in codec_cfg is changed the rc_cfg should be also updated.

Change-Id: Ia5da305c015e6bc11836b6c358ddee6be51e819a
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-06-08 15:14:31 +08:00
sayon.chen
15e569a552 [mpp_enc_v2]: Fix missing resend_hdr on codec changed
Change-Id: I5ea13f3e5a285a02903c4b65b2854169c0b3753c
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-06-08 15:13:49 +08:00
sayon.chen
c468393e8e [mpp_enc_v2]: Check resend_hdr must request IDR
Change-Id: Ibaaa408eae165ba99c0a4b61a1f207e393c7f645
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-06-08 08:57:57 +08:00