Commit Graph

2434 Commits

Author SHA1 Message Date
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
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
a2cc66bc7a [vepu541_h264e]: Video quality fine tuning
1. Increase Intra frame quality.
2. Disable some options.
3. Change default parameter table.

Change-Id: Iee2494eb92217c33313a117969b1e080a8630468
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-24 11:54:22 +08:00
Herman Chen
693facdf9e [hal_jpege]: Fix error of jpege reenc
1. Update header length before hardware encoding.
2. Update hw_length after hardware encoding.

Change-Id: I89ef0503c029f8b7e702c2c3437324cc1808eab9
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-24 11:54:00 +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
sayon.chen
13bf4e3f41 [h265e_v2]: Add temporal_id set
Change-Id: I3eb631c92ea3bc4c9332d7fbb8597849afdb13af
Signed-off-by: sayon.chen <sayon.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
sayon.chen
8653a80c36 [mpi_enc_test]: Support camera capture encoder
if input file name is start with "/dev/video",  default  open camera
device as input.

Change-Id: I85d639ddb6fa5d99413ea75a0b088c79798dd6c8
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-09-23 10:28:43 +08:00
sayon.chen
12431e34d6 [utils]: Support camera as input source
Change-Id: If2a91a7436e05be4705425db40b0b1d41347f4c8
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-09-23 10:28:43 +08:00
Johnson Ding
45228ab7ff [jpegd]: fix stream copy not working problem
Stream modified and assigned to MppPacket won't be retrieve by hardware,
since hardware get stream by fd and this operation doesn't overwrite it.
Another way to slove this problem is doing memcpy at mpp_dec right after
calling mpp_parser_prepare, just like the 6th step at try_proc_dec_task.

Change-Id: Icea9516ab1ea92239613f7daa001018e581a8a2c
Signed-off-by: Johnson Ding <johnson.ding@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
77a795a7fc [rc]: Fix bitrate error on low fps out case
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: Idd74ae718d3a597c95ba541b9ae5a9fabfa4c871
2020-09-17 15:52:09 +08:00
Xinhuang Li
879c161b9b [jpege]: change the upper limit of bps setting to 500Mbps
Signed-off-by: Xinhuang Li <buluess.li@rock-chips.com>
Change-Id: I13f8861a60f45def091fc7442ca7096d9833f560
2020-09-15 09:04:15 +08:00
Herman Chen
6871f65035 [mpp_enc_impl: Add software encode path
1. Remove encoder reset / flush / callback function.
2. Add sw_enc for software encode path.

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I0c62bdc1ae28272dc30922781be8188ed49f9e9f
2020-09-12 11:12:46 +08:00
Herman Chen
d733a62fba [cmake]: Improve version history record
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I86cc8e9b4788e2d0a3f296f127e7e938c0b0cde4
2020-09-12 11:12:46 +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
Herman Chen
a620c88e80 [h264e_dpb]: Fix on_used not set on cpb rollback
Change-Id: If03df1e69a11ba4550956e34d97687c8bd3da6d6
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-11 16:32:11 +08:00
Herman Chen
a2c289bbce [mpp_enc_ref]: Add st_cfg repeat value check
1. When repeat in st_cfg is negative set it to zero.
2. Do not insert non-reference frame when smart oop vi_len less than 2.

Change-Id: Icdf2be21fbbe0a919f7c3006d9c1dde5dfc5ffcb
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-11 15:29:39 +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
fc6d13f5d3 [vepu541]: check max buffer count on hal_buf_setup
When creating hal buffer for vepu541 check both buffer size and buffer
count.

Change-Id: Ice1afa70f5458b74d1d2f98fc772c6e0a3e4cbf7
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-11 10:59:21 +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
Herman Chen
ccf97315fe [mpp]: Remove obsolete mpp_enc path
All encoders will use mpp_enc_v2 path.

Change-Id: I7ab66e70760a4685086f73735fb11386039d639e
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-10 10:22:46 +08:00
yandong.lin
46a33b2459 [mpi_enc_test]: add vp8e rc test demo
Signed-off-by: yandong.lin <yandong.lin@rock-chips.com>
Change-Id: I56b97b8df9e137f4005c3731c87d63539308b1c6
2020-09-09 16:34:01 +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
b2aa5b404b [rc]: Do not reenc when quality max reached
Change-Id: I3cce5d8124d9c40d37ca8cf0978580a3aeb80efb
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-09 14:44:18 +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
yandong.lin
8f953b3106 [h265d] fix cut extension data fault in case of multi slice
when stream has multi slice, it will occur error to
cut the slice header externsion data in slice header segment.

Signed-off-by: yandong.lin <yandong.lin@rock-chips.com>
Change-Id: Iaab8a9ea145aa7539d7401be22493619ce98df95
2020-09-08 09:05:59 +08:00
Herman Chen
e83f07e4e5 [mpp]: Obsolete MPP_ENC_GET_EXTRA_INFO
Obsolete MPP_ENC_GET_EXTRA_INFO in vpu_api_legacy and mpi_enc_test.

Change-Id: I3209a1af112ca073e3f61bbff60d8c2844c00ed1
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-08 09:05:59 +08:00
Herman Chen
c6e4473b99 [legacy]: Fix ver_stride alignment on copy path
Change-Id: Ic1d0d6c5c1f20ea915750aae3f3ee88cb740bd7e
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-08 09:05:59 +08:00
Herman Chen
96e86a6f19 [mpp_time]: Add stopwatch for object timing trace
Work flow and usage:
1. mpp_stopwatch_get
2. mpp_stopwatch_set_show_on_exit
3. mpp_stopwatch_record
   ...
   mpp_stopwatch_record
4. mpp_stopwatch_put    - (show timing here)

Change-Id: Ib07c925e6c27b94842507dba71992725b3ff5db8
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-08 09:05:59 +08:00
Herman Chen
fecdc20b7a [mpi_enc_test]: Change encoder demo to zero-copy
NOTE: It is important to clear output packet length to zero.
Or set packet pos and length to required valid value.

Change-Id: I8ddea1ee3c198bbd17381618b82ec5efab1d366e
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-08 09:05:59 +08:00
Herman Chen
7530a91324 [mpp]: Add output packet support on put_frame
Usage: use MppMeta in MppFrame to carry KEY_OUTPUT_PACKET packet.

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I82f63dc3e7acd0fa47c54062966fbd52156d49c4
2020-09-08 09:05:59 +08:00
Herman Chen
2999c1df55 [hal_vepu541]: Enable watchdog timeout cfg
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I94115078ed0f4ff0433318ecc07bd3db9c769cd1
2020-09-08 09:05:59 +08:00
sayon.chen
4688051665 [rc_v2]:Fix vbr ratecontrol invalid
1. clr api set rc_mode as cbr,default is vbr,
2. fix vbr case target_bps as change_bps

Change-Id: I7b4ba62cf5201da5674b597098ba301bba41be4b
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-09-08 09:05:59 +08:00
Herman Chen
07495c4ae3 [legacy]: Disable sei in vpu_api path by default
Change-Id: I123866ced3b89069f576875719f0e7669fdf94e0
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-08 09:05:59 +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
Herman Chen
154fb82445 [osal/test]: Add more test for eventfd
1. Test block mode
2. Test non-block mode
3. Test timeout mode with not timeout write
4. Test timeout mode with timeout write

Change-Id: Ibf8253f0f43be1aba1a81a2e527198b6a08eab83
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-08 09:05:59 +08:00
sayon.chen
8535d36582 [rc_v2]: Fix super large gop cause bitalloc div 0
Change-Id: Ie6ac7c4a0e4e6b2c268430fe15d89070fa9a4d02
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-09-08 09:05:59 +08:00
Jeffy Chen
2de0509cbb [test]: Fix stringop-truncation warnings
Fix this warning when building with newer GCC:
warning: '__builtin_strncpy' specified bound 256 equals destination size [-Wstringop-truncation]
|   106 |   return __builtin___strncpy_chk (__dest, __src, __len, __bos (__dest));
|       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| In function 'strncpy',

Change-Id: I6341fa4e507f644b143a8e266f3df267fbd9c566
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
2020-09-08 09:05:59 +08:00
Jeffy Chen
f5e2c2dd37 [vp8e] Fix multiple definition warning
Fix this warning when building with newer GCC:
multiple definition of `inter_level_tbl'

Change-Id: Ic2c8564976665a9d42dcafeced9d9c2d47b0193c
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
2020-09-08 09:05:59 +08:00
Herman Chen
a2c67e20a8 [legacy]: Do not return extra info on mlvec case
When in mlvec mode the encoder should not return sps/pps on init stage.

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I9f85bae563be97f4bfe4a74e48ebda0f768a29e0
2020-09-08 09:05:59 +08:00
Ding Wei
47ac602642 [mpi_enc_test]: add jpeg rc test demo
Change-Id: Id422d00f2b79cbf1ccbe56daaf1eb5073733b438
Signed-off-by: Ding Wei <leo.ding@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
69eeef092a [h264e]: Fix sps error on super large gop
Change-Id: I048e454ea2f8ce2a0af251217b3300cd389d3aac
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-08 09:05:59 +08:00
Ding Wei
0477addd3b [rc_model_v2]: fix issue for caculate overflow
Signed-off-by: Ding Wei <leo.ding@rock-chips.com>
Change-Id: I36252dd7d75f26d590715dbf4191179964c0578f
2020-09-08 09:05:59 +08:00
Herman Chen
9e77264edc [oasl]: Add eventfd support
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I46614e90abb132111105720f1cc7d4e2ec71e8c3
2020-09-08 09:05:59 +08:00
sayon.chen
c0fef41211 [hal_vepu_v2]: Fix vepu hor_stride setup
vepu h264 input stride must be aligned to 8 for vepu limitation.
If it is not 8 aligned some buffer conversion preprocess should be done
before the buffer is sent encoder.

1. The hor_stride in vepu hardware is in pixel unit not byte unit.
2. The hor_stride in vepu must be 8 pixels aligned.
3. The YUV420P should be 16 pixels aligned for chroma.
4. Fix log print when hor_stride != width 8align

Change-Id: If30136a4673399c3be40a41a055e832db4c321d5
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-09-08 09:04:55 +08:00
Herman Chen
a4cbfd54fa [test]: Fix rc_mode error in mpi_enc_test
Config process should not use fixed local rc_mode value to setup.

Change-Id: I8cdfb049e676d34e50a0f11fd174d4eba5bfc24b
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-08-31 11:33:05 +08:00