Unable find avdec_h264 after intsalled gstreamer plug-ins into Jetson AGX Orin

Found avdec_h264 (H264 decoder) not install on Jetson AGX Orin. is it not supported? Here is my Jerson AGX Orin system info generated from command line “jetson_release”
$ jetson_release

  • NVIDIA Jetson UNKNOWN
    • Jetpack UNKNOWN [L4T 35.1.0]
    • NV Power Mode: MAXN - Type: 0
    • jetson_stats.service: active
  • Libraries:
    • CUDA: NOT_INSTALLED
    • cuDNN: 8.4.1.50
    • TensorRT: 8.4.1.5
    • Visionworks: NOT_INSTALLED
    • OpenCV: 4.5.4 compiled CUDA: NO
    • VPI: ii libnvvpi2 2.1.6 arm64 NVIDIA Vision Programming Interface library
    • Vulkan: 1.3.203

Below here is use gst inspector to check the decoder feature on Jetson AGX Orin:

$ gst-inspect-1.0 | grep avdec

$ gst-inspect-1.0 | grep h264
uvch264: uvch264src: UVC H264 Source
uvch264: uvch264mjpgdemux: UVC H264 MJPG Demuxer
videoparsersbad: h264parse: H.264 parser
rtp: rtph264pay: RTP H264 payloader
rtp: rtph264depay: RTP H264 depayloader
typefindfunctions: video/x-h264: h264, x264, 264
nvvideo4linux2: nvv4l2h264enc: V4L2 H.264 Encoder

$ gst-inspect-1.0 | grep 264
uvch264: uvch264src: UVC H264 Source
uvch264: uvch264mjpgdemux: UVC H264 MJPG Demuxer
videoparsersbad: h264parse: H.264 parser
rtp: rtph264pay: RTP H264 payloader
rtp: rtph264depay: RTP H264 depayloader
typefindfunctions: video/x-h264: h264, x264, 264
x264: x264enc: x264enc
nvvideo4linux2: nvv4l2h264enc: V4L2 H.264 Encoder

Hi,
We can see the plugin on Jetpack 5.0.2:

nvidia@ubuntu:~$ gst-inspect-1.0 avdec_h264
Factory Details:
  Rank                     primary (256)
  Long-name                libav H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 decod
er
  Klass                    Codec/Decoder/Video
  Description              libav h264 decoder
  Author                   Wim Taymans <wim.taymans@gmail.com>, Ronald Bultje <r
bultje@ronald.bitfreak.net>, Edward Hervey <bilboed@bilboed.com>

Plugin Details:
  Name                     libav
  Description              All libav codecs and formats (system install)
  Filename                 /usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstlibav.
so
  Version                  1.16.2
  License                  LGPL
  Source module            gst-libav
  Binary package           GStreamer libav Plugins (Ubuntu)
  Origin URL               https://launchpad.net/distros/ubuntu/+source/gst-liba
v1.0

GObject
 +----GInitiallyUnowned
:

If you cannot see it, you may clean the cache and try again:

$ rm .cache/gstreamer-1.0/registry.aarch64.bin

The avdec_h264 plugin is software decoder. For better performance, suggest use hardware decoder nvv4l2decoder plugin.

You may try installing ffmpeg, that would install the missing library libgstlibav.so

sudo apt install ffmpeg

still cannot find after clean, even re-install all the gstreamer plugins and ffmpeg, still unable to see avdec_264 element detected. Also clean the .cache which advised by Danell, thank you.

$ sudo apt install ffmpeg
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following packages were automatically installed and are no longer required:
apg cheese-common evince-common gir1.2-rb-3.0 gir1.2-totem-1.0 gir1.2-totemplparser-1.0 gnome-control-center-faces
gnome-online-accounts grilo-plugins-0.3-base libcolord-gtk1 libdjvulibre-text libdjvulibre21 libdmapsharing-3.0-2
libevdocument3-4 libgoa-backend-1.0-1 libgom-1.0-0 libgpod-common libgpod4 libgrilo-0.3-0 libgsound0 libgupnp-av-1.0-2
libgupnp-dlna-2.0-3 libkpathsea6 liblua5.3-0 libmediaart-2.0-0 librhythmbox-core10 librygel-core-2.6-2 librygel-db-2.6-2
librygel-renderer-2.6-2 librygel-server-2.6-2 libsgutils2-2 libspectre1 libsynctex2 libsysmetrics1 libtotem0
media-player-info mobile-broadband-provider-info network-manager-gnome python3-brlapi python3-louis python3-macaroonbakery
python3-mako python3-markupsafe python3-protobuf python3-pyatspi python3-pymacaroons python3-rfc3339 python3-speechd
rhythmbox-data rygel totem-common xbrlapi
Use ‘sudo apt autoremove’ to remove them.
Suggested packages:
ffmpeg-doc
The following NEW packages will be installed:
ffmpeg
0 upgraded, 1 newly installed, 0 to remove and 117 not upgraded.
Need to get 1,440 kB of archives.
After this operation, 2,021 kB of additional disk space will be used.
Get:1 Index of /ubuntu-ports focal-updates/universe arm64 ffmpeg arm64 7:4.2.7-0ubuntu0.1 [1,440 kB]
Fetched 1,440 kB in 2s (898 kB/s)
debconf: delaying package configuration, since apt-utils is not installed
Selecting previously unselected package ffmpeg.
(Reading database … 163266 files and directories currently installed.)
Preparing to unpack …/ffmpeg_7%3a4.2.7-0ubuntu0.1_arm64.deb …
Unpacking ffmpeg (7:4.2.7-0ubuntu0.1) …
Setting up ffmpeg (7:4.2.7-0ubuntu0.1) …
Processing triggers for man-db (2.9.1-1) …

$ rm .cache/gstreamer-1.0/registry.aarch64.bin
$ gst-inspect-1.0 | grep h264
uvch264: uvch264src: UVC H264 Source
uvch264: uvch264mjpgdemux: UVC H264 MJPG Demuxer
nvvideo4linux2: nvv4l2h264enc: V4L2 H.264 Encoder
videoparsersbad: h264parse: H.264 parser
rtp: rtph264pay: RTP H264 payloader
rtp: rtph264depay: RTP H264 depayloader
typefindfunctions: video/x-h264: h264, x264, 264

cpmusr@pglunvd07:~$ gst-inspect-1.0 avdec_h264
No such element or plugin ‘avdec_h264’
cpmusr@pglunvd07:~$ uname -a
Linux pglunvd07 5.10.104-tegra #1 SMP PREEMPT Wed Aug 10 20:17:07 PDT 2022 aarch64 aarch64 aarch64 GNU/Linux
cpmusr@pglunvd07:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.4 LTS
Release: 20.04
Codename: focal
cpmusr@pglunvd07:~$ dpkg -l ffmpeg
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
++±==============-==================-============-================================================================
ii ffmpeg 7:4.2.7-0ubuntu0.1 arm64 Tools for transcoding, streaming and playing of multimedia files

You may try:

rm ~/.cache/gstreamer-1.0/registry.aarch64.bin
LD_PRELOAD=/usr/lib/aarch64-linux-gnu/libgomp.so.1 gst-inspect-1.0
gst-inspect-1.0 | grep h264
2 Likes

Hi,
Is it possible to re-install Jetpack 5.0.2 through SDKManager and try again?

Hi Pat,
it is working after have environment variable given on system. Would like to understand what is the problem on this?

From what I’ve understood, the GNU TLS2 model which aarch64 uses unfortunately eats from the same TLS preallocated pool as libraries that require static TLS like libgomp, where it is performance critical to have it as static TLS.
So, preloading libgomp is a workaround.

Note that it may depend on some packages installed in your system. I faced the same on a XavierNX but don’t need that with my Orin (both JP-5.0.2)

2 Likes

Thanks your solution and it’s resolve me issues, thank yo.

I can’t find the avdec_h264/h265 either.

and I tried the following:

gst-inspect-1.0 --print-blacklist

and I got

(gst-plugin-scanner:12344): GStreamer-WARNING **: 06:39:06.843: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstlibav.so': /lib/aarch64-linux-gnu/libavcodec.so.58: undefined symbol: v4l2_open
(gst-plugin-scanner:12344): GStreamer-WARNING **: 06:39:07.055: Failed to load plugin '/usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstchromaprint.so': /lib/aarch64-linux-gnu/libavcodec.so.58: undefined symbol: v4l2_open
Blacklisted files:
  libgstchromaprint.so
  libgstlibav.so

both errors point to undefined symbol: v4l2_open.

This is a different issue. Please create a new topic for your case.

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