gst-plugins-bad nvdec element doesn't work

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

gst-plugins-bad nvdec element doesn't work

bronstein87

 system: win10 x64, compiler msvc 2015 x64, gstreamer version 1.16.2  

Hi. I rebuilt gst-plugins-bad to enable support of nvidia accelerated decoding (nvdec). It works when i run it from gst-launch-1.0:
gst-launch-1.0 filesrc location=D:/test_nvdec/jumanji.mp4 ! qtdemux ! h264parse ! nvdec ! glimagesink sync=false

but when i run same pipeline in my project:

    qputenv("GST_DEBUG", "2");
    QString pipeLine = QString("filesrc location=D:/test_nvdec/jumanji.mp4 ! qtdemux ! h264parse ! nvdec ! videoconvert ! appsink sync = false");
    cv::VideoCapture cap(pipeLine.toStdString(), cv::CAP_GSTREAMER);
    if (cap.isOpened())
    {
        Mat frame;
        cap >> frame;
        imwrite("D:/test.png", frame);
    }
it gives me errors:

0:00:00.165703000 26304 000001FFC4CF5E70 WARN basesrc gstbasesrc.c:3600:gst_base_src_start_complete:<filesrc0> pad not activated yet

0:00:00.166446000 26304 000001FFC4CD29C0 WARN qtdemux qtdemux_types.c:240:qtdemux_type_get: unknown QuickTime node type gsst

0:00:00.166577000 26304 000001FFC4CD29C0 WARN qtdemux qtdemux_types.c:240:qtdemux_type_get: unknown QuickTime node type gstd

0:00:00.166747000 26304 000001FFC4CD29C0 WARN qtdemux qtdemux.c:3238:qtdemux_parse_trex:<qtdemux0> failed to find fragment defaults for stream 1

0:00:00.166981000 26304 000001FFC4CD29C0 WARN qtdemux qtdemux.c:3238:qtdemux_parse_trex:<qtdemux0> failed to find fragment defaults for stream 2

0:00:00.168948000 26304 000001FFC4CD29C0 WARN default grammar.y:510:gst_parse_no_more_pads:<qtdemux0> warning: Delayed linking failed.

0:00:00.169078000 26304 000001FFC4CD29C0 WARN default grammar.y:510:gst_parse_no_more_pads:<qtdemux0> warning: failed delayed linking some pad of GstQTDemux named qtdemux0 to some pad of GstH264Parse named h264parse0

0:00:00.169337000 26304 000001FFC4CD29C0 WARN qtdemux qtdemux.c:6605:gst_qtdemux_loop:<qtdemux0> error: Internal data stream error.

0:00:00.169460000 26304 000001FFC4CD29C0 WARN qtdemux qtdemux.c:6605:gst_qtdemux_loop:<qtdemux0> error: streaming stopped, reason not-linked (-1)


(gametrack_modules.exe:26304): GStreamer-CRITICAL **: 21:05:08.530: gst_element_get_bus: assertion 'GST_IS_ELEMENT (element)' failed


(gametrack_modules.exe:26304): GStreamer-CRITICAL **: 21:05:08.530: gst_bus_have_pending: assertion 'GST_IS_BUS (bus)' failed


(gametrack_modules.exe:26304): GStreamer-CRITICAL **: 21:05:08.530: gst_object_unref: assertion 'object != NULL' failed


(gametrack_modules.exe:26304): GStreamer-CRITICAL **: 21:05:08.531: gst_element_send_event: assertion 'GST_IS_ELEMENT (element)' failed


but if i replace nvdec with avdec_h264 everything works as expected:

QString pipeLine = QString("filesrc location=D:/test_nvdec/jumanji.mp4 ! qtdemux ! h264parse ! avdec_h264 ! videoconvert ! appsink sync = false");

so, what is wrong here?

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: gst-plugins-bad nvdec element doesn't work

Matthew Waters
What version of GStreamer?  Previous versions of nvdec could only output to GLTextures and could not output to system memory.  Add a gldownload if you want the output in system memory.

Delayed linking generally means a caps negotiation failure.

On 16/6/20 4:10 am, Борис wrote:

 system: win10 x64, compiler msvc 2015 x64, gstreamer version 1.16.2  

Hi. I rebuilt gst-plugins-bad to enable support of nvidia accelerated decoding (nvdec). It works when i run it from gst-launch-1.0:
gst-launch-1.0 filesrc location=D:/test_nvdec/jumanji.mp4 ! qtdemux ! h264parse ! nvdec ! glimagesink sync=false

but when i run same pipeline in my project:

    qputenv("GST_DEBUG", "2");
    QString pipeLine = QString("filesrc location=D:/test_nvdec/jumanji.mp4 ! qtdemux ! h264parse ! nvdec ! videoconvert ! appsink sync = false");
    cv::VideoCapture cap(pipeLine.toStdString(), cv::CAP_GSTREAMER);
    if (cap.isOpened())
    {
        Mat frame;
        cap >> frame;
        imwrite("D:/test.png", frame);
    }
it gives me errors:

          

0:00:00.165703000 26304 000001FFC4CF5E70 WARN basesrc gstbasesrc.c:3600:gst_base_src_start_complete:<filesrc0> pad not activated yet

0:00:00.166446000 26304 000001FFC4CD29C0 WARN qtdemux qtdemux_types.c:240:qtdemux_type_get: unknown QuickTime node type gsst

0:00:00.166577000 26304 000001FFC4CD29C0 WARN qtdemux qtdemux_types.c:240:qtdemux_type_get: unknown QuickTime node type gstd

0:00:00.166747000 26304 000001FFC4CD29C0 WARN qtdemux qtdemux.c:3238:qtdemux_parse_trex:<qtdemux0> failed to find fragment defaults for stream 1

0:00:00.166981000 26304 000001FFC4CD29C0 WARN qtdemux qtdemux.c:3238:qtdemux_parse_trex:<qtdemux0> failed to find fragment defaults for stream 2

0:00:00.168948000 26304 000001FFC4CD29C0 WARN default grammar.y:510:gst_parse_no_more_pads:<qtdemux0> warning: Delayed linking failed.

0:00:00.169078000 26304 000001FFC4CD29C0 WARN default grammar.y:510:gst_parse_no_more_pads:<qtdemux0> warning: failed delayed linking some pad of GstQTDemux named qtdemux0 to some pad of GstH264Parse named h264parse0

0:00:00.169337000 26304 000001FFC4CD29C0 WARN qtdemux qtdemux.c:6605:gst_qtdemux_loop:<qtdemux0> error: Internal data stream error.

0:00:00.169460000 26304 000001FFC4CD29C0 WARN qtdemux qtdemux.c:6605:gst_qtdemux_loop:<qtdemux0> error: streaming stopped, reason not-linked (-1)

(gametrack_modules.exe:26304): GStreamer-CRITICAL **: 21:05:08.530: gst_element_get_bus: assertion 'GST_IS_ELEMENT (element)' failed

(gametrack_modules.exe:26304): GStreamer-CRITICAL **: 21:05:08.530: gst_bus_have_pending: assertion 'GST_IS_BUS (bus)' failed

(gametrack_modules.exe:26304): GStreamer-CRITICAL **: 21:05:08.530: gst_object_unref: assertion 'object != NULL' failed

(gametrack_modules.exe:26304): GStreamer-CRITICAL **: 21:05:08.531: gst_element_send_event: assertion 'GST_IS_ELEMENT (element)' failed

but if i replace nvdec with avdec_h264 everything works as expected:

QString pipeLine = QString("filesrc location=D:/test_nvdec/jumanji.mp4 ! qtdemux ! h264parse ! avdec_h264 ! videoconvert ! appsink sync = false");
so, what is wrong here?

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (499 bytes) Download Attachment