Gstreamer jpeg timestamp or metadata

Hi, it is continuation of this topic: Write jpeg faster from 6 cameras

In cpp code i can access frame metadata.
But how do it from gstreamer pipeline?

Hi,
Our gstreamer plugins are open source and you can do customization based on jetson_multimedia_api. Please download the source code package and follow the READMEs to build the plugins. For this use-case, you can customize either nvarguscamerasrc or nvvidconv plugin to add code of getting metadata.

The link of source code package:
https://developer.nvidia.com/embedded/linux-tegra-r3271

L4T Driver Package (BSP) Sources

Thank you.

I made test.

My cpp code works same as gst nvarguscamera plugin.

Max framerate 8FPS for 12MP resolution.

Here is results:

Gst pipeline:

gst-launch-1.0 -v \
 nvarguscamerasrc sensor-id=0 sensor-mode=0 exposuretimerange="0 300000000" aelock=false awblock=false ee-mode=0 gainrange="1 1" ispdigitalgainrange="1 1" ! 'video/x-raw(memory:NVMM),format=NV12,width=4032,height=3040,framerate=8/1' ! nvjpegenc ! queue ! multifilesink location=cam0_%03d.jpg \
 nvarguscamerasrc sensor-id=1 sensor-mode=0 exposuretimerange="0 300000000" aelock=false awblock=false ee-mode=0 gainrange="1 1" ispdigitalgainrange="1 1" ! 'video/x-raw(memory:NVMM),format=NV12,width=4032,height=3040,framerate=8/1' ! nvjpegenc ! queue ! multifilesink location=cam1_%03d.jpg \
 nvarguscamerasrc sensor-id=2 sensor-mode=0 exposuretimerange="0 300000000" aelock=false awblock=false ee-mode=0 gainrange="1 1" ispdigitalgainrange="1 1" ! 'video/x-raw(memory:NVMM),format=NV12,width=4032,height=3040,framerate=8/1' ! nvjpegenc ! queue ! multifilesink location=cam2_%03d.jpg \
 nvarguscamerasrc sensor-id=3 sensor-mode=0 exposuretimerange="0 300000000" aelock=false awblock=false ee-mode=0 gainrange="1 1" ispdigitalgainrange="1 1" ! 'video/x-raw(memory:NVMM),format=NV12,width=4032,height=3040,framerate=8/1' ! nvjpegenc ! queue ! multifilesink location=cam3_%03d.jpg \
 nvarguscamerasrc sensor-id=4 sensor-mode=0 exposuretimerange="0 300000000" aelock=false awblock=false ee-mode=0 gainrange="1 1" ispdigitalgainrange="1 1" ! 'video/x-raw(memory:NVMM),format=NV12,width=4032,height=3040,framerate=8/1' ! nvjpegenc ! queue ! multifilesink location=cam4_%03d.jpg \
 nvarguscamerasrc sensor-id=5 sensor-mode=0 exposuretimerange="0 300000000" aelock=false awblock=false ee-mode=0 gainrange="1 1" ispdigitalgainrange="1 1" ! 'video/x-raw(memory:NVMM),format=NV12,width=4032,height=3040,framerate=8/1' ! nvjpegenc ! queue ! multifilesink location=cam5_%03d.jpg
 
 

Here is output:
We can see all 6 cameras. If set 10FPS then only 4 cameras will produced.

45 93453492433000
46 93453492433000
46 93453492422000
46 93453492433000
	47 93453617422000
	47 93453617411000
	45 93453617422000
	47 93453617422000
	47 93453617422000
	46 93453617422000
48 93453742412000
48 93453742412000
48 93453742401000
46 93453742412000
48 93453742412000
47 93453742412000

49 93453867401000
48 93453867401000
47 93453867401000
49 93453867401000
49 93453867401000
49 93453867390000

50 93453992391000
48 93453992391000
50 93453992391000
50 93453992391000
49 93453992391000
50 93453992380000

51 93454117369000
50 93454117380000
51 93454117380000
51 93454117380000
49 93454117380000
51 93454117380000
50 93454242370000
51 93454242370000
52 93454242359000

Here is gst nvargus plugin and added few lines with hardware timestamps getSensorSofTimestampTsc():

gstnvarguscamerasrc.cpp (81.4 KB)

And the question to Nvidia: why nvargus locks acquire, why it is not multithreading?

Hi,
It is multithreading in low-level code for capturing frame data. In nvarguscamerasrc plugin, it allocates single NvBuffer. For further enhancement, you can create multiple NvBuffer for buffering frame data and acquireFrame() can be called immediately.

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