Commit Graph

3026 Commits

Author SHA1 Message Date
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
Johnson Ding
97309fde99 [h265d]: fix parser error when temporalId is minus
See issue: https://redmine.rock-chips.com/issues/270472

Change-Id: I4f2a62882d400680865118e9d8d642c372f3c339
Signed-off-by: Johnson Ding <johnson.ding@rock-chips.com>
2020-10-22 10:45:26 +08:00
yandong.lin
0da0f2ead8 [mpp_impl]: Fix the problem of dump input frame not work
Signed-off-by: yandong.lin <yandong.lin@rock-chips.com>
Change-Id: I85a0684839877300827359754ee6818f175ae1be
2020-10-22 10:39:57 +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
Herman Chen
72d8fde218 [enc_impl]: Add cfg record on init
Change-Id: I32ac6a0611a911f19f2183b8738606881fdb1cf8
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-10-22 08:45:21 +08:00
Herman Chen
09537e1cef [h264d]: Support decode non-empty packet with eos
Change-Id: If31f113633a0c2165f756fb59b3ddca1d595b491
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-10-21 17:59:21 +08:00
Ding Wei
80bce866cc [mpp_device]: check ioctl cmd whether valid
Signed-off-by: Ding Wei <leo.ding@rock-chips.com>
Change-Id: Id1d9c80143ee118d397b5e5486a431490a371519
2020-10-21 11:36:05 +08:00
Herman Chen
0520b7d35d [meta/buffer]: Fix usage after service is destoyed
When C++ global destructor is called MppBufferService and MppMetaService
maybe be called before other destructors which may call mpp_buffer_put
and mpp_meta_put. So we mark finished flag after ~MppBufferService and
~MppMetaService is call and so not free corresponding data again.

This case usually happens when user call exit() directly.

Change-Id: I997c49b095e443b061fca230587b6216f710d31c
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-10-20 09:08:59 +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
Herman Chen
5f7e6cc23f [rc_base]: Fix reset operation
Change-Id: I64fe4d1333adee9f6405bde9b6f10fe2ca7d6257
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-10-16 11:50:02 +08:00
Herman Chen
3091f6acf8 [meta]: Change assert to log on cleaning leak meta
Change-Id: I61b727efba6152b9556d663c34eac8d372203d5f
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-10-15 09:09:11 +08:00
yandong.lin
38d5d62c33 [h265d_syntax]: Fix hw rps err
Signed-off-by: yandong.lin <yandong.lin@rock-chips.com>
Change-Id: I3ae9d743c91c892aecb2e5243d0d2305e15091d8
2020-10-14 16:02:10 +08:00
sayon.chen
1603bb3f16 [h265e_541]: Fix scaling_list enable flag issue
Change-Id: I187c0ce156dc9263680d057a8b0ec49c8eac4cab
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-10-14 15:15:48 +08:00
Herman Chen
db750eff51 [mpi_enc_test]: Add encoder frame skip config
When the bitrate overflow the encoder can drop or encode skip frame.

drop_mode:

MPP_ENC_RC_DROP_FRM_DISABLED
    - Do not drop frame when bitrate is too large.
MPP_ENC_RC_DROP_FRM_NORMAL
    - Drop frame when bitrate is too large.
MPP_ENC_RC_DROP_FRM_PSKIP
    - Encode force pskip frame to keep frame rate when bitrate overflow.

drop_thd:
The instantaneous bitrate overflow threshold to trigger drop frame.

drop_gap:
The minimum gap between two continuous drop frames.
0 - enable continnous drop frame.

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: If17ee5f46ee03ae4ad958c8fad30a4a82f422118
2020-10-12 10:57:43 +08:00
sayon.chen
4db63464e8 [h265e_v2]: Support sw encoder skip frame
Change-Id: Icc9735087028fad2ca28070de8fe829e795ccadb
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-10-12 10:47:20 +08:00
Herman Chen
4c625f0e3c [h264e]: Add H.264 sw_reenc pskip path
1. Add pps on slice update for pic_init_qp.
2. Add cabac and cavlc pskip sw encode path.
3. Add dpb rollback for reenc path.

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I8d39cfeabcf669f66cd4e4d5ea5e08e4217d3a0e
2020-10-12 10:47:20 +08:00
toby.zhang
c182090ddd [h264e_vepu541]: Update fine tuning parameters
1, Fix error of cime search range configuration;
2, Select best performance between tailing error and noise dancing.

Change-Id: I1e9306abbfe57dc76d0bcb095895ac0ed129d524
Signed-off-by: toby.zhang <toby.zhang@rock-chips.com>
2020-10-10 18:10:30 +08:00
Ding Wei
2417a2db7f [rkenc]: rkvenc 264 and 265 disable watch dog
Change-Id: I9876d212cd7bf9136c26f408da50209283b641c2
Signed-off-by: Ding Wei <leo.ding@rock-chips.com>
2020-10-09 18:07:43 +08:00
Herman Chen
f055b13bb5 [mpp_enc_v2]: Fix smart reenc path
Change-Id: I6c8245ccff1627d3c6cf30133d95180da8c42e25
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-10-09 10:18:02 +08:00
Herman Chen
2b808aed26 [vepu541]: Fix color encoding error
1. Fix stride error on vepu541.
2. Fix YUV color format definition on vepu541.

Change-Id: I785358166f3fd25808debac40d89e28c867bf119
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-10-09 09:12:44 +08:00
sayon.chen
0b0d0db215 [rc_base]: Rewrite rc_base code
1.use cycle buf update statistics param
2.remove unused function

Change-Id: Iaeae290a30482b55842373f443863cf167b9ea71
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-10-09 09:05:26 +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
sayon.chen
d8a5fb18b7 [rc_v2]: Reorganize rc_mode_v2 code
ratio_calc used Register function in mode init according rc_mode

Change-Id: I0317ecc004a2c882e005cf791207c6a5a7e50598
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-09-28 17:59:02 +08:00
Herman Chen
f8b77d6aa2 [h264e_syntax]: Simplify h264e_syntax
1. Move sps / pps / slice / dpb definition to there own header.
2. Prepare to add new h264e syntax struct for hal.

Change-Id: I95e884afcf08fa51bdeb6f1e6571c264d9a609ec
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-28 09:53:49 +08:00
Herman Chen
04137732ac [h264e_syntax]: Rename syntax for h264 encoder
Change-Id: I742d251905f083d5636c61b98d9125421b90f3de
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-28 09:33:48 +08:00
Herman Chen
16ba8b5820 [hal_h264e_vepu]: Fix stride parameter compatible
Fix stride definition to compatible to both pixel stride and byte
stride.

In MPI the stride is defined to byte stride. But vepu requires 8 pixel
aligned pixel stride.

So we add more code to adapt to both case and check 8 pixel alignment.

From opengles definition:

Stride means bytes in a row of pixels including padding. So an image
could be 510 pixels in width and rounded up to 512 pixels. The stride
would be 512 * bit depth of the image's format. You could also have
stride in pixels in which case the stride would be 512 pixels

Pitch is a little more vague, but typically could be interchangeable
with stride. Considering your reference is specifying in bytes, it's
likely safe to assume they're not measuring in pixels. So the reference
likely means the number of bytes in a row + padding, the only
alternative would be number of bytes without padding e.g. image width *
bit depth.

Change-Id: I20acf71e2a6bea2eb08b41fe7df531154ebef897
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-28 09:25:06 +08:00
Herman Chen
7987b57bd1 [hal_vp8d_vdpu1]: Fix vp8 decode error on vdpu1
Change-Id: I629e90ab0582d9d7c144646c266e51d64396b20a
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-25 16:38:53 +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
toby.zhang
bf48567dcf [vepu541_h264e]: Reduce video trailing error
Signed-off-by: toby.zhang <toby.zhang@rock-chips.com>
Change-Id: I09e7e6c9bdc29c48638f4f00b154140ae897b681
2020-09-25 10:53:55 +08:00
oirmario
4f10068859 fix in mpp.pc vpu.pc for crosscompile.
Change-Id: I4caee98b741cb613547daa8f58018fd90d3d0f39
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-24 14:27:04 +08:00
Herman Chen
094af953b3 [rc]: Improve coding style
Change-Id: I697737a96907cc15c188665621c669e2ef5a466b
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-24 11:54:22 +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
da1a54f86b [vepu541]: Fix roi buffer access iommu fault
Enlarge roi buffer size for 32 bytes to avoid hardware iommu page fault.

Change-Id: Ibdf6bcda2b0b6ea6e1cb2aef54dda8516b2dfb72
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-24 11:54:22 +08:00
Herman Chen
dc17320a94 [vepu_h264e]: Do not run mb_rc on I frame
Change-Id: Ibf96b993b6bbc33836cea34900589c263306546c
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-24 11:54:22 +08:00
sayon.chen
31b43445f8 [mpp_enc_ref]: Fix header not update issue
When encoder reference config is changed the stream header should be
updated while keep_cpb is not set.

Change-Id: I20432b80fbcd702b5f04391f8c9ff18627d72f53
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-09-24 11:54:22 +08:00
Herman Chen
5c199eb5b5 [vepu541_h265e]: Update H.265 fine tuning config
Change-Id: Ia8804a23ac43ebc0586137068dda99824866d5ca
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-09-24 11:54:22 +08:00
sayon.chen
901e511c3c [vepu_541]: Return error when send_request fail
Change-Id: I06271e6e51ab023f935ba5c5136d4b96cb7936f0
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-09-24 11:54:22 +08:00
Herman Chen
3f9eb1c4ff [rc]: Separate different video coding rate control
1. Use rc_model_v2 as a common rate control method.
2. Separate rate control algorithm on different video coding.

Change-Id: Iebb9ba8db14cd19ca8a4e091a6c879e29ec5693e
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
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