<div dir="ltr">Hi Nicolas,<div><br></div><div>Thank you for the information. Let me give more details. Basically I'm looking for something like this:</div><div><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-size:15px;font-variant-ligatures:common-ligatures"><i>gst-launch-1.0 filesrc location=input.mp4 ! qtdemux ! h264parse ! nvh264dec ! gldownload ! appsink sync=false caps=video/x-raw\(memory:DMABuf\)</i></span></div><div><font color="#1d1c1d" face="Slack-Lato, appleLogo, sans-serif"><span style="font-size:15px;font-variant-ligatures:common-ligatures"><i><br></i></span></font></div><div>

gldownload src pad has <i style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-size:15px;font-variant-ligatures:common-ligatures">memory:DMABuf </i><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">support so I expect this to work but caps negotiation is failing. Am I missing something?</span><br></div><div><i style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-size:15px;font-variant-ligatures:common-ligatures"><br></i></div><div><i><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">Setting pipeline to PAUSED ...</span><br style="box-sizing:inherit;color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures"><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">Pipeline is PREROLLING ...</span><br style="box-sizing:inherit;color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures"><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">Got context from element 'gldownloadelement0': </span><a target="_blank" class="gmail-c-link" href="http://gst.gl/" rel="noopener noreferrer" style="box-sizing:inherit;text-decoration-line:none;font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">gst.gl</a><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">.GLDisplay=context, </span><a target="_blank" class="gmail-c-link" href="http://gst.gl/" rel="noopener noreferrer" style="box-sizing:inherit;text-decoration-line:none;font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">gst.gl</a><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">.GLDisplay=(GstGLDisplay)"\(GstGLDisplayX11\)\ gldisplayx11-0";</span><br style="box-sizing:inherit;color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures"><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">Got context from element 'nvh264dec0': gst.cuda.context=context, gst.cuda.context=(GstCudaContext)"\(GstCudaContext\)\ cudacontext0", cuda-device-id=(int)0;</span><br style="box-sizing:inherit;color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures"><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">Redistribute latency...</span><br style="box-sizing:inherit;color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures"><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">ERROR: from element /GstPipeline:pipeline0/GstQTDemux:qtdemux0: Internal data stream error.</span><br style="box-sizing:inherit;color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures"><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">Additional debug info:</span><br style="box-sizing:inherit;color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures"><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">../subprojects/gst-plugins-good/gst/isomp4/qtdemux.c(6650): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstQTDemux:qtdemux0:</span><br style="box-sizing:inherit;color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures"><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">streaming stopped, reason not-negotiated (-4)</span><br style="box-sizing:inherit;color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures"><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">ERROR: pipeline doesn't want to preroll.</span><br style="box-sizing:inherit;color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures"><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">Setting pipeline to NULL ...</span><br style="box-sizing:inherit;color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures"><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">Freeing pipeline ...</span></i><i style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-size:15px;font-variant-ligatures:common-ligatures"><br></i></div><div><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures"><br></span></div><div><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">When I use </span><span style="background-color:rgb(248,248,248);color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-size:15px;font-variant-ligatures:common-ligatures">memory:GLMemory instead of </span><i style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-size:15px;font-variant-ligatures:common-ligatures">memory:DMABuf the pipeline works.</i></div><div>Is it possible to convert <span style="background-color:rgb(248,248,248);color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-size:15px;font-variant-ligatures:common-ligatures">GLMemory to </span><i style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-size:15px;font-variant-ligatures:common-ligatures">DMABuf?</i></div><div><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures"><br></span></div><div><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">Regards,</span></div><div><span style="color:rgb(29,28,29);font-family:Slack-Lato,appleLogo,sans-serif;font-variant-ligatures:common-ligatures">Lusine</span></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Sep 8, 2021 at 9:05 PM Nicolas Dufresne <<a href="mailto:nicolas@ndufresne.ca">nicolas@ndufresne.ca</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Le mercredi 08 septembre 2021 à 19:17 +0400, Lusine Hayrapetyan via gstreamer-<br>
devel a écrit :<br>
> Hi Folks,<br>
> <br>
> I have a pipeline which does gpu decoding and ends with appsink.<br>
> Is it possible to get dmabuf from appsink with zero-copy?<br>
<br>
Yes, though may require an extra step. Here's some example:<br>
<br>
Checking if you did receive dmabuf:<br>
<a href="https://gitlab.freedesktop.org/mesa/kmscube/-/blob/master/gst-decoder.c#L395" rel="noreferrer" target="_blank">https://gitlab.freedesktop.org/mesa/kmscube/-/blob/master/gst-decoder.c#L395</a><br>
<br>
Getting dmabuf FD (note that dup is optional, you can simply ref the gstmemory<br>
or the buffer for the needed amount of time):<br>
<a href="https://gitlab.freedesktop.org/mesa/kmscube/-/blob/master/gst-decoder.c#L412" rel="noreferrer" target="_blank">https://gitlab.freedesktop.org/mesa/kmscube/-/blob/master/gst-decoder.c#L412</a><br>
<br>
Telling upstream that you support GstVideoMeta can greatly help preventing<br>
upstream copies:<br>
<a href="https://gitlab.freedesktop.org/mesa/kmscube/-/blob/master/gst-decoder.c#L242" rel="noreferrer" target="_blank">https://gitlab.freedesktop.org/mesa/kmscube/-/blob/master/gst-decoder.c#L242</a><br>
<br>
> <br>
> Thanks,<br>
> Lusine<br>
> <br>
<br>
<br>
</blockquote></div>