what's the difference between gstreamer and multimedia api


We want to evaluate TX2’s video encode&decode efficiency and performance, as i know, gstreamer and multimeida api can both run video encode&decode test case, but what’s the difference between gstreamer and multimedia api?

Which one should I choose for video encode&decode, so that we can get a fairly test result.

Try both, and see which one performs better?

Hi Yugui, please pick your familiar one. Both are with same performance listed in [Software Features]

Hi snarky,

I hope nvidia can explain more detail about the difference between these two video encode methods, so we will work this more efficiently.

Hi Yugui, what detail you would like to know is not in documentation?

Hi DaneLLL,

Thanks for your reply. From the documentation, I find no much information about their difference, but there is introduction for GStreamer:

GStreamer Framework:
Provides a higher-level Multimedia API. This framework provides a parallel capability to the collection of APIs in the Low-Level Multimedia API.
The GStreamer framework is installed with the download for the Jetson Driver. It is also installed by NVIDIA JetPack.

How to understand the “higher-level”, does it means GStreamer can performance better than Multimedia API?

Hi Yugui,
No, it does not mean it.

gstreamer app -> gstreamer stack -> omx-il stack -> HW driver
Multimedia API app -> v4l2 stack -> HW drivers

A gstreamer app passes through more stacks.

Hi DaneLLL,

I get it, did you do some tests to compare their video codec performance? for example, for the same YUV input source, if I set fixQP QP=20 for H.265 encoder, is there any difference for their output stream?

By the way, where can I find GStreamer source code? I know Multimedia API source code is in Tegra_Multimedia_API_R27.1.0_aarch64.tbz2.

However, I’d rather use

apt search gstreamer

which returns smth. like:

gstreamer1.0-plugins-base-apps/xenial-updates,xenial-security,now 1.8.3-1ubuntu0.2 arm64 [installed,automatic]
  GStreamer helper programs from the "base" set

gstreamer1.0-plugins-base-dbg/xenial-updates,xenial-security 1.8.3-1ubuntu0.2 arm64
  GStreamer plugins from the "base" set

gstreamer1.0-plugins-base-doc/xenial-updates,xenial-security 1.8.3-1ubuntu0.2 all
  GStreamer documentation for plugins from the "base" set

gstreamer1.0-plugins-good/xenial-updates,xenial-security,now 1.8.3-1ubuntu0.4 arm64 [installed,automatic]
  GStreamer plugins from the "good" set


and than apt-get install