Nvgstplayer-1.0 can not playback the 3GP/ASF video files on L4T R32.5.1

Hi All,

I found an issue that the nvgstplayer-1.0 could not playback the 3GP/ASF files on L4T R32.5.1. The developer guide shows that the nvgstplayer-1.0 supports those video types. The link as show below:
[https://docs.nvidia.com/jetson/l4t/index.html#page/Tegra%20Linux%20Driver%20Package%20Development%20Guide/multimedia.html#wwpID0E0AC0HA]

For example, I would like to playback the H.263 3GP video file and I typed the command as below :
$ nvgstplayer-1.0 -i TestFile03_H263.3gp
And it will show the error messages as below:

** Message: 02:14:55.398: <main:3999> iterating...
** Message: 02:14:55.398: <goto_next_track:911> uriCount: 0,  uriTotal: 1
** Message: 02:14:55.404: <on_input:577> pausing
** Message: 02:14:55.563: <bus_call:1195> redistribute the latency...
** Message: 02:14:55.565: <cb_newpad:2089> creating the pipe for "video/x-raw, format=(string)I420"
** Message: 02:14:55.640: <cb_newpad:2089> creating the pipe for "audio/x-raw, layout=(string)interleaved, format=(string)F32LE"

(nvgstplayer-1.0:10480): GLib-CRITICAL **: 02:14:55.665: g_array_remove_index: assertion 'index_ < array->len' failed

(nvgstplayer-1.0:10480): GStreamer-CRITICAL **: 02:14:55.665: gst_caps_remove_structure: assertion 'idx <= gst_caps_get_size (caps)' failed

(nvgstplayer-1.0:10480): GStreamer-CRITICAL **: 02:14:55.665: gst_caps_remove_structure: assertion 'idx <= gst_caps_get_size (caps)' failed

(nvgstplayer-1.0:10480): GStreamer-CRITICAL **: 02:14:55.666: gst_structure_set_parent_refcount: assertion 'refcount != NULL' failed

(nvgstplayer-1.0:10480): GStreamer-CRITICAL **: 02:14:55.666: gst_caps_features_set_parent_refcount: assertion 'refcount != NULL' failed
free(): invalid pointer
Aborted (core dumped)

I try to use the gst-launcher-1.0 to playback this video and it works.
The command as below:
$ gst-launch-1.0 filesrc location=TestFile03_H263.3gp ! qtdemux ! h263parse ! avdec_h263 ! nveglglessink

Please give me any suggestions, Thanks!

Best Regards,
Michael

For EGL display you would try something like:

gst-launch-1.0 uridecodebin uri=file:///home/nvidia/Downloads/Lightbulbs\ Moving\ in\ the\ Wind.3gp ! nvvidconv ! nvegltransform ! nveglglessink

# Or explicitly:
gst-launch-1.0 filesrc location=./Downloads/Lightbulbs\ Moving\ in\ the\ Wind.3gp ! qtdemux ! h263parse ! avdec_h263 ! nvvidconv ! nvegltransform ! nveglglessink

Hi,
The issue looks specific to playing TestFile03_H263.3gp. PLease try Honey_Patouceul’s suggestion. If the issue is still present, please share the video so that we can try to reproduce the issue.

Hi All,

Thanks for your reply, I used the gst-launcher-1.0 to playback this video successfully in previous time.

The command as below:
$ gst-launch-1.0 filesrc location=TestFile03_H263.3gp ! qtdemux ! h263parse ! avdec_h263 ! nveglglessink

The nvgstplayer-1.0 can playback this video successfully in previous L4T version. But if upgraded to R32.5.1. It will not working.

The video file as attached file. Thanks.

Best Regards,
Michael

Hi,
We should have it fixed in
TX2 nvgstplayer local playback on R32.2 - #4 by DaneLLL

The patch should be in nvgstplayer-1.0. Please download the source code and check again.

Hi @DaneLLL

I also checked this post on yesterday.
The L4T R32.5.1 nvgstplayer-1.0 source codes already applied this patch . But still not working.

Best Regards,
Michael

Have you tried my suggestions ?

avdec_h263 only outputs into standard CPU memory (video/x-raw).
With these caps you can use xvimagesink (may require videoconvert in between).

For using nveglglesink, you may copy to NVMM memory with nvvidconv; then prepare GL image with nvegltransorm.

Hi @Honey_Patouceul

Yes, you suggestion is working, the command as below:

$ gst-launch-1.0 filesrc location=TestFile03_H263.3gp ! qtdemux ! h263parse ! avdec_h263 ! nvvidconv ! nvegltransform ! nveglglessink

But I don’t know why the nvgstplayer-1.0 is not working in L4T R32.5.1 when playback this video.

Thanks.

Hi,
Please try

~$ nvgstplayer-1.0 -i file:///home/nvidia/TestFile03_H263.3gp --svs=nveglglessink

Hi @DaneLLL

It’s working now, thanks!

Hi,
If you would like to rebuild nvgstplayer-1.0, please apply this patch:

@@ -2329,10 +2317,6 @@ autoplug_select (GstElement * dbin, GstPad * pad, GstCaps * caps,
                            g_strcmp0(name, "image/png") &&
                            g_strcmp0(name, "video/x-h263"))
             app->svd = g_strconcat (NVGST_DEFAULT_VIDEO_DEC, NULL);
-          if (!g_strcmp0(name, "image/jpeg") ||
-              !g_strcmp0(name, "image/png") ||
-              !g_strcmp0(name, "video/x-h263"))
-            need_nvvidconv = TRUE;
           in->video_dec = get_keys (caps, NVGST_VIDEO_DEC, app->svd);

           if (in->video_dec) {