Skip to content

Instantly share code, notes, and snippets.

@devarsht
devarsht / vpu_hrtimer_v3
Created March 10, 2024 10:19
vpu_hrtimer_v3
1: b8d9d6edc9fa ! 1: bb4565af0a3f media: chips-media: wave5: Add hrtimer based polling support
@@ Commit message
param in case user want to change it as per their use-case requirement
keeping in mind above trade-off.
+ Parse the irq number and if not present, initialize the hrtimer and the
+ polling worker thread before proceeding with v4l2 device registrations.
+
Based on interrupt status, we use a worker thread to iterate over the
interrupt status for each instance and send completion event as being done
@devarsht
devarsht / vpu_poll_range_diff_v2
Last active March 5, 2024 15:45
vpu_poll_range_diff_v2
1: 9dff0110f466 ! 1: 10eda94f7fba media: chips-media: wave5: Add hrtimer based polling support
@@ Metadata
## Commit message ##
media: chips-media: wave5: Add hrtimer based polling support
- Add support for starting a polling timer in case interrupt is not
- available. This helps keep the VPU functional in SoC's such as AM62A, where
- the hardware interrupt hookup may not be present due to an SoC errata [1].
+ Add support for starting a polling timer in case an interrupt is not
+ available. This helps to keep the VPU functional in SoCs such as AM62A,
@devarsht
devarsht / wave5 polling sanity tests
Created March 5, 2024 15:25
wave5 polling sanity tests
Decoder
=======
gst-launch-1.0 filesrc location="bbb_1080p30_30s_IPPP.h264" ! h264parse ! v4l2h264dec capture-io-mode=dmabuf ! fpsdisplaysink text-overlay=false name=fpssink video-sink="kmssink driver-name=tidss" -v
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstFPSDisplaySink:fpssink/GstKMSSink:kmssink0: display-width = 1920
/GstPipeline:pipeline0/GstFPSDisplaySink:fpssink/GstKMSSink:kmssink0: display-height = 1080
/GstPipeline:pipeline0/GstFPSDisplaySink:fpssink/GstKMSSink:kmssink0: sync = true
Redistribute latency...
/GstPipeline:pipeline0/GstH264Parse:h264parse0.GstPad:src: caps = video/x-h264, pixel-aspect-ratio=(fraction)1/1, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, parsed=(boolean)true, stream-format=(string)byte-stream, alignment=(string)au, profile=(string)high, level=(string)4
@devarsht
devarsht / v6_range_diff
Created February 28, 2024 13:16
v6_range_diff
1: cf342fc82027 = 1: cf342fc82027 media: dt-bindings: Add Imagination E5010 JPEG Encoder
2: 25c39e0883c7 = 2: 25c39e0883c7 media: jpeg: Add reference quantization and huffman tables
3: 722e1d86e3b1 ! 3: ee7b672770ce media: imagination: Add E5010 JPEG Encoder driver
@@ drivers/media/platform/imagination/e5010-jpeg-enc.c (new)
+{
+ struct e5010_dev *e5010;
+ int irq, ret = 0;
++ struct device *dev = &pdev->dev;
+
-+ ret = dma_set_mask(&pdev->dev, DMA_BIT_MASK(32));
@devarsht
devarsht / v6_performance
Created February 28, 2024 13:06
v6_performance
+ gst-launch-1.0 -v v4l2src io-mode=dmabuf-import device=/dev/video1 num-buffers=100 '!' video/x-raw,width=1920,height=1080,format=NV12, framerate=30/1 '!' v4l2jpegenc output-io-mode=dmabuf extra-controls=c,compression_quality=70 '!' fpsdisplaysink text-overlay=false name=fpssink video-sink=fakesink -v
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
/GstPipeline:pipeline0/GstFPSDisplaySink:fpssink/GstFakeSink:fakesink0: sync = true
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = video/x-raw, width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw, width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)2:4:7:1
/GstPipeline:pipeline0/v4l
@devarsht
devarsht / v6_multistream
Created February 28, 2024 13:02
v6_multistream
++ for i in {1..20}
++ for i in {1..20}
++ sleep 0.5
++ gst-launch-1.0 -v videotestsrc num-buffers=100 '!' video/x-raw,width=640,height=480,format=NV12, framerate=30/1 '!' queue '!' v4l2jpegenc extra-controls=c,compression_quality=60 '!' fpsdisplaysink name=fpssink text-overlay=false 'video-sink=fakesink sync=true' sync=true
++ for i in {1..20}
++ gst-launch-1.0 -v videotestsrc num-buffers=100 '!' video/x-raw,width=640,height=480,format=NV12, framerate=30/1 '!' queue '!' v4l2jpegenc extra-controls=c,compression_quality=60 '!' fpsdisplaysink name=fpssink text-overlay=false 'video-sink=fakesink sync=true' sync=true
++ sleep 0.5
++ for i in {1..20}
++ sleep 0.5
++ for i in {1..20}
@devarsht
devarsht / v6_format_resolution
Created February 28, 2024 12:52
v6_format_resolution
+ wait
+ gst-launch-1.0 -v videotestsrc num-buffers=100 '!' video/x-raw,width=1920,height=1080,format=NV12, framerate=30/1 '!' v4l2jpegenc output-io-mode=dmabuf extra-controls=c,compression_quality=70 '!' filesink location=/run/op_videotestsrc_1920_1080_NV12_30_100_70_func.mjpeg
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, multiview-mode=(string)mono, interlace-mode=(string)progressive, colorimetry=(string)bt601, pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, multiview-mode=(string)mono, interlace-mode=(string)progressive, colorimetry=(string)bt601, pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/v4l2jpegenc:v4l2jpegenc0.GstPad:src: caps = image/jpeg, width=(int)1920, height=(in
@devarsht
devarsht / v6_compression_test
Created February 28, 2024 12:30
v6_compression_test
+ wait
+ gst-launch-1.0 -v videotestsrc num-buffers=100 '!' video/x-raw,width=1920,height=1080,format=NV12, framerate=30/1 '!' v4l2jpegenc output-io-mode=dmabuf extra-controls=c,compression_quality=70 '!' filesink location=/run/op_videotestsrc_1920_1080_NV12_30_100_70_func.mjpeg
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, multiview-mode=(string)mono, interlace-mode=(string)progressive, colorimetry=(string)bt601, pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, multiview-mode=(string)mono, interlace-mode=(string)progressive, colorimetry=(string)bt601, pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/v4l2jpegenc:v4l2jpegenc0.GstPad:src: caps = image/jpeg, width=(int)1920, height=(in
@devarsht
devarsht / v6_compliance_test
Created February 28, 2024 12:28
v6_compliance_test
v4l2-compliance 1.27.0-5174, 64 bits, 64-bit time_t
v4l2-compliance SHA: d700deb14368 2024-01-18 12:19:05
Compliance test for e5010 device /dev/video0:
Driver Info:
Driver name : e5010
Card type : e5010
Bus info : platform:fd20000.jpeg-encoder
Driver version : 6.8.0
Polling interval (ms) Encoder Average Latency (ms)
5 3.11
10 6.65
15 6.93