我目前正在使用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
答案 0 :(得分:0)
Qt多媒体系统恰好触发了内核错误。它也可能是Qt中的错误,但没有用户空间应用程序应该触发内核恐慌。那就是 this is file1
。这是内核代码中某处的驱动程序错误,可能是主板的视频驱动程序。可能gstreamer有一个针对该内核bug的解决方法,或者做了不同的事情并且内核bug没有被击中。但它绝对是一个内核错误,毫无疑问。