Commit Graph

2051 Commits

Author SHA1 Message Date
Herman Chen
ae590b7190 [mpp_enc_ref]: Add vepu541 H.264 reference process
Add vepu541 H.264 reorder / mmco process.

Change-Id: I434a539a111ec749f89d1485d6cab7b4106d4d89
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-26 16:29:40 +08:00
Herman Chen
2ec67e6d3c [mpp_enc_v2]: Add MppEncRefs to encoder flow
Add MppEncRefs cpb info to H.264 encoder flow

Change-Id: I7ba26a7c7a2f0e860438af38283ec429128c7351
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-26 16:29:40 +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
Daniel Bermond
1b345c8cda Fix build with gcc 10
gcc 10 uses '-fno-common' by default[1]. It means that global
variables must be declared with the 'extern' keyword, otherwise
a link error will occur.

References
----------
[1] https://gcc.gnu.org/gcc-10/porting_to.html#common

Author: Daniel Bermond <danielbermond@gmail.com>
Date: Mon May 25 16:04:32 2020 +0000
Change-Id: I9a326388588679722a33d62986ba2ff056524d7c
Signed-off-by: Ding Wei <leo.ding@rock-chips.com>
2020-05-26 09:10:34 +08:00
Herman Chen
e84134a5f4 [legacy]: Clear packet length after init
When MppPacket is inited from MppBuffer the length should be clear to
zero.

Change-Id: I7b588fe426dba0e29ec683f057231569866986a6
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-25 15:02:17 +08:00
Herman Chen
463ae89b6e [mpp_enc_v2]: Fix hw_length update error
1. hw_length should be only updated by hardware real stream length.
2. hw_length can be updated multi-times by slice encoding.
3. When reenc found the hw_length should be subtracted from total task
stream length.

Change-Id: I1c3f6affcc5dc90ad548a42efed0237c60b98f08
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-25 09:48:01 +08:00
Herman Chen
0c5dc02ebd [hal_h264e_vepu]: Fix hardware stream length error
Hardware output stream length includes the 64-bit header aligned length.
So we need to subtract aligned length to get the real hardware length.

Change-Id: I78f16afa02bc4428613cafcca9b8bde9241ba997
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-22 15:27:12 +08:00
Zhou Jing
bf33d43064 [mpp]: Clear input task when enqueue failed
Signed-off-by: Zhou Jing <tracy.zhou@rock-chips.com>
Change-Id: I8ce27952dfaba30aa7f557e36e3d6066522255c9
2020-05-21 17:26:24 +08:00
Zhou Jing
c862e2de0b [hal_h264e_vepu]: Fix vepu error flow
The error from mpp_device should be returned to caller.

Signed-off-by: Zhou Jing <tracy.zhou@rock-chips.com>
Change-Id: I0ae505477c1afdfc306e1d4d1dd804f842e246ce
2020-05-21 17:26:11 +08:00
Zhou Jing
105d232aed [mpp_device]: Fix missing error path
When mpp_device has error the error return value should be record.

Signed-off-by: Zhou Jing <tracy.zhou@rock-chips.com>
Change-Id: I8fcb34bbfc9335bbd2393e4f4f7a26f53b7c856a
2020-05-21 17:21:55 +08:00
Herman Chen
361b293599 [mpp_enc]: change task enqueue order
Change-Id: Ib432be6d5a526ed2e24477593cf87a77b55087a2
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-21 15:20:30 +08:00
Herman Chen
2005ed4f42 [test]: Remove vpu_api_test's dependence on mpp
Remove all mpp object from vpu.so
NOTE: link_directories should be before add_library or add_executable.

Change-Id: Idee25e1ccc2c3182f7b8c26c277d396e28654f3e
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
2020-05-21 09:40:23 +08:00
Herman Chen
6e6f9733ef [script]: Update script for binary update
Change-Id: I09002e8cba2a47ef3510a8c11ac220d18160b537
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-20 19:48:36 +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
Jeffy Chen
0216da20b8 [cmake]: Fix missing CMAKE_C_LINK_EXECUTABLE
Change-Id: I1c9f4eadebab04d53b0c5b054261b4cfcc40ae8c
Signed-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
2020-05-20 17:55:47 +08:00
Herman Chen
b749f0ba94 [mpp_enc_cfg]: Optimization on mpp_enc_cfg
1. Remove prefix before some args.
2. Add node count / info count calculation.

NOTE: the info count is correct but node count may have error.

Change-Id: I3a7d1005f440105eaf4b6d6326e92aa77d7d7e2a
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-20 11:47:34 +08:00
Herman Chen
444f946153 [mpp_trie]: Fix uninitialized node content
Change-Id: I60e4b5a4beba33838c7e72169670c2d50929c039
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-20 08:43:08 +08:00
Herman Chen
ef72082c67 [legacy]: Fix vpu_api_test
1. Remove static libraries for mpp and vpu.
2. Fix vpu_api_test and use dlopen to access libvpu.
3. Fix issue on vepu22 dependence on rga.

vpu_api_test cmd:
enc: vpu_api_test -t 2 -w 1280 -h 720 -i a.yuv -coding 7 -o a.h264

Change-Id: I9682b17b90dce4a82400f5e2da3c955819f875bf
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-19 11:00:13 +08:00
Herman Chen
f963d33b97 [mpp_enc_cfg]: Fix missing symbol in mpp library
1. Use whole-archive option to include all function in mpp_base.
2. Reduce mpp_enc_cfg table size.

Change-Id: If8358b13a788d6b81c4f84d2a183e9ec8d080cc5
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-18 15:24:04 +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
Herman Chen
6f4e9a75e7 [jpege]: Add jpege api v2 implement
1. Add jpege_api_v2 module.
2. Move all control process to jpege_api_v2
3. Add hal_jpege_vepu1_v2 and hal_jpege_vepu2_v2 modules.
3. Add default rc for jpege.

Change-Id: I08c8adeb2d6613cbc074ee4978b9533739c21bb1
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-15 15:48:06 +08:00
Herman Chen
7e97c7eb29 [mpp_trie]: Update default node / info count
1. Set default node to 800 and info to 80.
2. Fix mpp_trie_test compile warning.

Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: Ie63ce123e18fefc3108d3be7cbdc50e08c21f846
2020-05-15 09:57:05 +08:00
Herman Chen
5deb30e815 [mpp_enc_cfg]: Set change flag when value updated
Change-Id: I6dde5a19d2f24994fa0ff166f5c76496168fec58
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-13 18:05:08 +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
Johnson Ding
8b4d477c5f [base]: fix typo at file header
Change-Id: I476bd445e621a6c4427661e08982a4cacba92aa6
Signed-off-by: Johnson Ding <johnson.ding@rock-chips.com>
2020-05-13 14:46:10 +08:00
Johnson Ding
aeb320ed33 [mpp_enc_v2]: config qp range if mb rc is disable
On FIXQP mode all qp will be set to init_quality.

Change-Id: Ic614c583e5dba0e5e4e129f46437adc87cd13fa0
Signed-off-by: Johnson Ding <johnson.ding@rock-chips.com>
2020-05-13 14:42:59 +08:00
Herman Chen
8eb95cde37 [cmake]: Add armv7l support
Change-Id: I493eae823018e4bb658e367d71001dafa41b127a
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-13 14:20:07 +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
50ef00aa79 [base]: Add trie for indexing
MppTrie will use the location of the input stream pointer as its
indexing pointer.

Change-Id: I2cb0b7d9cc2452db5698a971d08a24b98e5bc587
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-13 11:50:16 +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
761db84321 [mpp_enc]: rename MppEncCfg to MppEncInitCfg
Change-Id: I90f97336e77bf82b68a59fbd26cfedd8754954b6
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-12 08:59:54 +08:00
Herman Chen
f0f171f3d3 [mpp_enc_v2]: Fix issue of output multi header
Change-Id: Iff6a388ae1f453c46146b3bf5a9620c66bb2c3db
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-09 14:36:54 +08:00
Herman Chen
76249822c8 [h265e_vepu541]: Optimize detail parameters
Enlarge quantization bias.

Change-Id: I70eb2032c60f8f43909e3675f086647ae9329d14
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-07 11:38:20 +08:00
Herman Chen
ede5955685 [vepu541]: Fix block base qp_sum error
H.264 qp_sum is calculated by summon up 16x16 macroblock qp.
H.265 qp_sum is calcultaed by summon up 8x8 block qp.

Change-Id: I08d483d9cb997b25b9b6258259cb3b2290da3e4a
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-06 14:14:05 +08:00
sayon.chen
dfe13c041a [vepu541]: Fix reenc case no read roi again
Change-Id: I857bd53ba173ae81fa1ab5065041c5d6ee9daca6
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-04-30 16:18:52 +08:00
Herman Chen
02c7073f35 [vepu541]: Fix roi error
1. Fix h.264 encoder roi buffer leak error.
2. Set all qparea to [1, 51] range.

Change-Id: I8434fc5fc60071ec533aba68fc2fe3be5a087bcd
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-04-29 19:26:00 +08:00
Herman Chen
4709cb2a95 [vepu541_common]: Add more roi config check
Change-Id: If5c32f1b0e0c40610fd60673e9d550570fab6c93
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-04-29 18:41:05 +08:00
Herman Chen
16047eb224 [mpp_time]: Add AUTO_TIMING for C++ function
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I1ec9f6307dce44f7aa086911477b27e523904cdc
2020-04-29 16:06:47 +08:00
Shunqian Zheng
9464af395b [misc]: Terminate soc_name to fix out of bounds
1. Terminate soc_name string to fix memory out of bounds
2. Fix all snprintf/strnlen warning

Change-Id: I4525c6e289a00d1509bc30ee69545d92f2f4b9cb
Signed-off-by: Shunqian Zheng <zhengsq@rock-chips.com>
2020-04-29 16:06:47 +08:00
Herman Chen
32689b3708 [test]: Add user data option in mpi_enc_test
Change-Id: Ib84980defdcbae5f92ad841a107757392f37db2d
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-04-29 08:50:43 +08:00
Herman Chen
5dc3cc1b39 [h264e_vepu541]: Relax restrictions on frame qp
Change-Id: I63a556770e47b0b2a0eb9063d2df71ddea087a58
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-04-29 08:38:10 +08:00
Herman Chen
f9df2edb13 [readme]: Add more resource
Change-Id: I463e4135eb65af1805330788120e64c20cfa1f9b
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-04-29 08:38:10 +08:00
Herman Chen
bd22096437 [mpp_enc_v2]: Fix gop update issue
When gop / fps / rc_mode in RcCfg is changed the header should be
resend.

Change-Id: Id055cfe2f752dc741dc05012f954198c00077caa
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-04-29 08:38:10 +08:00
Herman Chen
8c9f6f75fe [mpp_info]: Add funciton to read version string
Change-Id: I66f8c4a3669e3eb6d67289f12db300da149bdcb7
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-04-28 15:56:13 +08:00