<div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le sam. 18 févr. 2023, 22 h 15, H Jumogehn via gstreamer-devel <<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><p style="margin-top:0px;color:rgb(51,51,51);font-family:"NVIDIA Sans",Helvetica,Arial,sans-serif;font-size:15px;letter-spacing:0.15px">Hello,</p><p style="color:rgb(51,51,51);font-family:"NVIDIA Sans",Helvetica,Arial,sans-serif;font-size:15px;letter-spacing:0.15px">I’d like to make sure some personally uncertain technical understandings about the secret of gstreamer’s high throughput.</p><p style="color:rgb(51,51,51);font-family:"NVIDIA Sans",Helvetica,Arial,sans-serif;font-size:15px;letter-spacing:0.15px">Please tell me I am wrong if my understandings below is really wrong.</p><ul style="margin:1em 0px 1em 1.25em;padding:0px 0px 0px 1.25em;clear:both;color:rgb(51,51,51);font-family:"NVIDIA Sans",Helvetica,Arial,sans-serif;font-size:15px;letter-spacing:0.15px"><li>gstreamer provides high throughput because it can construct and use pipelines of mass data stream as effective as possible.</li><li>The pipeline is placed in kernel space mostly. So the mass data flows only in kernel.</li><li>The mass stream data can be consumed in user space like in the appsink. Other than these special pipeline element mostly the data is handled in kernel space.</li><li>In this way gstreamer is able to eliminate inefective data copy between user space and kernel space.</li></ul><p style="color:rgb(51,51,51);font-family:"NVIDIA Sans",Helvetica,Arial,sans-serif;font-size:15px;letter-spacing:0.15px">nvv4l2camerasrc device=/dev/video0 !<br>video/x-raw(memory:NVMM),format=UYVY,width=1920,height=1080,framerate=30/1 !<br>nvvidconv !<br>video/x-raw,format=BGRx !<br>videoconvert !<br>video/x-raw, format=BGR !<br>appsink drop=1</p><ul style="margin:1em 0px 1em 1.25em;padding:0px 0px 0px 1.25em;clear:both;color:rgb(51,51,51);font-family:"NVIDIA Sans",Helvetica,Arial,sans-serif;font-size:15px;letter-spacing:0.15px"><li>In the pipeline above, the mass data only be outputed to the userspace firstly at the end of the pipeline - in the appsink.</li><li>Other than the appsink the video data only flows in the kernel space in the pipeline above.</li></ul><p style="color:rgb(51,51,51);font-family:"NVIDIA Sans",Helvetica,Arial,sans-serif;font-size:15px;letter-spacing:0.15px">Is there any misunderstandings above?<br>I’d like to be sure about my understading.<br>Thank you very much!</p></div></div></blockquote></div></div><div dir="auto"><br></div><div dir="auto">With this pipeline, and in this context it is correct. The camera src produces a handle to some memory, which is passed to the HW colorspace converter nvvidconv, which finally deliver the data in 32bit form for CPU usage. It's unfortunate that you need 24bit packed, as this conversation is a cpu copy of the data.</div><div dir="auto"><br></div><div dir="auto">Nicolas</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><div><br></div></div>
</blockquote></div></div></div>