Commit Graph

3026 Commits

Author SHA1 Message Date
Herman Chen
197bda000f [hal_h264e_vepu]: Add tsvc support on vepu1/2
Change-Id: Iba98bf8cceb4b9aa3c24dd779cc3b002336f8c88
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-06-02 20:06:13 +08:00
sayon.chen
43061a9eac [rc_v2]: Fix divide 0 when gop is infinite
1. Fix bit calc when gop set 0 or 1
2. When gop set 0, will set 300 for bit calc

Change-Id: I8c6f8dfd634a5c5cee760de6226f156e897d91b0
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-06-02 20:06:13 +08:00
Herman Chen
9f6dcfccc4 [mpp_enc_v2]: Unify sei writing process
Change interface of adding stream prefix which is adding sei packet in
H.264/H.265.

The sei will be added with certain type:
1. version info
2. rate control info (rc api name + rc cfg)
3. user data

Change-Id: Ic17efb6b9f75db774b7ad7e7cc78818170260def
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-06-02 20:06:13 +08:00
Herman Chen
b8caab0fe0 [mpp_enc]: Fix error when update bps only
When only bps is updated the whole rc_usr_cfg should be updated.

Change-Id: I02ed8fa247b3b56ac286254c55251b594ff2fab2
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-06-01 14:15:07 +08:00
sayon.chen
cc3966a6d8 [h265e_541]: Update l2 bias set
Change-Id: I45654b35092ab659bed10604d96c19f50c3591f7
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-06-01 11:30:24 +08:00
Herman Chen
85046f5648 [mpp_enc_v2]: Add add_prefix function
This function is for debugging usage.
Encoder will write mpp version info before each IDR frame.

Change-Id: I03e2f2a7d751e9ecc3122314c2b3de8aa31b910d
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-06-01 10:24:14 +08:00
Herman Chen
439fce52b0 [test]: Add infinite loop mode for mpi_enc_test
Change-Id: Ibf459034f89682ec2accf5c79cf437bc34804808
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-29 17:19:22 +08:00
Ding Wei
a26d0fadd7 [h265d]: fix issue for pps header
slice_header_extension_present_flag has missing in parse.

Signed-off-by: Ding Wei <leo.ding@rock-chips.com>
Change-Id: I479b7f0b67eb998c2a33791828488b37384d446a
2020-05-29 10:46:00 +08:00
sayon.chen
24d215ecfc [h265e_api_v2]: Fix request IDR cause tsvc issue
1.remove unused code
2.fix request IDR cause tsvc can't find ref

Change-Id: I67997dd6b56055038c6a1d4e82dace59b84b7944
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-05-28 16:40:18 +08:00
sayon.chen
dc4dc1d7bf [rc_v2]: First intra qp init no depend seq_idx
Change-Id: Ib47003a09794fe51517a56b8c86af8d21152e317
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-05-28 15:12:27 +08:00
Herman Chen
6041943238 [h264e_debug]: Add h264e control debug flag
Change-Id: I70cce37b21c4db155f6bbe42842e6d952afb4bc1
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-28 11:34:35 +08:00
toby.zhang
681557ee5b [smartp]: modify smt algorithm for 1109/1126
Change-Id: I8017bbd94093ac3f37516e1451709d8f5db38589
Signed-off-by: toby.zhang <toby.zhang@rock-chips.com>
2020-05-28 10:59:18 +08:00
Herman Chen
db836b2001 [h264e]: Fix discontinuity frame_num issue
Change-Id: Ie00c0f278ef619a17390fc088691ee4e27a937ca
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-28 10:28:49 +08:00
Herman Chen
cac03245ba [mpp_enc]: Fix error on request IDR frame
The codec will not handle IDR request directly. The force idr / force
LTR will be config to codec by cpb info.

Change-Id: I9aba12ea3080256451115b9fd77433b67e318cf3
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-28 09:30:54 +08:00
Herman Chen
97e871f323 [mpp_enc]: fix error on enc_ref_cfg change
1. Clear cpb on MppEncRefCfg updated in mpp_enc_refs_set_cfg.
2. Clear encoder header status on MPP_ENC_SET_RC_CFG control to
regenerate new header.
3. Update rc user cfg on enc_ref_cfg updated.

Change-Id: I0ababab44611be24e62d2c00e1f281834fcfbcee
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-27 18:08:20 +08:00
Herman Chen
9ec0d9627d [mpp_enc]: Allow MPP_ENC_SET_REF_CFG NULL input
NULL input for MPP_ENC_SET_REF_CFG will disable customized reference
frame hierarchy configuration.

Change-Id: I2319c7ae694160eab6c14192b17855a59fce3d77
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-27 15:15:02 +08:00
Herman Chen
51f87fa5e0 [h264e]: Use new mmco wr / rd function
Change-Id: I963e3e37ecb6c26d406b9095a67d89b971828dc0
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-27 10:35:32 +08:00
Herman Chen
482f80c2e2 [h264e]: Use new reorder wr / rd function
When reencode is needed the slice write need to read reorder repeatly.
So the fifo structure is not suitable for this case.
The read / write / rewind access mode is better.

Change-Id: Ifdfce20a91b27f571825b74090d47a530e9e1132
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-27 10:35:05 +08:00
Herman Chen
3166d88321 [test]: Add coding type detection to mpi_dec_test
Change-Id: Ie6353184dab453e479c4f61137f208276386367c
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-27 10:34:52 +08:00
Ding Wei
8d38d4b2f0 [mpp_dec]: add immediate_out flag in mpp struct
tips: control cmd for immediate_out, can send both before and after mpp_init.

Signed-off-by: Ding Wei <leo.ding@rock-chips.com>
Change-Id: Ibe66878cfab1f592b952d01bee3adade7c9d31bc
2020-05-27 10:22:03 +08:00
Herman Chen
c21d2dee3b [cmake]: Fix TOOLCHAIN_NAME error on aarch64
Change-Id: I2a56b86a716bfe2d2220e98d78126825e26ef19b
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-26 20:38:03 +08:00
sayon.chen
e78625c47b [rc_v2]: Support i_quality dealt qp setup
Change-Id: I0d6f33ec119b4ac7e3e0c4370a93760a41273d25
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-05-26 17:52:33 +08:00
sayon.chen
4326b07e81 [h265e_v2]: Add MppEncRefs to h265e flow
Change-Id: Ifddbb63736fd7e679fc9a3f7d67d2e7a7f6ffc95
Signed-off-by: sayon.chen <sayon.chen@rock-chips.com>
2020-05-26 17:37:02 +08:00
Herman Chen
51fed96bd9 [test]: add tsvc sample to mpi_enc_test
Add simple tsvc4 config to mpi_enc_test for test.

Change-Id: Icdb5a91106351a00d3eb07dc233b9341084c5abe
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-26 16:50:22 +08:00
Herman Chen
50bf7b7bf0 [utils]: Add encoder reference config sample
Add MppEncRefCfg configure sample to mpi_enc_utils.

Change-Id: I56d87dc6b267a8029c4d539526c368f2f44cec11
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
2020-05-26 16:42:17 +08:00
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