[PATCH v1 0/7] Performance improvement of decoder

From: Jackson.lee
Date: Wed Apr 09 2025 - 21:09:11 EST


From: Jackson Lee <jackson.lee@xxxxxxxxxxxxxxx>

v4l2-compliance results:
========================

v4l2-compliance 1.28.1-5233, 64 bits, 64-bit time_t

Buffer ioctls:
warn: v4l2-test-buffers.cpp(693): VIDIOC_CREATE_BUFS not supported
warn: v4l2-test-buffers.cpp(693): VIDIOC_CREATE_BUFS not supported
test VIDIOC_REQBUFS/CREATE_BUFS/QUERYBUF: OK
test CREATE_BUFS maximum buffers: OK
test VIDIOC_EXPBUF: OK
test Requests: OK (Not Supported)

Total for wave5-dec device /dev/video0: 46, Succeeded: 46, Failed: 0, Warnings: 2
Total for wave5-enc device /dev/video1: 46, Succeeded: 46, Failed: 0, Warnings: 0

Fluster test results:
=====================

Running test suite JCT-VC-HEVC_V1 with decoder GStreamer-H.265-V4L2-Gst1.0
Using 3 parallel job(s)
Ran 133/147 tests successfully in 41.629 secs

(1 test fails because of not supporting to parse multi frames, 1 test fails because of a missing frame and slight corruption,
2 tests fail because of sizes which are incompatible with the IP, 11 tests fail because of unsupported 10 bit format)


Running test suite JVT-AVC_V1 with decoder GStreamer-H.264-V4L2-Gst1.0
Using 3 parallel job(s)
Ran 78/135 tests successfully in 44.578 secs

(57 fail because the hardware is unable to decode MBAFF / FMO / Field / Extended profile streams.)

Seek test
=====================
1. gst-play-1.0 seek.264
2. this will use waylandsink since gst-play-1.0 uses playbin.
if you don't want to hook up display,
you can run gst-play-1.0 seek.264 --videosink=fakevideosink instead
3. Let pipeline run for 2-3 seconds
4. press SPACE key to pause
5. press 0 to reset
press SPACE to start again

gst-play-1.0 seek.264 --videosink=fakevideosink
Press 'k' to see a list of keyboard shortcuts.
Now playing /root/seek.264
Redistribute latency...
Redistribute latency...
Redistribute latency...
Redistribute latency...
Redistribute latency...aused
0:00:09.9 / 0:00:09.7
Reached end of play list.

Sequence Change test
=====================
gst-launch-1.0 filesrc location=./switch_1080p_720p_240frames.h264 ! h264parse ! v4l2h264dec ! filesink location=./h264_output_420.yuv
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Redistribute latency...
Redistribute latency...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
Redistribute latency...
New clock: GstSystemClock
Got EOS from element "pipeline0".
Execution ended after 0:00:05.772414400
Setting pipeline to NULL ...
Freeing pipeline ...

Change since v0:
===================
* For [PATCH v1 2/7] media: chips-media: wave5: Improve performance of decoder
- separates the previous patch to a few patches

* For [PATCH v1 3/7] media: chips-media: wave5: Fix not to be closed
- separated from the previous patch of performance improvement of
decoder

* For [PATCH v1 4/7] media: chips-media: wave5: Use spinlock whenever state is changed
- separated from the previous patch of performance improvement of
decoder

* For [PATCH v1 5/7] media: chips-media: wave5: Fix not to free resources normally when
instance was destroyed
- separated from the previous patch of performance improvement of
decoder

* For [PATCH v1 7/7] media: chips-media: wave5: Fix SError of kernel panic when closed
- separated from the previous patch of performance improvement of
decoder

Jackson Lee (7):
media: chips-media: wave5: Fix Null reference while testing fluster
media: chips-media: wave5: Improve performance of decoder
media: chips-media: wave5: Fix not to be closed
media: chips-media: wave5: Use spinlock whenever state is changed
media: chips-media: wave5: Fix not to free resources normally when
instance was destroyed
media: chips-media: wave5: Reduce high CPU load
media: chips-media: wave5: Fix SError of kernel panic when closed

.../platform/chips-media/wave5/wave5-helper.c | 10 +-
.../chips-media/wave5/wave5-vpu-dec.c | 116 +++++++++++-------
.../chips-media/wave5/wave5-vpu-enc.c | 8 +-
.../platform/chips-media/wave5/wave5-vpu.c | 70 +++++++++--
.../platform/chips-media/wave5/wave5-vpuapi.c | 36 +++---
.../platform/chips-media/wave5/wave5-vpuapi.h | 10 ++
.../chips-media/wave5/wave5-vpuconfig.h | 1 +
7 files changed, 179 insertions(+), 72 deletions(-)

--
2.43.0