After realloc, the source pointer maybe invalid,
need assign the new pointer.
Signed-off-by: Yandong Lin <yandong.lin@rock-chips.com>
Change-Id: I324f379540cab2d6463a829470f11ff2d57b0b42
The hw ref used may not correct, cause mark frame err info incorrectly.
So if is err frame, set fd = 0, err for trigger pagefault if the cur frame
use the err ref. This makes it possible to correctly identify whether an
err ref frame is being used.
Signed-off-by: Yandong Lin <yandong.lin@rock-chips.com>
Change-Id: I4e7f042731f22e3ab8f4c90e51120fb8d841142a
support hack for err ref check for decoder
Signed-off-by: Yandong Lin <yandong.lin@rock-chips.com>
Change-Id: Ib61336b50dde626d85f9f6bb25950ea70149ea49
It is wrong to using PTS of the next packet as PTS of current paring
frame.
Change-Id: I858d4bd2831e63eefc8815be3cabe460444528bd
Signed-off-by: Johnson Ding <johnson.ding@rock-chips.com>
The commit that cause the issue:
commit eaa250d1fc
Author: Yandong Lin <yandong.lin@rock-chips.com>
Date: Thu Apr 13 10:57:35 2023 +0800
[vp9d_parser]: fix frame mark errinfo issue
Key Frame or intra only frame do not reference other frame,
so need not check errinfo of ref frame.
Signed-off-by: Yandong Lin <yandong.lin@rock-chips.com>
Change-Id: I4fbfca7ba7dedfef6d6a721528ba536dba50a8f3
err log:
mpp_buf_slot: Assertion slot->status.has_frame failed at mpp_buf_slot_get_prop:1085
hal_vp9d_vdpu34x: ref buff address is no valid used out as base slot index 0x2
Signed-off-by: Yandong Lin <yandong.lin@rock-chips.com>
Change-Id: Ie280d732a48ae326f1c9bb6470ca452dc974d296
When a object is double put by mpp_mem_pool_put,
it will destroy the info of MppMemPoolImpl.
So set node->check = NULL when mpp_mem_pool_put, and it will check
failed adn return when double mpp_mem_pool_put.
Signed-off-by: Yandong Lin <yandong.lin@rock-chips.com>
Change-Id: I54be2eae3a1d7e81579f89d3e80304abface3049
The same poiner address may have different value in memory.
So we need to update pointer config at each time.
Issue is introduced by commit as followed.
Change-Id: Ia15a0128d03b1a2624410b6f2a13effe3a03c47c
Change-Id: Ia10fe1f3faff257d5276473cb7829ac1cb0f1795
Signed-off-by: xueman.ruan <xueman.ruan@rock-chips.com>
Key Frame or intra only frame do not reference other frame,
so need not check errinfo of ref frame.
Signed-off-by: Yandong Lin <yandong.lin@rock-chips.com>
Change-Id: I4fbfca7ba7dedfef6d6a721528ba536dba50a8f3
frame alloc failed cause by stream error, such as:
receive top field while top_field_first = 0,
or bottom filed while top_field_first = 1;
mark resetFlag to wait for another I frame
Signed-off-by: Chandler Chen <chandler.chen@rock-chips.com>
Change-Id: I0bf6152db84459b06141ab0fa5232c0fffd51f92
SEI payload parsing should be aligned with bytes. So bits remaining at
tail should be skipped. In case of bits remained is more than 32,
skipping the whole payload directly from the beginning of the current
payload being parsed.
Change-Id: I003a51b8347011ad310b55452192b07ae63e7df3
Signed-off-by: Johnson Ding <johnson.ding@rock-chips.com>
For larger NALU header, eg: userdata or extradata, header buffer
initialized at first will not be enough. But previous data pointers that
point to header buffers are not valid after doing reallocation. So a
better way to recording buffer entry is to record offset.
Change-Id: I13f59e142af6d1a932279cb8eb43c28e72141af9
Signed-off-by: Johnson Ding <johnson.ding@rock-chips.com>
In 64-bit env, memcpy in the same buffer may cause err stream.
Use memmove replace memcpy to resolve the issue.
Signed-off-by: Yandong Lin <yandong.lin@rock-chips.com>
Change-Id: I55326e03c1af04ec617bd213c7dcd84d5d92406d
- Fixed min_still_percent overflow
- Fixed incorrect initialization value after dynamic
change of bit rate
Signed-off-by: Xinhuang Li <buluess.li@rock-chips.com>
Change-Id: I8a0cf501f5995731d1ad8173c3d8880b33c63f73
If the inter row rcb buf is placed in sram, may conflict with other
buffer in ddr, will result in slower access to data and degraded
decoding performance.
The issue will be resolved in chips after rk3588
Signed-off-by: Yandong Lin <yandong.lin@rock-chips.com>
Change-Id: I79f5402c259ca5fa3a1223e5fb0f47bd0caa5b6d
When notify goes with control process the control notify should not
clear the other remaining notifies.
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: Ie5adbf10047ccbaed8717d008b60e89e08817840
Rootcause:
The frame_mbs_only_flag is zero in the 10bit h264 source.
then, fbc fmt is disable because of frame_mbs_only_flag=0
means the source may contain filed that need go to iep.
Solution:
Add filter for 10bit.
Signed-off-by: Yandong Lin <yandong.lin@rock-chips.com>
Change-Id: I29163af98afbc92534863b979b38c8180b91c564
Hardware does not support H.264 stream at profile High 4:4:4
Predictive@L4.
Change-Id: I5c9d1bd83e731be3c7e9261d0e9db820d01a8cf7
Signed-off-by: Johnson Ding <johnson.ding@rock-chips.com>
mpp_dec_cfg and mpp_enc_cfg are same issue.
e.g. mpp_enc_cfg:
In 64-bit, the sizeof(MppEncCfgImpl) > cfg_size + sizeof(p->size)
because of memory alignment.
So malloc a memory with size cfg_size + sizeof(p->size) and cast into
MppEncCfgImpl will case out of bounds.
Signed-off-by: Yandong Lin <yandong.lin@rock-chips.com>
Change-Id: I7f23930ef44599332d465c49e7bd4422d45d7c3a
For some live stream, DOI may not be consecutive. Frames decoded by
referenced may remain at DPB and never removed since no video_edit_code
or video_sequence_end_code is inserted between sequences.
Change-Id: I341a9fa02af1172fd7e49fef4738bc32fae370a2
Signed-off-by: Johnson Ding <johnson.ding@rock-chips.com>
Frame DOI parsed from picture header may not equals to DOI recomputed.
So when judging a frame at DPB should be output or not, it may goes
wrong. Because a frame with smallest POI at DPB will have larger DOI than
DOI of a frame being parsing currently.
Change-Id: I534f56fcca7426383b671b9e34209e712f4c8a1e
Signed-off-by: Johnson Ding <johnson.ding@rock-chips.com>