arm-Preemption上的视频播放在<>处停用

时间:2018-05-16 19:42:25

标签: qt arm gstreamer qtmultimedia

我目前正在使用ARM Freescale处理器板来执行视频播放:

当我在应用程序上使用Qt多媒体库时,我会在视频播放结束前获得抢占:

root@sanuser:~#  /home/app.sh start
====== AIUR: 4.1.4 build on Mar  2 2018 10:49:12. ======
        Core: MPEG4PARSER_06.09.36  build on Aug 23 2016 05:18:47
 file: /usr/lib/imx-mm/parser/lib_mp4_parser_arm11_elinux.so.3.2
------------------------
    Track 00 [video_0] Enabled
        Duration: 0:02:07.280000000
        Language: und
    Mime:
        video/x-h264, parsed=(boolean)true, alignment=(string)au, stream-format=(string)avc, width=(int)640, height=(int)480, framerate=(fraction)25/1, codec_data=(buffer)014d401effe10018674d401eda0280f6c044000003000400000300c83c58ba8001000468ef3c80
------------------------
------------------------
    Track 01 [audio_0] Enabled
        Duration: 0:02:07.317000000
        Language: und
    Mime:
        audio/mpeg, mpegversion=(int)4, channels=(int)6, rate=(int)48000, bitrate=(int)384039, stream-format=(string)raw, codec_data=(buffer)11b0
------------------------
====== BEEP: 4.1.4 build on Mar  2 2018 10:49:24. ======
        Core: AAC decoder Wrapper  build on May 30 2016 12:33:44
 file: /usr/lib/imx-mm/audio-codec/wrap/lib_aacd_wrap_arm12_elinux.so.3
CODEC: BLN_MAD-MMCODECS_AACD_ARM_03.09.00_CORTEX-A8  build on Jul 13 2016 18:15:25.
[INFO]  bitstreamMode 1, chromaInterleave 0, mapType 0, tiled2LinearEnable 0
BUG: scheduling while atomic: vqueue:src/642/0x00000101
Preemption disabled at:[<80101544>] __do_softirq+0x5c/0x3b4

然而,在使用gstreamer管道时,视频播放顺利,没有任何问题:

gst-launch-1.0 -v filesrc location=/home/SampleVideo_720x480.mp4 typefind=true ! qtdemux !queue max-size-time=0 !vpudec ! videoconvert ! imxipuvideosink framebuffer=/dev/fb0

1 个答案:

答案 0 :(得分:0)

Qt多媒体系统恰好触发了内核错误。它也可能是Qt中的错误,但没有用户空间应用程序应该触发内核恐慌。那就是 this is file1 。这是内核代码中某处的驱动程序错误,可能是主板的视频驱动程序。可能gstreamer有一个针对该内核bug的解决方法,或者做了不同的事情并且内核bug没有被击中。但它绝对是一个内核错误,毫无疑问。