AnsweredAssumed Answered

i.MX6 QMediaPlayer does qtvideosink use IPU?

Question asked by Michael Stahl on Jul 31, 2020
Latest reply on Aug 5, 2020 by Michael Stahl

I want to use qt5 with qml to show a dual-stream.

 

main.qml:

import QtQuick.Window 2.1
import QtQuick 2.0
import QtMultimedia 5.12

 

Window {
    id: window
    visible: true
    width: 800
    height: 480
    x: 0
    y: 0

    Row {
        anchors.fill: parent

        MediaPlayer {

              id: mediaplayer_cam1
              source: "gst-pipeline: udpsrc port=10002 caps=application/x-rtp,payload=96 ! rtph264depay ! h264parse ! imxvpudec ! qtvideosink"
              autoPlay: true
         }
         VideoOutput {
            id: videooutput_cam1

            width: 400

            height: 480

            rotation: 0

           fillMode: Image.Stretch
            source: mediaplayer_cam1
         }

       MediaPlayer {

            id: mediaplayer_cam2
            source: "gst-pipeline: udpsrc port=5002 caps=application/x-rtp,payload=96 ! rtph264depay ! h264parse ! imxvpudec ! qtvideosink"
            autoPlay: true
         }
         VideoOutput {
            id: videooutput_cam2

            width: 400

            height: 480

            rotation: 0

           fillMode: Image.Stretch

            source: mediaplayer_cam2
         }

    }

}

In principle it works. I started the qt application out of my serial terminal and then I will see the two streams in a split-screen on my display.

But when I exit the application over ctrl+c I got a lot of warnings and traces like this:

 

^C------------[ cut here ]------------
WARNING: CPU: 3 PID: 1986 at /home/mylinux/yocto/warrior/my-bsp-platform/build-fb/tmp/work-shared/mx6qdl-module/kernel-source/mm/page_alloc.c:7658 cma_release+0x6c/0x94
375 pages are still in use!
Modules linked in: iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack bluetooth ecdh_generic mxc_v4l2_capture ipu_bg_overlay_sdc ipu_still ipu_prp_enc ipu_csi_enc ipu_fg_overlay_sdc  v4l2_int_device imx_sdma galcore(O)
CPU: 3 PID: 1986 Comm: udpsrc1:src Tainted: G        W  O    4.14.126 #1
Hardware name: Freescale i.MX6 Quad/DualLite (Device Tree)
[<8010e78c>] (unwind_backtrace) from [<8010acfc>] (show_stack+0x10/0x14)
[<8010acfc>] (show_stack) from [<80948ee8>] (dump_stack+0x78/0x8c)
[<80948ee8>] (dump_stack) from [<8012d52c>] (__warn+0xe4/0x100)
[<8012d52c>] (__warn) from [<8012d1a4>] (warn_slowpath_fmt+0x38/0x48)
[<8012d1a4>] (warn_slowpath_fmt) from [<80215b64>] (cma_release+0x6c/0x94)
[<80215b64>] (cma_release) from [<80113e48>] (__arm_dma_free.constprop.3+0xe4/0x120)
[<80113e48>] (__arm_dma_free.constprop.3) from [<80725658>] (vpu_free_dma_buffer+0xa0/0xd4)
[<80725658>] (vpu_free_dma_buffer) from [<80726cb0>] (vpu_release+0x15c/0x2f0)
[<80726cb0>] (vpu_release) from [<8021b358>] (__fput+0x84/0x1d0)
[<8021b358>] (__fput) from [<80147b40>] (task_work_run+0x90/0xac)
[<80147b40>] (task_work_run) from [<8012feac>] (do_exit+0x490/0xab8)
[<8012feac>] (do_exit) from [<80131140>] (do_group_exit+0x3c/0xbc)
[<80131140>] (do_group_exit) from [<8013a93c>] (get_signal+0xfc/0x76c)
[<8013a93c>] (get_signal) from [<8010a46c>] (do_signal+0x64/0x48c)
[<8010a46c>] (do_signal) from [<8010aa48>] (do_work_pending+0xa4/0xb4)
[<8010aa48>] (do_work_pending) from [<8010788c>] (slow_work_pending+0xc/0x20)
---[ end trace b532011085fbc682 ]---
------------[ cut here ]------------

 

As longer the qt application runs as more messages were printed out.

I read that qtvideosink is not using the IPU. So I have two questions:

What causes the traces when I cancel the application?

How can I use the hardware acceleration for display my streams?

 

 

Thanks

Michael

Outcomes