Cross eglstream gstreamer record loss frame

Argus version 0.97.3(multi-process)
Just refer to
cuda/samples/3_Imaging/EGLStream_CUDA_CrossGPU and tegra_multimedia_api/argus/samples/gstVideoEncode/
My project use argus to produce frame in one process,and consumer process consumer the frame in one process and use gstVideoEncode to mp4 file;
But the original argus fps is 30;the consumer process fps is also 30;but the gst record mp4 file is only 2fps(vlc can play,fsp info is 2.07),

Producer Process:
EGLStreamReceivefd–FIFO
cuEGLStreamConsumerAcquireFrame–m_InputStreamConnection
cuEGLStreamProducerPresentFrame–m_OutputStreamConnection
cuEGLStreamConsumerReleaseFrame

Consumer Process:
EGLStreamSendfd --FIFO
cuEGLStreamConsumerConnect–cudaConnection
cuEGLStreamProducerConnect–m_cudaRGBAStreamConnection
cuEGLStreamConsumerAcquireFrame–cudaConnection
cuGraphicsResourceGetMappedEglFrame
cuEGLStreamProducerPresentFrame–m_cudaRGBAStreamConnection
cuEGLStreamConsumerReleaseFrame–cudaConnection
EGLGlobal.cpp (19.4 KB)
main.cpp (31.8 KB)

Dear @happy886,
Could you confirm if the issue related to DRIVE AGX platform?


agx xavier

i change the issue to jetson AGX Xavier

Hi,
Please share your release version for reference:

$ cat /etc/nv_tegra_release



just on the pic,producer fps:30,consumer acquered fps:30,nveglstreamsrc record mp4 file only 2 fps

Hi happy886,

Please share the Makefile, make command and detail steps.
We can try to reproduce your issue.

how about the issue?

hi,how about this issue?

Hi,
Somehow we are not able to see 30fps in running the sample. We have checked the code and there is another gstreamer pipeline:

m_pipeline = gst_parse_launch("nveglstreamsrc name=egl_src ! video/x-raw(memory:NVMM),format=NV12,width=1920,height=1080,framerate=30/1  ! nvvidconv ! fpsdisplaysink video-sink=fakesink --verbose ",NULL);

If you run this pipeline, do yo observe 30fps?

no fps info printf;
static void cb_fps_measurements(GstElement *fpsdisplaysink,gdouble arg0,gdouble arg1,gdouble arg2,gpointer user_data)
{
printf("###dropped: %.0f, current: %.2f, average: %.2f\n", arg1, arg0, arg2);
}

GstElement *fpsSink=gst_bin_get_by_name(GST_BIN(m_pipeline),“fpssink”);
if(!GST_IS_ELEMENT(fpsSink))
ORIGINATE_ERROR(“Failed to get video pipeline fpsSink”);
//g_object_set(G_OBJECT(fpsSink), “last-message”,&fps_msg, NULL);
g_object_set(G_OBJECT(fpsSink), “signal-fps-measurements”,true, NULL);
g_signal_connect (fpsSink, “fps-measurements”, G_CALLBACK(cb_fps_measurements), NULL);

main.cpp (26.9 KB)

Hi,
Do you still hit this issue after switching to mailbox mode? Would like to know if this suggestion:
Cross eglstream copy CUeglFrame failed - #3 by DaneLLL
also helps this use-case.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.