Accelerated Gstreamer packages for R35.5.0 / R35.4.1

Hello,

I am generating a root filesystem for Jetson Linux R35.5.0 in order to test the latest Accelerated Gstreamer packages.

According to the sources, there should be more properties available to some elements that are useful. For example, the nvarguscamerasrc element has new properties “acquire-wait” and “event-wait” according to the source: https://nv-tegra.nvidia.com/r/plugins/gitiles/tegra/gst-src/gst-nvarguscamera/+/refs/heads/l4t/l4t-r35.4.ga/gst-nvarguscamera/gstnvarguscamerasrc.cpp#2080

But when I installed the L4T-Base container for R35.5.0 (per this) and installed accelerated gstreamer, I did not get the expected new properties in any elements. Here is what I get in my R35.5.0 container:

(I can attach the text version of this if required.)

Are the debian packages for >R35.3.1 being built from the correct sources?

Attached is my Dockerfile:
R35.5_Dockerfile.txt (3.0 KB)

Thanks very much for your time.

For more context, the “acquire-wait” and “event-wait” properties matter to me because I am trying to solve a problem very similar to this one: Some basic problems with nvarguscamerasrc plugin for gstreamer

The OP in that thread had to recompile gstnvarguscamerasrc.cpp from source to get those. Ideally I would like to just download the latest package from the repos here rather than building from source, because I would like to test quickly to see if it solves my problem.

R35.5 default release included it.

root@tegra-ubuntu:/sys/kernel/debug/bpmp/debug/clk# gst-inspect-1.0 nvarguscamerasrc

Factory Details:
  Rank                     primary (256)
  Long-name                NvArgusCameraSrc
  Klass                    Video/Capture
  Description              nVidia ARGUS Camera Source
  Author                   Viranjan Pagar <vpagar@nvidia.com>, Amit Pandya <apandya@nvidia.com>

Plugin Details:
  Name                     nvarguscamerasrc
  Description              nVidia ARGUS Source Component
  Filename                 /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstnvarguscamerasrc.so
  Version                  1.0.0
  License                  Proprietary
  Source module            nvarguscamerasrc
  Binary package           NvARGUSCameraSrc
  Origin URL               http://nvidia.com/

GObject
 +----GInitiallyUnowned
       +----GstObject
             +----GstElement
                   +----GstBaseSrc
                         +----GstNvArgusCameraSrc

Pad Templates:
  SRC template: 'src'
    Availability: Always
    Capabilities:
      video/x-raw(memory:NVMM)
                  width: [ 1, 2147483647 ]
                 height: [ 1, 2147483647 ]
                 format: { (string)NV12 }
              framerate: [ 0/1, 2147483647/1 ]

Element has no clocking capabilities.
Element has no URI handling capabilities.

Pads:
  SRC: 'src'
    Pad Template: 'src'

Element Properties:
  acquire-wait        : Set the waiting time for the acquireFrame before timeout. Default 5000000000 (in nanosec)
                        flags: readable, writable
                        Unsigned Integer64. Range: 5000000000 - 18446744073709551615 Default: 5000000000
  aeantibanding       : property to set the auto exposure antibanding mode
                        flags: readable, writable
                        Enum "GstNvArgusCamAeAntiBandingMode" Default: 1, "AeAntibandingMode_Auto"
                           (0): AeAntibandingMode_Off - GST_NVCAM_AEANTIBANDING_OFF
                           (1): AeAntibandingMode_Auto - GST_NVCAM_AEANTIBANDING_AUTO
                           (2): AeAntibandingMode_50HZ - GST_NVCAM_AEANTIBANDING_50HZ
                           (3): AeAntibandingMode_60HZ - GST_NVCAM_AEANTIBANDING_60HZ
  aelock              : set or unset the auto exposure lock
                        flags: readable, writable
                        Boolean. Default: false
  aeregion            : Property to set region of interest for auto exposure
                        with values of ROI coordinates (left, top, right, bottom)
                        and weight (float number) in that order, to set the property
                        use for example: aeregion="0 0 256 256 1"
                        flags: readable, writable
                        String. Default: null
  awblock             : set or unset the auto white balance lock
                        flags: readable, writable
                        Boolean. Default: false
  blocksize           : Size in bytes to read per buffer (-1 = default)
                        flags: readable, writable
                        Unsigned Integer. Range: 0 - 4294967295 Default: 4096
  do-timestamp        : Apply current stream time to buffers
                        flags: readable, writable
                        Boolean. Default: true
  ee-mode             : property to select edge enhnacement mode
                        flags: readable, writable
                        Enum "GstNvArgusCamEEMode" Default: 1, "EdgeEnhancement_Fast"
                           (0): EdgeEnhancement_Off - GST_NVCAM_EE_OFF
                           (1): EdgeEnhancement_Fast - GST_NVCAM_EE_FAST
                           (2): EdgeEnhancement_HighQuality - GST_NVCAM_EE_HIGHQUALITY
  ee-strength         : property to adjust edge enhancement strength
                        flags: readable, writable
                        Float. Range:              -1 -               1 Default:              -1
  event-wait          : Set the waiting time for the event before timeout. Default 3000000000 (in nanosec)
                        flags: readable, writable
                        Unsigned Integer64. Range: 3000000000 - 18446744073709551615 Default: 3000000000
  exposurecompensation: property to adjust exposure compensation
                        flags: readable, writable
                        Float. Range:              -2 -               2 Default:               0
  exposuretimerange   : Property to adjust exposure time range in nanoseconds
                        Use string with values of Exposure Time Range (low, high)
                        in that order, to set the property.
                        eg: exposuretimerange="34000 358733000"

Unfortunately I am unable to find that in the Docker container.

Maybe the updated version of the dpkg is available in the downloadable BSP tbz2, but not updated in the APT repo?

To be sure that it wasn’t an issue with my Dockerfile, I also tried with R35.4.1 because that is also supposed to have the updated source (with the “acquire-wait” property in nvarguscamerasrc). R35.4.1 does have an official Docker tag in L4T-Base containers, unlike R35.5.0:

docker pull nvcr.io/nvidia/l4t-base:35.4.1

But I got the same issue. The “acquire-wait” property is missing, it should be the first property:

Here is my Dockerfile for R35.4.1: R35.4_Dockerfile.txt (642 Bytes)

And here is how I launched the container on AGX Xavier (with flags to connect to nvargus-daemon on the Xavier host):

sudo docker run --runtime nvidia --ipc=host -v /tmp/.X11-unix/:/tmp/.X11-unix/ -v /tmp/argus_socket:/tmp/argus_socket --cap-add SYS_PTRACE -it --rm l4t-gst-35.4.1:only_gst_cuda

I think I’ve figured it out. It’s not possible to do in a Docker container on Jetson because the L4T-Base Docker will actually link to the host libraries. In my case, the host Jetson version is R35.3, so the new property are absent in those libraries “within” the container.

Presumably, running the rootfs in l4t-base:35.4.1 (including the install of nvidia-l4t-gstreamer) natively on the Jetson will yield the correct versions of packages, but I will test that later.