In fast mode, the ref_frm slt idx maintained by Avs2dFrameMgr may be refreshed by a new haltask before the callback.
Change-Id: I05575c4bcac7e618a7c05dd1ff38c0084af33b7e
Signed-off-by: Yanjun Liao <yanjun.liao@rock-chips.com>
Fix colmv buf size not enough issue in some case.
Change-Id: I00e46a6d4a05a53ecb8336fe9818ab960e0b5a99
Signed-off-by: Yandong Lin <yandong.lin@rock-chips.com>
BUG is reported from https://redmine.rock-chips.com/issues/464206
Thread 18 (LWP 2440):
#0 __lll_lock_wait (futex=0x7f34000d48, private=0) at lowlevellock.c:52
#1 0x0000007fab5b1540 in __GI___pthread_mutex_lock (mutex=0x7f34000d48) at pthread_mutex_lock.c:115
#2 0x0000007fa9e0299c in dec_vproc_signal (ctx=0x7f34001260) at ../git/mpp/vproc/mpp_dec_vproc.cpp:929
#3 0x0000007fa9df5bdc in mpp_dec_notify (ctx=0x7f602be600, flag=1088) at ../git/mpp/codec/mpp_dec.cpp:956
#4 0x0000007fa9e0ef30 in mpp_buffer_ref_dec (buffer=0x7f6403f6c8, caller=caller@entry=0x7fa9ee300c "mpp_frame_deinit") at ../git/mpp/base/mpp_buffer_impl.cpp:509
#5 0x0000007fa9e0fb84 in mpp_buffer_put_with_caller (buffer=<optimized out>, caller=caller@entry=0x7fa9ee300c "mpp_frame_deinit") at ../git/mpp/base/mpp_buffer.cpp:105
#6 0x0000007fa9e11820 in mpp_frame_deinit (frame=frame@entry=0x7f602ec340) at ../git/mpp/base/mpp_frame.cpp:85
#7 0x0000007fabd6bf4c in rkmpp_release_frame (opaque=<optimized out>, data=0x7f602ba600 <error: Cannot access memory at address 0x7f602ba600>) at src/libavcodec/rkmppdec.c:339
#8 0x0000007fab9547dc in buffer_replace (src=0x0, dst=<optimized out>) at src/libavutil/buffer.c:133
#9 av_buffer_unref (buf=<optimized out>) at src/libavutil/buffer.c:144
#10 0x0000007fac714bb8 in mp_image_destructor (ptr=0x7f60252c80) at ../../../../../../sources/mpv/video/mp_image.c:209
#11 0x0000007fac748d40 in ta_free (ptr=0x7f60252c80) at ../../../../../../sources/mpv/ta/ta.c:244
#12 0x0000007fac715178 in mp_image_unrefp (p_img=p_img@entry=0x7f4c00bfc0) at ../../../../../../sources/mpv/video/mp_image.c:472
#13 0x0000007fac73396c in wlbuf_pool_entry_release (data=0x7f4c00bfa0, wl_buffer=<optimized out>) at ../../../../../../sources/mpv/video/out/wlbuf_pool.c:132
#14 0x0000007fb4cfe328 in ffi_call_SYSV () at ../libffi-3.3/src/aarch64/sysv.S:114
#15 0x0000007fb4cfdb44 in ffi_call_int (cif=cif@entry=0x7f70fdec80, fn=0x7f70fdeca0, orig_rvalue=orig_rvalue@entry=0x0, avalue=0x10, avalue@entry=0x7f70fded50, closure=0x200000001, closure@entry=0x0) at ../libffi-3.3/src/aarch64/ffi.c:747
#16 0x0000007fb4cfdf24 in ffi_call (cif=cif@entry=0x7f70fdec80, fn=<optimized out>, rvalue=rvalue@entry=0x0, avalue=avalue@entry=0x7f70fded50) at ../libffi-3.3/src/aarch64/ffi.c:756
#17 0x0000007faa49c7c0 in wl_closure_invoke (closure=0x7f4c00bff0, flags=<optimized out>, target=<optimized out>, opcode=0, data=<optimized out>) at ../wayland-1.22.0/src/connection.c:1025
#18 0x0000007faa499df0 in dispatch_event (display=display@entry=0x7f4c001d40, queue=<optimized out>) at ../wayland-1.22.0/src/wayland-client.c:1644
#19 0x0000007faa49b2c8 in dispatch_queue (queue=0x7f4c001e30, display=0x7f4c001d40) at ../wayland-1.22.0/src/wayland-client.c:1790
#20 wl_display_dispatch_queue_pending (display=0x7f4c001d40, queue=0x7f4c001e30) at ../wayland-1.22.0/src/wayland-client.c:2032
#21 0x0000007faa49b2f4 in wl_display_dispatch_pending (display=<optimized out>) at ../wayland-1.22.0/src/wayland-client.c:2095
#22 0x0000007fac73e2cc in vo_wayland_dispatch_events (wl=0x7f4c000e40, nfds=nfds@entry=2, timeout=timeout@entry=100) at ../../../../../../sources/mpv/video/out/wayland_common.c:1933
#23 0x0000007fac741d7c in vo_wayland_wait_events_timeout (vo=vo@entry=0x7f600abed0, timeout_ms=timeout_ms@entry=100) at ../../../../../../sources/mpv/video/out/wayland_common.c:2594
#24 0x0000007fac73baf4 in draw_frame (vo=0x7f600abed0, frame=0x7f302063b0) at ../../../../../../sources/mpv/video/out/vo_dmabuf_wayland.c:1113
#25 0x0000007fac7360c4 in render_frame (vo=0x7f600abed0) at ../../../../../../sources/mpv/video/out/vo.c:984
#26 vo_thread (ptr=0x7f600abed0) at ../../../../../../sources/mpv/video/out/vo.c:1123
#27 0x0000007fab5af370 in start_thread (arg=0x7f72ffbe06) at pthread_create.c:477
#28 0x0000007fab51bedc in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:78
Thread 14 (LWP 3455):
#0 __lll_lock_wait (futex=0x7f60208040, private=0) at lowlevellock.c:52
#1 0x0000007fab5b1540 in __GI___pthread_mutex_lock (mutex=mutex@entry=0x7f60208040) at pthread_mutex_lock.c:115
#2 0x0000007fa9e0ef48 in mpp_buffer_ref_dec (buffer=0x7f6406fee8, caller=caller@entry=0x7fa9ee1ae7 "check_entry_unused") at ../git/mpp/base/mpp_buffer_impl.cpp:503
#3 0x0000007fa9e0fb84 in mpp_buffer_put_with_caller (buffer=<optimized out>, caller=caller@entry=0x7fa9ee1ae7 "check_entry_unused") at ../git/mpp/base/mpp_buffer.cpp:105
#4 0x0000007fa9e0bf1c in check_entry_unused (entry=0x7f601ef530, impl=0x7f60263ec0) at ../git/mpp/base/mpp_buf_slot.cpp:627
#5 mpp_buf_slot_clr_flag (slots=0x7f60263ec0, index=<optimized out>, type=type@entry=SLOT_QUEUE_USE) at ../git/mpp/base/mpp_buf_slot.cpp:919
#6 0x0000007fa9e00eb0 in dec_vproc_clr_prev0 (ctx=ctx@entry=0x7f34001260) at ../git/mpp/vproc/mpp_dec_vproc.cpp:149
#7 0x0000007fa9e00fd0 in dec_vproc_clr_prev (ctx=ctx@entry=0x7f34001260) at ../git/mpp/vproc/mpp_dec_vproc.cpp:180
#8 0x0000007fa9e012b8 in dec_vproc_thread (data=0x7f34001260) at ../git/mpp/vproc/mpp_dec_vproc.cpp:631
#9 0x0000007fab5af370 in start_thread (arg=0x7f47ffdf16) at pthread_create.c:477
#10 0x0000007fab51bedc in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:78
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I742e55e745c46a4adb229e2f6f0e2a2c3498e369
When setting drop-gap to 0, continuous dropping frame at p-skip mode
will make the following encodeing result go wrong, if temporal motion
vector prediction is enabled. So tmvp should be turn off at this case.
Since TMVP doesn't contribute much bit rate, turn it off as a default.
Also SAO should be disabled.
Change-Id: I0cefca33981966dfeae260e450d731e059748911
Signed-off-by: Johnson Ding <johnson.ding@rock-chips.com>
tips: rk3328/rk3328H have 108 u32 registers, not the 78.
Signed-off-by: Ding Wei <leo.ding@rock-chips.com>
Change-Id: I1c3d59d09d1f1a16aacee99673c4db67499e7a38
In some case we need to use avs+ codec decode avs stream.
Change-Id: Id7fe9510e22f65c66a3f8bfc87ec29311830dbf8
Signed-off-by: Grey Li <grey.li@rock-chips.com>
Add -save-temps to save intermediate file for macro debug.
Disable now for osal.a compile error with this option.
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I3d3155666f98f0471313c7dec638fb2d6a6bf093
For kernel dmabuf driver has bug on partial sync function we deside to
disable partial sync to reduce user's error.
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I2c69c407eb5b0056ad0377699fef6ef31e1d79cd
mpp_dup function use fnctl F_DUPFD_CLOEXEC for fd dup with CLOEXEC flag.
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: Idd82eb935b06d2885685aeb696b95e910981539d
Add VEPU540/580 YUV400 format support in H.264 and H.265
Change-Id: Id62102dcdc42afea5c3485224d9b4e5bf25efbac
Signed-off-by: Yanjun Liao <yanjun.liao@rock-chips.com>
1.Correct encoding P skip frame on RK3528. For Rk3528, the maxCuSize is 32, which is different to other Chips that maxCUSize of them is 64. So we need to treat them differentlly.
2.The fixed parameters in the original process have been changed to vary based on maxCUSize.
3.Fix m_cuDepth problem, which value was incorrect.
Change-Id: If4ba25d4d221af64d17c4991a708756ab5bc12d9
Signed-off-by: xiaoxu.chen <xiaoxu.chen@rock-chips.com>
1. Set end_of_slice_segment_flag at the last CTU of one frame.
2. Fix sps->raster2pelx and sps->raster2pely initialization problem.They cause encoding problem for non 64 pixel aligned.
3. The last CTU handled independently, reducing the cost.
Change-Id: I77c565b9bb1eaeaef0d61c8e9c50aa14ef4d0e61
Signed-off-by: xiaoxu.chen <xiaoxu.chen@rock-chips.com>
It will cause frame decode software timeout.
Signed-off-by: Yandong Lin <yandong.lin@rock-chips.com>
Change-Id: I8488dcdde90d268a2a0d6888499b96eb00c77619
crash backtrace:
0) crash at pp->PicWidthInMinCbsY = sps->min_cb_width; sps is 0x0
1) fill_picture_parameters at h265d_parser2_syntax.c:72
2) h265d_parser2_syntax at h265d_parser2_syntax.c:315
3) h265d_parse at h265d_parser.c:1904
While parsing PPS, an incorrect sps_id was parsed, but since the PPS
information is after other decoding frames, the parse_error was not set
to 1. This led to the completion of the parse process reaching
fill_picture_parameters, resulting in an error due to the obtained sps
information being null.
Signed-off-by: Rimon Xu <rimon.xu@rock-chips.com>
Change-Id: I31b8c0371803fb8101fb7ca4aec7e9183c6b218e
1. Add dpb hal_start/hal_end function to mark hal usage.
2. Use dpb_used in the dpb process flow and hal_used in hal flow.
3. Send dpb ptr to hal for hal notify.
4. Use reg_idx in enc_task to find the register buffer.
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: Ib728a896826a3039682de75d6a8cc2d4dfe04e3d
There is a certain error stream that vps is behind
sps and pps while it is still legal and can be
decoded. But the error detection code will stop
the parse process and return error.
To compat this stream by removing return operation
then this kind of stream can be supported.
Change-Id: I2f90a5efa5a8c63a6fa278f9d0408603943001b2
Signed-off-by: xueman.ruan <xueman.ruan@rock-chips.com>