NDI5 linux SDK fails to decode NDI|HXv2 stream for Panasonic AW-UE40

fredc

New member
Trying to stream an NDI|HX stream from a Panasonic AW-UE40 (NDI|HX activated)
on Linux fails with a static image with NDI logo and "Video decoder not found"
as shown is the attached 'video_decoder_not_found.png'

Camera model:​

Model: AW-EU40WEJ
Firmware Version: V01.17 (latest)

Linux OS:​

Debian 11

Reproduction steps:​

0. create an ndi_test folder

# mkdir ~/ndi_test; cd ~/ndi_test

1. get the NDI5 Advanced SDK for linux: https://www.ndi.tv/sdk/#download

* fill the form, and download the archive (Install_NDI_Advanced_SDK_v5_Linux.tar.gz)
* from the ndi_test extract the archive:
Code:
tar -xzf /path/to/Install_NDI_Advanced_SDK_v5_Linux.tar.gz
* run the install script and accept the EULA:
Code:
sh Install_NDI_Advanced_SDK_v5_Linux.sh
* check that you have a 'NDI Advanced SDK for Linux' folder

2. get the libndihx lib for linux

* dowload it
Code:
curl -L -o libndihx.tgz "https://onedrive.live.com/download.aspx?cid=D5F67F9D8A6754B4&authKey=%21AM8jG3BG0OqAfP4&resid=D5F67F9D8A6754B4%213923&ithint=%2Egz"
* extract the archive:
Code:
tar -xzf libndihx.tgz

* run the install script and accept the EULA:
Code:
sh NDIHXDriverForLinux.sh
* check that you have a 'NDIHXDriverForLinux' folder

4. Setup you working env, to avoid cluttering the fs we will use library
locally with LD_LIBRARY_PATH:
Code:
export LD_LIBRARY_PATH=NDI\ Advanced\ SDK\ for\ Linux/lib/x86_64-linux-gnu:NDIHXDriverForLinux/x86_64-linux-gnu


3. build the `NDIlib_Recv_PNG` example, I choose this example as it is
minimalist and allow us to easily get grab an image, but the example need some
adjustment to be able to select the camera and also to skip audio frames

* Apply the here-attached patch:
Code:
patch -d NDI\ Advanced\ SDK\ for\ Linux -p0 < NDIlib_Recv_PNG.txt
* build NDIlib_Recv_PNG
Code:
make -C NDI\ Advanced\ SDK\ for\ Linux/examples/C++
* run the test (the camera NDI name is `AW-UE40 (NDI_Device-000000000)`
Code:
NDI\ Advanced\ SDK\ for\ Linux/examples/C++/NDIlib_Recv_PNG/NDIlib_Recv_PNG "AW-UE40 (NDI_Device-000000000)"

If everything went well you shall see a `CoolNDIImage.png` created in the
current directory, and unfortunately this image does not show the camera view
but the "video decoder not found" static image

Notes:​

* the same procedure work fine (I get a valid picture) with other NDI|HX
devices (Sony SRG-X400, kiloview E2, ...)

* also tested on NDI5 SDK with the same results

* I check that the libndi*.so are correctly used with `LD_DEBUG=libs NDI\
Advanced\ SDK\ for\ Linux/examples/C++/NDIlib_Recv_PNG/NDIlib_Recv_PNG
"AW-UE40 (NDI_Device-000000000)`

* Using GStreamer gst-plugin-ndi (https://github.com/teltek/gst-plugin-ndi) I
can reproduce the issue.
Code:
gst-launch-1.0 ndisrc ndi-name="AW-UE40 (NDI_Device-000000000)" ! ndisrcdemux name=ndi ndi.video ! queue max-size-buffers=0 max-size-bytes=0  max-size-time=0 ! videoconvert ! autovideosink ndi.audio ! queue max-size-buffers=0 max-size-bytes=0 max-size-time=0 ! fakesink --gst-debug=3 -v

* Using GStreamer gst-plugin-ndi built with advanced feature and choosing to
get compressed format I can have good image, which means that the camera is
not the root cause.
Code:
gst-launch-1.0 ndisrc ndi-name="AW-UE40 (NDI_Device-000000000)" color-format=compressed-v4 ! ndisrcdemux name=ndi ndi.video ! queue ! h264parse ! avdec_h264 ! videoconvert ! autovideosink ndi.audio ! queue leaky=upstream ! fakesink --gst-debug=3 -v

* when getting compressed through GST frame I get the following h264 format:
caps = video/x-h264, width=(int)1920, height=(int)1080, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1, interlace-mode=(string)progressive, stream-format=(string)byte-stream, alignment=(string)au, chroma-format=(string)4:2:0, bit-depth-luma=(uint)8, bit-depth-chroma=(uint)8, colorimetry=(string)2:4:5:1, parsed=(boolean)true, profile=(string)high, level=(string)4`

From my understanding the issue seems to be in the libndi*.so library as I am
able to decode compressed frame and get the correct picture.

The camera is sending valid data, but it seems that libndi*.so does not
support this profile or detect an error and decide to not decode it.

The strange thing is that under the hood NDI rely on libavcodec for the
decoding of H264, which is also used with success in the Gstreamer compress
scenario.

A sample of an H264 stream sent by the camera and collected with the GST compressed scenario is available here: https://nextcloud.ubicast.net/s/p8PznZHsWkXEzb6 (not possible to attach h264 file to this forum)

I hope that some NDI tech could help me understanding what is going on, if you need more details feel free to ask.

Thanks for your help.
 

Attachments

  • video_decoder_not_found.png
    video_decoder_not_found.png
    332.6 KB · Views: 158
  • NDIlib_Recv_PNG.txt
    3 KB · Views: 165
Hi,

No the issue is still here with this camera, Panasonic is also in touch and we expect that the issue will be resolved with a new camera FW.
 
Hi,

Do you have any solution for this issue? Or do you ask the support team?

I have the quite same bug in ubuntu18 with NDI-HX (ndi5.5.3)

thanks
 
Last edited:
Hi,

After some investigation it appeared that the issue was on Panasonic side (bad extradata sent that lead to FFmpeg error),

For the AW-UE40, Panasonic let me test a beta FW that fix the issue, but it is not still released.
From one of our client we also get notified that AW-UE150 now works on Liunx in NDI|HX with the latest Firmware Version 03.04.

So I would say that the bug is fixed on recent FW (post 2023) see https://eww.pass.panasonic.co.jp/pro-av/support/content/download/EN/top.html add check if changlog contains

NDI transmission may not work in Ubuntu environment. This problem has been fixed.



 
I really appreciate your reply. Im using an Avonic camera with ominous error message.

Could you share me a download path for your "libndihx lib for linux"? Maybe it will help me.

Thank you!
 
Hi, unfortunately this issue only concern Panasonic NDI|HX compatible camera not Avionic, and the fix is in Panasonic FW.

For the "libndihx lib for linux" you shall ask NDI directly, some (old NDI|HXv1) indeed needs this lib on Linux to work, maybe it is the case for you, but it is totally unrelated to the Panasonic issue AFAIU.
 
Back
Top