Git Product home page Git Product logo

pot's Introduction

PiOmxTextures (POT)

This is a proof of concept of how to build a QML Qt component that renders h264 1080p video and audio using Raspberry Pi hardware decoder. Also contains code to hardware-decode images to QML components.

In the piomxtextures_qt_driver there is a QtMultimedia backend sample using POT as a shared library.

In piomxtextures_poxplayer there is a sample player used to test the backend.

For more information on the project refer to http://goo.gl/KphzdD.
For some build instructions: http://goo.gl/9TZPxn.
For some info on how to use: http://goo.gl/TuiSyS.

For a demo: https://www.youtube.com/watch?v=SeJxQN-W2uA.

POT releases include builds that provide Qt Multimedia Backend, POT library, sample apps and Qt builds of most available Qt modules and, sometimes, complete firmware images (see http://goo.gl/KphzdD). I'll keep the project up as long as I'll see interest for it. Enjoy! ;-)

PayPal donate button

Yocto image

There is a recipe to include POT plugin into your Yocto images: https://github.com/carlonluca/meta-pot.git.

pot's People

Contributors

carlonluca avatar dimovnike avatar kukkimonsuta avatar longchair avatar philkingston avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pot's Issues

stop() method doesnt work

When using MediaPlayer from QML the stop() method on the MediaPlayer doesnt't work. No debug info is outputed, it seems that the function void OpenMAXILPlayerControl::stop() is not called at all.

Simultaneus Videos

Master branch allows to play videos simultaneously by using multiple players, but still has the memory leak problem...
No_Tearing branch allows just one media player at a time.

Simultaneous videos are not always neccesary but that would allow useful components like one video fading into another, video comparing, video chat, etc...

Streaming was working before V5.0.0

Luca, you recently mentioned in the blog that "At the moment the code is pretty close to be ready to play remote streams including https"
http://thebugfreeblog.blogspot.com/2015/11/fully-optimised-raspbian-jessie-with.html?showComment=1450740707138#c3733828862728817809

I remember that in older versions, maybe before V5.0.0, POT was able to handle streamings...
I even checked in some of my old test projects and found some url:

rtsp://192.168.2.27/live.sdp (A camera I have in my office and I checked with POT)
http://techslides.com/demos/sample-videos/small.3gp (A video file I found looking around)

I lost a lot of info with a Ubuntu reinstall I had to do recently, so I can't try an older version of POT right now, to prove me right

Closing the QQuickView results in a crash

When calling close() or deleteLater() on the QQuickView object the app results in a crash, e.g. see the follosing code:

qDebug() << "start";
qmlView->close();
// CRASH HERE
qDebug() << "close() invoked";
qmlView->deleteLater();
qDebug() << "deleteLater() invoked";

Disposing the object is needed because QT doesnt allow to mix EGL and non-EGL windows, it produces this error "EGLFS: OpenGL windows cannot be mixed with others" and I need to delete the QML before showing a normal QMainWindow.

I tried to debug with gdb but it doesnt show very much, it shows something liek this:

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
Core was generated by `./testgui5'.
Program terminated with signal 11, Segmentation fault.
#0  0xb0ed02d4 in ?? () from /usr/local/qt-5.4.1/plugins/mediaservice/libopenmaxilmediaplayer.so
(gdb) bt
#0  0xb0ed02d4 in ?? () from /usr/local/qt-5.4.1/plugins/mediaservice/libopenmaxilmediaplayer.so
#1  0xecb2f278 in ?? ()
#2  0xecb2f278 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Keyboard not working in 5.6.0-rc1 build

Hello,

I noticed that the keyboard is not working for me in the Qt 5.6.0-rc1 build. For debugging purposes, I set the environment variable export QT_LOGGING_RULES=qt.qpa.*=true. When starting my qml application, I get the following log lines:

qt.qpa.egldeviceintegration: EGL device integration plugin keys: ("eglfs_brcm")
qt.qpa.egldeviceintegration: EGL device integration plugin keys (sorted): ("eglfs_brcm")
qt.qpa.egldeviceintegration: Trying to load device EGL integration "eglfs_brcm"
qt.qpa.egldeviceintegration: Using EGL device integration "eglfs_brcm"
Unable to query physical screen size, defaulting to 100 dpi.
To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
qt.qpa.input: libinput: input device 'Microsoft  Microsoft Basic Optical Mouse v2.0 ', /dev/input/event0 is tagged by udev as: Mouse
qt.qpa.input: libinput: input device 'Microsoft  Microsoft Basic Optical Mouse v2.0 ', /dev/input/event0 is a pointer caps
qt.qpa.input: libinput: input device 'Microsoft Wired Keyboard 600', /dev/input/event1 is tagged by udev as: Keyboard
qt.qpa.input: libinput: input device 'Microsoft Wired Keyboard 600', /dev/input/event1 is a keyboard
qt.qpa.input: libinput: input device 'Microsoft Wired Keyboard 600', /dev/input/event2 is tagged by udev as: Keyboard Joystick
qt.qpa.input: libinput: input device 'Microsoft Wired Keyboard 600', /dev/input/event2 is a keyboard
qt.qpa.input: X-less xkbcommon not available, not performing key mapping

Looks like the hardware is found, but the mapping does not work. I installed libxkbcommon0 and also libxkbcommon-x11-0 on the pi, but I still got the same error.
After googling a bit I think it must have to do something with the configure options when compiling qt, see http://doc.qt.io/qt-5/configure-options.html#third-party-libraries. Is this the case?

Thank you, Florian

no video with provided binaries

Deleting this file /usr/local/Qt-rasp-5.4.1/plugins/mediaservice/libgstmediaplayer.so fixes video issues. Is this normal?

Position implementation disabled

The position implementation in the No_Tearing branch was disabled because it was hardlocking.
That branch was merged to Master before fixing this bug and so the position is still disabled.

.jpg image data V-5.0.0 beta 2

It seems like (if I dont miss some image packages) .jpg formatted images gives error like this,

"QML Image: Invalid image data: qrc:///assets/loby.jpg"

Here is the sample code,

Image {
    width: 480
    height: 320
    source: "assets/loby.jpg"
}

instantiate a MediaPlayer with 'volume: 0.0'

I am trying to instantiate a MediaPlayer item with volume property setted to '0.0' but there still audio. But if I instantiate its muted property as true, then there is no volume.

And also when I put volume to '0.0' after video start to playing, the effect of it on volume is not same as like the effect of 'muted: true', there is still little volume on.

Thank you,
Sina

palette blinking on the upper left corner

I am not sure if this is the POT problem or even an issue, but there is a mini square color palette blinking on the upper left of my screen on every time a video starts. I guess it did appeared after I update my pi with rpi-update.

Is there anyone also having this?
If yes, is there a any way to disable it?

Changing Video shows video jump - V5.0.0

I have the following code to change the playing video:

function changeVideo(path)
{
    archivo = path
    askedStop = true;
    videoPlayer.stop()
    videoPlayer.source = archivo
    videoPlayer.play()
}

When the video change a jump back in the video can be seen.
I guess the index of the frame being shown is changed to the first one again, but it is done before cleaning. That for the video jumps back before playing the next source.

MediaPlayer QML types error signal

Hello,

I guess MediaPlayer type is suppose to emit a 'error' signal if it encounters an error. But on POT, for example if the source property contains an invalid media url, while implementation gives a debug output which shows the error like,

08:15:54.262 ERROR: Failed to open source /home/pi.

but on the qml side, error signal is not emitted. Here is a simple code,

MediaPlayer {
    id: player
    source: "file:///home/pi"
    autoPlay: true
    loops: MediaPlayer.Infinite
    onError: console.log("MediaPlayer.error..");
}

VideoOutput {
    id: video
    source: player
    fillMode: VideoOutput.Stretch
    anchors.fill: parent
}

usual expectation is when the source property is wrong, it would emit an error signal. But as I mentioned above, POT gives a debug output but not emit the signal.

I've also checked on my local machine, which is ubuntu, seems like it is supposed to emit this signal, here is the output for the same qml source file above,

GStreamer; Unable to pause - "file:///home/pi"
GStreamer; Unable to pause - "file:///home/pi"
qml: MediaPlayer.error..
Error: "Resource not found."

Video stops and restarts automatically after a f ew seconds

Hi Luca,

after a few seconds, my videos stop and restart automatically. This repeats indefinitely.
I am using the binaries of POT 5.0.0 (Pi1, wheezy).

Command to run video:
/usr/local/Qt-rasp-5.5.0/bin/qmlscene /home/pi/piview/lib/samples/video_simple.qml file:///home/pi/piview/lib/samples/big_buck_bunny_1080p_h264.mov

Log, see attachement.
Do you have any idea, why this happens?

Thanks for your help,
Ben
pot_5.0.0_video_restart_log.txt

MediaPlayer.loops property now working - V5.5.0

When I try to loop a video infinitely, after the first play it just stops and do not replay the video.

If you like to mimic this here is the simple code,

import QtQuick 2.0
import QtMultimedia 5.0
import QtQuick.Window 2.0

Window {
visible: true

MediaPlayer {
    id: player
    source: "file:///home/pi/Videos/big_buck_bunny_1080p_h264.mov"
    loops: MediaPlayer.Infinite
}

VideoOutput {
    source: player
}

Component.onCompleted: {
    player.play();
}

}

And also here is the debug output,

stdin: is not a tty
QML debugging is enabled. Only use this in a safe environment.
Unable to query physical screen size, defaulting to 100 dpi.
To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
12:22:53.879 VERBOSE: Instantiating player service...
12:22:53.881 VERBOSE: Instantiating QMediaService...
12:22:53.884 DEBUG: Entering: OpenMAXILPlayerControl::OpenMAXILPlayerControl(QObject_).
12:22:53.885 VERBOSE: Metadata update requested.
12:22:53.887 DEBUG: Entering: virtual void OpenMAXILPlayerControl::setMediaPlayer(QMediaPlayer_).
Requesting control for org.qt-project.qt.metadatareadercontrol/5.0...
Requesting control for org.qt-project.qt.mediaavailabilitycontrol/5.0...
Requesting control for org.qt-project.qt.mediaplayercontrol/5.0...
Requesting control for org.qt-project.qt.medianetworkaccesscontrol/5.0...
12:22:53.888 DEBUG: Entering: virtual QMediaPlayer::State OpenMAXILPlayerControl::state() const.
12:22:53.888 DEBUG: Entering: virtual QMediaPlayer::MediaStatus OpenMAXILPlayerControl::mediaStatus() const.
QDeclarativeAudio::itemChange
QMediaPlayer::onItemChanged
QDeclarativeAudio::itemChange
QMediaPlayer::onItemChanged
12:22:53.896 DEBUG: Entering: virtual void OpenMAXILVideoRendererControl::setSurface(QAbstractVideoSurface_).
12:22:53.897 DEBUG: Entering: virtual void OpenMAXILPlayerControl::stop().
12:22:53.897 VERBOSE: Stop
12:22:53.898 DEBUG: Entering: virtual void OpenMAXILPlayerControl::setMedia(const QMediaContent&, QIODevice_).
12:22:53.898 DEBUG: Media: file:///home/pi/Videos/big_buck_bunny_1080p_h264.mov.
12:22:53.899 DEBUG: setMedia thread is: 0x529758.
12:22:53.899 VERBOSE: Deferring setMedia()...
Requesting control for org.qt-project.qt.videorenderercontrol/5.0...
12:22:53.900 DEBUG: Entering: virtual void OpenMAXILPlayerControl::play().
12:22:53.900 VERBOSE: Deferring play() command...
12:22:53.902 VERBOSE: Processing post setMedia()...
12:22:53.902 DEBUG: Entering: void OpenMAXILPlayerControl::setMediaInt(const QMediaContent&).
12:22:53.902 VERBOSE: Stop
12:22:53.902 VERBOSE: Entering: bool OMX_MediaProcessor::setFilenameInt(QString, OMX_TextureData_&).
12:22:53.902 VERBOSE: Opening file:///home/pi/Videos/big_buck_bunny_1080p_h264.mov...
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/pi/Videos/big_buck_bunny_1080p_h264.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2005-09-28 22:15:55
Duration: 00:00:10.01, start: 0.000000, bitrate: 1485 kb/s
Stream #0:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
creation_time : 2005-09-28 22:15:55
handler_name : Apple Alias Data Handler
Stream #0:1(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt709), 640x480, 1349 kb/s, 29.97 fps, 29.97 tbr, 2997 tbn, 5994 tbc (default)
Metadata:
creation_time : 2005-09-28 22:15:55
handler_name : Apple Alias Data Handler
encoder : H.264
12:22:53.988 VERBOSE: Copy metatada...
12:22:53.988 VERBOSE: MetaData
12:22:53.988 VERBOSE: Key: major_brand, Value: qt .
12:22:53.988 VERBOSE: Key: minor_version, Value: 537199360.
12:22:53.988 VERBOSE: Key: compatible_brands, Value: qt .
12:22:53.988 VERBOSE: Key: creation_time, Value: 2005-09-28 22:15:55.
12:22:53.989 VERBOSE: Initializing OMX clock...
12:22:53.989 VERBOSE: Metadata update requested.
12:22:53.995 VERBOSE: Opening video using OMX...
12:22:53.995 VERBOSE: Generating texture of size (640, 480).
12:22:53.995 INFORMATION: Instantiating texture data...
12:22:53.996 VERBOSE: Destroying QVideoSurfaceFormat.
12:22:53.996 VERBOSE: Destroying QVideoFrame.
12:22:54.002 INFORMATION: Creating EGLImageKHR...
12:22:54.002 VERBOSE: EGL image 81 created...
12:22:54.002 VERBOSE: Creating OMX_TextureData...
12:22:54.002 INFORMATION: Instantiating texture data...
12:22:54.008 INFORMATION: Creating EGLImageKHR...
12:22:54.009 VERBOSE: EGL image 82 created...
12:22:54.009 VERBOSE: Creating OMX_TextureData...
12:22:54.009 INFORMATION: Instantiating texture data...
12:22:54.015 INFORMATION: Creating EGLImageKHR...
12:22:54.015 VERBOSE: EGL image 83 created...
12:22:54.015 VERBOSE: Creating OMX_TextureData...
12:22:54.015 INFORMATION: Instantiating texture data...
12:22:54.021 INFORMATION: Creating EGLImageKHR...
12:22:54.021 VERBOSE: EGL image 84 created...
12:22:54.021 VERBOSE: Creating OMX_TextureData...
12:22:54.022 VERBOSE: Texture generated!
12:22:54.022 VERBOSE: Destroying QVideoSurfaceFormat.
12:22:54.022 VERBOSE: Destroying QVideoFrame.
12:22:54.022 VERBOSE: Setting up for new textures...
Video codec omx-h264 width 640 height 480 profile 77 fps 29.970030
12:22:54.045 VERBOSE: Opening audio using OMX...
12:22:54.045 VERBOSE: Using omx:hdmi output device...
Audio codec aac channels 2 samplerate 48000 bitspersample 16
12:22:54.077 DEBUG: State changed...
12:22:54.078 VERBOSE: Processing post play()...
12:22:54.078 DEBUG: Entering: void OpenMAXILPlayerControl::playInt().
12:22:54.078 VERBOSE: Play
12:22:54.078 VERBOSE: Cleaning textures...
12:22:54.078 VERBOSE: Entering: bool OMX_MediaProcessor::setFilenameInt(QString, OMX_TextureData_&).
12:22:54.078 INFORMATION: Cleaning up...
12:22:54.078 VERBOSE: Closing players...
12:22:54.118 VERBOSE: Metadata update requested.
12:22:54.120 VERBOSE: Freeing texture...
12:22:54.120 INFORMATION: Cleanup done.
12:22:54.120 VERBOSE: Opening /home/pi/Videos/big_buck_bunny_1080p_h264.mov...
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/pi/Videos/big_buck_bunny_1080p_h264.mov':
Metadata:
major_brand : qt
minor_version : 537199360
compatible_brands: qt
creation_time : 2005-09-28 22:15:55
Duration: 00:00:10.01, start: 0.000000, bitrate: 1485 kb/s
Stream #0:0(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
creation_time : 2005-09-28 22:15:55
handler_name : Apple Alias Data Handler
Stream #0:1(eng)
: Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, smpte170m/smpte170m/bt709), 640x480, 1349 kb/s, 29.97 fps, 29.97 tbr, 2997 tbn, 5994 tbc (default)
Metadata:
creation_time : 2005-09-28 22:15:55
handler_name : Apple Alias Data Handler
encoder : H.264
12:22:54.189 VERBOSE: Copy metatada...
12:22:54.189 VERBOSE: MetaData
12:22:54.190 VERBOSE: Key: major_brand, Value: qt .
12:22:54.190 VERBOSE: Key: minor_version, Value: 537199360.
12:22:54.190 VERBOSE: Key: compatible_brands, Value: qt .
12:22:54.191 VERBOSE: Key: creation_time, Value: 2005-09-28 22:15:55.
12:22:54.191 VERBOSE: Initializing OMX clock...
12:22:54.191 VERBOSE: Metadata update requested.
12:22:54.195 VERBOSE: Opening video using OMX...
12:22:54.196 VERBOSE: Generating texture of size (640, 480).
12:22:54.196 INFORMATION: Freeing KHR image...
12:22:54.197 INFORMATION: Freeing texture...
12:22:54.197 INFORMATION: Freeing KHR image...
12:22:54.198 INFORMATION: Freeing texture...
12:22:54.198 INFORMATION: Freeing KHR image...
12:22:54.198 INFORMATION: Freeing texture...
12:22:54.199 INFORMATION: Freeing KHR image...
12:22:54.199 INFORMATION: Freeing texture...
12:22:54.200 VERBOSE: Destroying QVideoSurfaceFormat.
12:22:54.200 INFORMATION: Instantiating texture data...
12:22:54.200 VERBOSE: Destroying QVideoFrame.
12:22:54.200 VERBOSE: VideoBuffer freed.
12:22:54.207 INFORMATION: Creating EGLImageKHR...
12:22:54.207 VERBOSE: EGL image 85 created...
12:22:54.208 VERBOSE: Creating OMX_TextureData...
12:22:54.208 INFORMATION: Instantiating texture data...
12:22:54.214 INFORMATION: Creating EGLImageKHR...
12:22:54.214 VERBOSE: EGL image 86 created...
12:22:54.215 VERBOSE: Creating OMX_TextureData...
12:22:54.215 INFORMATION: Instantiating texture data...
12:22:54.221 INFORMATION: Creating EGLImageKHR...
12:22:54.221 VERBOSE: EGL image 87 created...
12:22:54.222 VERBOSE: Creating OMX_TextureData...
12:22:54.222 INFORMATION: Instantiating texture data...
12:22:54.228 INFORMATION: Creating EGLImageKHR...
12:22:54.228 VERBOSE: EGL image 88 created...
12:22:54.229 VERBOSE: Creating OMX_TextureData...
12:22:54.229 VERBOSE: Texture generated!
12:22:54.229 VERBOSE: Destroying QVideoSurfaceFormat.
12:22:54.229 VERBOSE: Destroying QVideoFrame.
12:22:54.229 VERBOSE: Setting up for new textures...
Video codec omx-h264 width 640 height 480 profile 77 fps 29.970030
12:22:54.246 VERBOSE: Opening audio using OMX...
12:22:54.246 VERBOSE: Using omx:hdmi output device...
Audio codec aac channels 2 samplerate 48000 bitspersample 16
12:22:54.276 DEBUG: State changed...
12:22:54.277 DEBUG: State changed...
12:22:54.278 VERBOSE: Starting thread.
12:22:54.278 VERBOSE: Decoding thread started.
12:22:54.282 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.283 WARNING: No decoded frame to show at all. Let' render black.
V:PortSettingsChanged: [email protected] interlace:0 deinterlace:0 anaglyph:0 par:inf layer:0 alpha:255
12:22:54.308 DEBUG: bool COMXVideo::SetVideoEGL()
12:22:54.314 DEBUG: Trying to enable to output port...
12:22:54.314 VERBOSE: Creating buffers for 4 images.
12:22:54.315 INFORMATION: Buffer created 0x63ff10
12:22:54.315 INFORMATION: Buffer created 0x6402d0
12:22:54.316 INFORMATION: Buffer created 0x61a2c0
12:22:54.316 INFORMATION: Buffer created 0x622370
12:22:54.316 VERBOSE: Component renderer: 640b68.
12:22:54.322 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.323 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.330 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.330 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.376 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.377 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.393 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.394 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.409 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.410 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.426 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.427 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.442 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.443 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.459 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.460 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.476 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.477 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.492 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.493 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.509 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.510 WARNING: No decoded frame to show at all. Let' render black.
12:22:54.526 WARNING: No decoded frame to show at all. Let' render black.
12:23:04.479 VERBOSE: Stopping OMX clock...
12:23:04.481 INFORMATION: Cleaning up...
12:23:04.482 VERBOSE: Closing players...
12:23:04.620 VERBOSE: Metadata update requested.
12:23:04.623 VERBOSE: Freeing texture...
12:23:04.624 INFORMATION: Cleanup done.
12:23:04.624 DEBUG: State changed...

No Audio Playback when No autoPlay

Seems that audio will start properly when using autoplay, although if i set the autoplay to false in qml component initial props and then use play()video will start but mostly no audio.

Replay video makes animation lag

Hey,

on the same screen while playing video and have another elemnt which plays animation get lags when the video replay.

here is a sample code to reproduce;

import QtQuick 2.2
import QtQml 2.0
import QtQuick.Window 2.1
import QtMultimedia 5.0

Rectangle {
width: 1920
height: 1080
id: root
objectName: "root"
visible: true
color: "black"
property int level: 0

Video {
    anchors.fill: parent
    id: myVideo

    visible: true

    source: "file:///home/pi/Videos/SampleVideo_1080x720_2mb.mp4"
    autoPlay: true

    fillMode: VideoOutput.Stretch

    onStopped: {
        console.log("Stopped.");
        myVideo.seek(0);
        myVideo.play();
    }

    onStatusChanged: {
        console.log("Status changed to: " + status + ".");
    }
}
Rectangle {
    border.width: 2
    border.color: "black"
    color: "lightsteelblue"
    anchors.horizontalCenter: parent.horizontalCenter
    width: 250
    height: text.height + 10
    y:1000
    NotificationBox {
        id:text
        width: 200
        anchors.verticalCenter: parent.verticalCenter
        anchors.horizontalCenter: parent.horizontalCenter
        text: "start ------ abcdefghijklmnopqrtaksdjfkdfjklsdjflksdjfklsjadfkljsad;flasjdlfjasdfjldsdfljf---- end"
    }
}

}

And here is the NotificationBox;

import QtQuick 2.0

Item {
id:marqueeText
height: scrollingText.height
clip: true
property int tempX: -width
property alias text: scrollingText.text
Text {
x: tempX
id:scrollingText
Behavior on x {
NumberAnimation { duration: 200 }
}
}

// MouseArea {
// id:mouseArea
// anchors.fill: parent
// onClicked: {
// tempX = 0;
// timer.running = true;
// }
// }

Timer {
    id:timer
    interval: 200; running: true; repeat: true
    onTriggered:{
        tempX = tempX + 5
        scrollingText.x = -tempX;

        if( tempX + marqueeText.width > scrollingText.width + parent.width) {
            timer.running = false
            pauseTimer.running = true
        }
    }
}

Timer {
    id:pauseTimer
    interval: 500; running: false; repeat: false
    onTriggered: {

// scrollingText.x = 0
tempX = -parent.width
timer.running = true
}
}
}

You can check this bug with a shorter video easily.

Thank You,
Sina

Crash when GL error

Sometimes when QML MediaPlayer object source has changed (load a new video) it drops gl error:

15:07:37.610 VERBOSE: Processing post play()...
15:07:37.611 DEBUG: Entering: void OpenMAXILPlayerControl::playInt().
15:07:37.611 VERBOSE: Play
15:07:37.611 VERBOSE: Cleaning textures...
15:07:37.611 VERBOSE: Entering: bool OMX_MediaProcessor::setFilenameInt(QString, OMX_TextureData*&).
15:07:37.611 INFORMATION: Cleaning up...
15:07:37.611 VERBOSE: Closing players...
15:07:37.612 VERBOSE: Freeing texture...
15:07:37.612 INFORMATION: Cleanup done.
15:07:37.612 VERBOSE: Opening /test/1.mp4...
15:07:37.616 VERBOSE: Metadata update requested.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/test/1.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2015-08-12 06:56:55
  Duration: 00:00:12.08, start: 0.000000, bitrate: 17274 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080, 17010 kb/s, 29.89 fps, 30 tbr, 90k tbn, 180k tbc (default)
    Metadata:
      creation_time   : 2015-08-12 06:56:55
      handler_name    : VideoHandle
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 256 kb/s (default)
    Metadata:
      creation_time   : 2015-08-12 06:56:55
      handler_name    : SoundHandle
15:07:38.035 VERBOSE: Copy metatada...
15:07:38.036 VERBOSE: MetaData
15:07:38.036 VERBOSE: Key: major_brand, Value: mp42.
15:07:38.036 VERBOSE: Key: minor_version, Value: 0.
15:07:38.036 VERBOSE: Key: compatible_brands, Value: isommp42.
15:07:38.037 VERBOSE: Key: creation_time, Value: 2015-08-12 06:56:55.
15:07:38.037 VERBOSE: Initializing OMX clock...
15:07:38.042 VERBOSE: Opening video using OMX...
15:07:38.043 VERBOSE: Generating texture of size (1920, 1080).
15:07:38.043 INFORMATION: Freeing KHR image...
15:07:38.044 INFORMATION: Freeing texture...
glGetError 0x501

.... crash....

glError is handled in /pi/piomxtextures_src/omx_textureprovider.cpp, function check_gl_error().
const char *error and error = "STRING" crashed...

Changed to this and its fixed:

void check_gl_error() {
   GLenum err = glGetError();

   while (err != GL_NO_ERROR) {

      switch (err) {
      case GL_INVALID_OPERATION:
         log_err("GL error: INVALID_OPERATION");
         break;
      case GL_INVALID_ENUM:
         log_err("GL error: INVALID_ENUM");
         break;
      case GL_INVALID_VALUE:
         log_err("GL error: INVALID_VALUE");
         break;
      case GL_OUT_OF_MEMORY:
         log_err("GL error: OUT_OF_MEMORY");
         break;
      case GL_INVALID_FRAMEBUFFER_OPERATION:
         log_err("GL error: INVALID_FRAMEBUFFER_OPERATION");
         break;
      default:
         return;
      }

      err = glGetError();
   }

}

Thanks for your great work Luca,

Tibor

Video colors are degraded when using this library

The colors of the video are degraded. The gradients, which are otherwise shown fine in omxplayer, appear with reduced color depth (gradients are shown as stripes). I tried with QT_QPA_EGLFS_DEBUG=1 and QT says 24bit however I suspect the color depth is even lower. Let me know if pics would help, or if you need other information about this.

Crash after playing a paused video

I'm using POT 4.5.1 for Raspberry Pi 2 and whenever I try to play a paused video the application crashes with the following error:
/home/luca/project/pi/pi/piomxtextures_src/omxplayer_lib/OMXVideo.cpp:81: OMX_ERRORTYPE fill_buffer_done_callback(OMX_HANDLETYPE, OMX_PTR, OMX_BUFFERHEADERTYPE*): Assertion provider->registerFilledBuffer(pBuffer)' failed.`

The full output is provided here:

13:17:21.091 DEBUG: Entering: virtual void OpenMAXILPlayerControl::pause().
13:17:21.093 VERBOSE: Processing post pause()...
13:17:21.093 DEBUG: Entering: void OpenMAXILPlayerControl::pauseInt().
13:17:21.094 VERBOSE: Pause
13:17:21.095 DEBUG: State changed...
13:17:21.113 INFORMATION: Pause command issued.
13:17:21.985 DEBUG: Entering: virtual void OpenMAXILPlayerControl::play().
13:17:21.986 VERBOSE: Deferring play() command...
13:17:22.001 VERBOSE: Processing post play()...
13:17:22.001 DEBUG: Entering: void OpenMAXILPlayerControl::playInt().
13:17:22.001 VERBOSE: Play
13:17:22.001 VERBOSE: Cleaning textures...
13:17:22.002 INFORMATION: Play command issued.
13:17:22.017 DEBUG: State changed...
13:17:22.047 WARNING: Can't register a filled buffer. None is being filled.
qml: started playback!
qmltest: /home/luca/project/pi/pi/piomxtextures_src/omxplayer_lib/OMXVideo.cpp:81: OMX_ERRORTYPE fill_buffer_done_callback(OMX_HANDLETYPE, OMX_PTR, OMX_BUFFERHEADERTYPE*): Assertion `provider->registerFilledBuffer(pBuffer)' failed.
bash: line 1: 5957 Aborted DISPLAY=':0.0' /opt/qmltest/bin/qmltest
Application finished with exit code 134.

The steps for reproducing this bug are as following:

  1. Create a VideoOutput and load a video
  2. Start the playback (video.play())
  3. Pause it (video.pause())
  4. Start it again -> this results in a crash

Can this bug be reproduced by someone else?

Raspberry Pi 2 support?

Hi Luca,

Is the 4.3.0 working on the Pi 2?

If not, and it's because of lack of hardware to test, i can provide one or two for you.

Audio is not playing V-5.0.0 beta 2

I am not sure but do you guys can have audio playing with qml "Audio" element or with something else? Because I have tried pocplayer and sample codes on the repo with qmlscene and both do not play the audio, I mean there is no any sound.

I have checked if omxplayer does, and yes, there is sound for it.

Here is the command I tried to play audio with qmlscene,
/usr/local/Qt-rasp2-5.5.0/bin/qmlscene audio_simple.qml file:///home/pi/Videos/SampleVideo_1080x720_2mb.mp4

and for POCPlayer,
/piomxtextures_pocplayer file:///home/pi/Videos/SampleVideo_1080x720_2mb.mp4

both do not provide sound output over jack.

Am I doing something wrong? or someone else also got this issue?

Sina

Qt freezes when starting video

I don't know if this is a PiOmxTextures issue or not.
Whenever a video starts (play) QtQuick freezes. This happens by one second at most, but it can be noticed if you make a loop of a short video.

I guess this has to do with a peek in CPU usage to get the video buffers clean and start again.

If this is something unavoidable at expense of taking a longer time starting the video, which configuration would give a better performance?

Currently I'm using a RPi 2 with 256 Mbts to GPU and overclocked at just 950 MHz

Support Audio via 3.5mm jack

Right now PiOmxTextures plays audio only through HDMI, even if you try to force it via 3.5mm ('headphone') jack configuring it with raspi-config.
It would be nice if the audio output could be selected or followed the configuration of the raspberry.

Build

Hello,
With the previous version everything worked well for me.
I have a question about the building system.

I compiled everything and piomxtextures_app working properly.
From a QML and qmlscene me now does not work.
I have the built and in place piomxtextures_qt_driver.
Is the patch qtmultimedia needed?

With patch:
12:36:09.836 VERBOSE: Instantiating player service...
12:36:09.838 VERBOSE: Instantiating QMediaService...
12:36:09.843 DEBUG: Entering: OpenMAXILPlayerControl::OpenMAXILPlayerControl(QObject_).
12:36:09.845 VERBOSE: Metadata update requested.
Requesting control for org.qt-project.qt.metadatareadercontrol/5.0...
Requesting control for org.qt-project.qt.mediaavailabilitycontrol/5.0...
Requesting control for org.qt-project.qt.mediaplayercontrol/5.0...
12:36:09.852 DEBUG: Entering: virtual QMediaPlayer::State OpenMAXILPlayerControl::state() const.
Requesting control for org.qt-project.qt.medianetworkaccesscontrol/5.0...
12:36:09.856 DEBUG: Entering: virtual QMediaPlayer::MediaStatus OpenMAXILPlayerControl::mediaStatus() const.
QDeclarativeAudio::itemChange
QMediaPlayer::onItemChanged
Requesting control for org.qt-project.qt.videorenderercontrol/5.0...
12:36:09.876 DEBUG: Entering: virtual void OpenMAXILVideoRendererControl::setSurface(QAbstractVideoSurface_).

No patch:
12:30:40.441 VERBOSE: Instantiating player service...
12:30:40.443 VERBOSE: Instantiating QMediaService...
12:30:40.449 DEBUG: Entering: OpenMAXILPlayerControl::OpenMAXILPlayerControl(QObject_).
12:30:40.451 VERBOSE: Metadata update requested.
Requesting control for org.qt-project.qt.metadatareadercontrol/5.0...
Requesting control for org.qt-project.qt.mediaavailabilitycontrol/5.0...
Requesting control for org.qt-project.qt.mediaplayercontrol/5.0...
Requesting control for org.qt-project.qt.medianetworkaccesscontrol/5.0...
12:30:40.460 DEBUG: Entering: virtual QMediaPlayer::State OpenMAXILPlayerControl::state() const.
12:30:40.462 DEBUG: Entering: virtual QMediaPlayer::MediaStatus OpenMAXILPlayerControl::mediaStatus() const.
12:30:40.463 DEBUG: Entering: virtual QMediaPlayer::MediaStatus OpenMAXILPlayerControl::mediaStatus() const.
Requesting control for org.qt-project.qt.videorenderercontrol/5.0...
12:30:40.481 DEBUG: Entering: virtual void OpenMAXILVideoRendererControl::setSurface(QAbstractVideoSurface_).
12:30:40.483 DEBUG: Entering: virtual void OpenMAXILPlayerControl::stop().
12:30:40.485 VERBOSE: Stop
12:30:40.487 DEBUG: Entering: virtual void OpenMAXILPlayerControl::setMedia(const QMediaContent&, QIODevice*).
12:30:40.488 DEBUG: Media: /content/VIDEO.mp4.
12:30:40.490 DEBUG: setMedia thread is: 0x1a78050.
12:30:40.491 VERBOSE: Deferring setMedia()...

Any thoughts?
thank you very much

compiling piomxtextures_qt_driver requires super user permissions

running make in piomxtextures_qt_driver requires super user permissions, looks like it is doing also make install. Below is the error.

mv -f libopenmaxilmediaplayer.so /usr/local/qt-5.4.1/plugins/mediaservice/
mv: inter-device move failed: ‘libopenmaxilmediaplayer.so’ to ‘/usr/local/qt-5.4.1/plugins/mediaservice/libopenmaxilmediaplayer.so’; unable to remove target: Permission denied
Makefile:319: recipe for target '/usr/local/qt-5.4.1/plugins/mediaservice/libopenmaxilmediaplayer.so' failed

Crash when changing video - V5.0.0

I just updated to PiOmxTextures 5.0.0 Beta for RPI 2.

When changing videos I noticed the application started to crash.
This just happens with 2 of the test videos I use.

The secuence is as follows:

  • Videos reproduce normal.
  • I change to the problem video and it reproduces normal.
  • Then I change to another video.
  • Again I change to the problem video and it reproduced badly (several frame drop)
  • When I change video again the application crashes.

This is the Log related to the problem, the problematic video is the file 720p_CocaCola_Refresh.mov (https://drive.google.com/file/d/0B-P_qa88OEwCSTk3eDRkRUxVM28/view?usp=sharing)

The change of videos source was tested under command and also using the signal onStopped, but with the same result. It doesn't matter the amount of videos in between the reproductions of the problematic video, the first one reproduced normal, the second badly and then the app crashes...

10:23:30.619 VERBOSE: �[0;37mStopping OMX clock...�[0m
10:23:30.620 VERBOSE: �[0;37mState changing from STATE_PLAYING to STATE_STOPPED...�[0m
10:23:30.621 VERBOSE: �[0;37mEntering: bool OMX_MediaProcessor::stopInt().�[0m
10:23:30.622 VERBOSE: �[0;37mEntering: bool OMX_MediaProcessor::setFilenameInt(QString).�[0m
10:23:30.622 INFORMATION: �[0;32mCleaning up...�[0m
10:23:30.622 VERBOSE: �[0;37mClosing players...�[0m
10:23:30.738 VERBOSE: �[0;37mMetadata update requested.�[0m
10:23:30.739 INFORMATION: �[0;32mCleanup done.�[0m
10:23:30.740 VERBOSE: �[0;37mOpening file:///home/pi/Videos/720p_CocaCola_Refresh.mov...�[0m
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/pi/Videos/720p_CocaCola_Refresh.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    encoder         : Lavf54.29.104
  Duration: 00:00:15.00, start: 0.000000, bitrate: 1512 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1314 kb/s, 
25 fps, 25 tbr, 25 tbn, 50 tbc (default)
    Metadata:
      handler_name    : DataHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 191 kb/s (default)
    Metadata:
      handler_name    : DataHandler
10:23:30.877 VERBOSE: �[0;37mCopy metatada...�[0m
10:23:30.878 VERBOSE: �[0;37mMetaData�[0m
10:23:30.878 VERBOSE: �[0;37mKey: major_brand, Value: qt  .�[0m
10:23:30.878 VERBOSE: �[0;37mKey: minor_version, Value: 512.�[0m
10:23:30.878 VERBOSE: �[0;37mKey: compatible_brands, Value: qt  .�[0m
10:23:30.878 VERBOSE: �[0;37mKey: encoder, Value: Lavf54.29.104.�[0m
10:23:30.878 VERBOSE: �[0;37mInitializing OMX clock...�[0m
10:23:30.878 VERBOSE: �[0;37mMetadata update requested.�[0m
10:23:30.882 VERBOSE: �[0;37mOpening video using OMX...�[0m
10:23:30.882 VERBOSE: �[0;37mUsing deinterlace mode: 0.�[0m
10:23:30.882 VERBOSE: �[0;37mGenerating texture of size (1280, 720).�[0m
10:23:30.882 VERBOSE: �[0;37mReusing allocated textures.�[0m
Video codec omx-h264 width 1280 height 720 profile 100 fps 25.000000
10:23:30.896 VERBOSE: �[0;37mOpening audio using OMX...�[0m
10:23:30.897 VERBOSE: �[0;37mUsing omx:hdmi output device...�[0m
Audio codec aac channels 2 samplerate 44100 bitspersample 16
10:23:30.926 VERBOSE: �[0;37mState changing from STATE_STOPPED to STATE_STOPPED...�[0m
10:23:30.926 VERBOSE: �[0;37mEntering: bool OMX_MediaProcessor::playInt().�[0m
10:23:30.927 VERBOSE: �[0;37mState changing from STATE_STOPPED to STATE_PLAYING...�[0m
10:23:30.927 VERBOSE: �[0;37mStarting thread.�[0m
10:23:30.928 VERBOSE: �[0;37mEntering: bool OMX_MediaProcessor::playInt().�[0m
10:23:30.928 VERBOSE: �[0;37mDecoding thread started.�[0m
V:PortSettingsChanged: [email protected] interlace:0 deinterlace:0 anaglyph:0 par:inf layer:0 alpha:255
10:23:30.960 VERBOSE: �[0;37mCreating buffers for 4 images.�[0m
10:23:30.960 INFORMATION: �[0;32mBuffer created 0x6a712d00�[0m
10:23:30.961 INFORMATION: �[0;32mBuffer created 0x6a712d70�[0m
10:23:30.961 INFORMATION: �[0;32mBuffer created 0x6a712de0�[0m
10:23:30.962 INFORMATION: �[0;32mBuffer created 0x6a712e50�[0m
10:23:30.962 VERBOSE: �[0;37mComponent renderer: 108cbb0.�[0m
10:23:31.173 WARNING: �[0;33mOne frame couldn't be shown.�[0m
10:23:31.214 WARNING: �[0;33mOne frame couldn't be shown.�[0m
10:23:31.253 WARNING: �[0;33mOne frame couldn't be shown.�[0m
...
10:23:46.052 WARNING: �[0;33mOne frame couldn't be shown.�[0m
10:23:46.092 WARNING: �[0;33mOne frame couldn't be shown.�[0m
10:23:46.132 VERBOSE: �[0;37mEOS in FillBufferDone cb.�[0m
10:23:46.133 WARNING: �[0;33mOne frame couldn't be shown.�[0m
10:23:46.142 VERBOSE: �[0;37mStopping OMX clock...�[0m
10:23:46.143 VERBOSE: �[0;37mState changing from STATE_PLAYING to STATE_STOPPED...�[0m
10:23:46.146 VERBOSE: �[0;37mEntering: bool OMX_MediaProcessor::stopInt().�[0m
10:23:46.147 VERBOSE: �[0;37mEntering: bool OMX_MediaProcessor::setFilenameInt(QString).�[0m
10:23:46.147 INFORMATION: �[0;32mCleaning up...�[0m
10:23:46.148 VERBOSE: �[0;37mClosing players...�[0m
10:23:46.166 WARNING: �[0;33mOne frame couldn't be shown.�[0m
10:23:46.168 WARNING: �[0;33mOne frame couldn't be shown.�[0m
10:23:46.268 VERBOSE: �[0;37mMetadata update requested.�[0m
10:23:46.269 INFORMATION: �[0;32mCleanup done.�[0m
10:23:46.270 VERBOSE: �[0;37mOpening file:///home/pi/Videos/720p_CocaCola.mov...�[0m
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/pi/Videos/720p_CocaCola.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    encoder         : Lavf54.29.104
  Duration: 00:00:15.05, start: 
0.000000, bitrate: 1779 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1582 kb/s, 25 fps, 25 tbr, 25 tbn, 50 tbc (default)
    Metadata:
      handler_name    : DataHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 192 kb/s (default)
    Metadata:
      handler_name    : DataHandler
10:23:46.370 VERBOSE: �[0;37mCopy metatada...�[0m
10:23:46.370 VERBOSE: �[0;37mMetaData�[0m
10:23:46.370 VERBOSE: �[0;37mKey: major_brand, Value: qt  .�[0m
10:23:46.370 VERBOSE: �[0;37mKey: minor_version, Value: 512.�[0m
10:23:46.370 VERBOSE: �[0;37mKey: compatible_brands, Value: qt  .�[0m
10:23:46.370 VERBOSE: �[0;37mKey: encoder, Value: Lavf54.29.104.�[0m
10:23:46.370 VERBOSE: �[0;37mInitializing OMX clock...�[0m
10:23:46.371 VERBOSE: �[0;37mMetadata update requested.�[0m
10:23:46.374 VERBOSE: �[0;37mOpening video using OMX...�[0m
10:23:46.374 VERBOSE: �[0;37mUsing deinterlace mode: 0.�[0m
10:23:46.374 VERBOSE: �[0;37mGenerating texture of size (1280, 720).�[0m
10:23:46.374 VERBOSE: �[0;37mReusing allocated textures.�[0m
Video codec omx-h264 width 1280 height 720 profile 100 fps 25.000000
10:23:46.388 VERBOSE: �[0;37mOpening audio using OMX...�[0m
10:23:46.388 VERBOSE: �[0;37mUsing omx:hdmi output device...�[0m
Audio codec aac channels 2 samplerate 44100 bitspersample 16
10:23:46.416 VERBOSE: �[0;37mState changing from STATE_STOPPED to STATE_STOPPED...�[0m
10:23:46.416 VERBOSE: �[0;37mEntering: bool OMX_MediaProcessor::playInt().�[0m
10:23:46.416 VERBOSE: �[0;37mState changing from STATE_STOPPED to STATE_PLAYING...�[0m
10:23:46.417 VERBOSE: �[0;37mStarting thread.�[0m
10:23:46.418 VERBOSE: �[0;37mEntering: bool OMX_MediaProcessor::playInt().�[0m
10:23:46.418 VERBOSE: �[0;37mDecoding thread started.�[0m
V:PortSettingsChanged: [email protected] interlace:0 deinterlace:0 anaglyph:0 par:inf layer:0 alpha:255
10:23:46.445 VERBOSE: �[0;37mCreating buffers for 4 images.�[0m
10:23:46.446 INFORMATION: �[0;32mBuffer created 0x6a50d1f0�[0m
10:23:46.446 INFORMATION: �[0;32mBuffer created 0x6a55d330�[0m
10:23:46.447 INFORMATION: �[0;32mBuffer created 0x6a51a350�[0m
10:23:46.447 INFORMATION: �[0;32mBuffer created 0x6a557d50�[0m
10:23:46.447 VERBOSE: �[0;37mComponent renderer: 10a7ca0.�[0m
10:23:46.448 WARNING: �[0;33mNo buffer available in any queue.�[0m
QT_Tests: /home/luca/project/pi/pi/piomxtextures_src/omxplayer_lib/OMXVideo.cpp:401: bool COMXVideo::PortSettingsChanged(): Assertion `data' failed.

Crash on cross compiling - V5.0.0 beta 2

Hello,

I am actually do not sure if this is a bug or not but I would try to explain my situation.

I was using POT 4.5.1 with cross compiling. Everything was great but I had some issues and those was resolved on V5.0.0. So I wanted to try it. I have clean whole POT 4.5.1 from my host and build new SD card with POT 5.0.0 binaries like i did for 4.5.1.

I setted up host computer same as I did before.

First of all I tested rpi with sample qml codes with qmlscene and with pocplayer. Those was perfectly working. Then I come back to my host computer to cross compile my previous project from 4.5.1 but suddenly it just crashes like 1 second later after the application start to run.

So I decided to go back to 4.5.1 to understand if my procedure was wrong but it was working perfectly.

Here is the application output,

stdin: is not a tty
QML debugging is enabled. Only use this in a safe environment.
Unable to query physical screen size, defaulting to 100 dpi.
To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
09:31:52.413 VERBOSE: Instantiating player service...
09:31:52.414 VERBOSE: Instantiating QMediaService...
09:31:52.414 VERBOSE: Using deinterlace mode: 0.
09:31:52.415 VERBOSE: Using deinterlace mode: 0.
09:31:52.416 INFORMATION: POT build Aug 27 2015 21:25:04.
09:31:52.419 INFORMATION: Initializing GPU context in media processor...
09:31:52.419 INFORMATION: Initializing buffer provider...
09:31:52.419 VERBOSE: Metadata update requested.
09:31:52.419 ERROR: Failed to get shared OGL context. Please enable it with the proper attr.
Requesting control for org.qt-project.qt.metadatareadercontrol/5.0...
Requesting control for org.qt-project.qt.mediaavailabilitycontrol/5.0...
Requesting control for org.qt-project.qt.mediaplayercontrol/5.0...
Requesting control for org.qt-project.qt.medianetworkaccesscontrol/5.0...
09:31:52.422 VERBOSE: Entering: bool OMX_MediaProcessor::playInt().
Requesting control for org.qt-project.qt.videorenderercontrol/5.0...
QDeclarativeAudio::itemChange
QMediaPlayer::onItemChanged
09:31:52.430 VERBOSE: Entering: bool OMX_MediaProcessor::stopInt().
09:31:52.430 VERBOSE: Entering: bool OMX_MediaProcessor::setFilenameInt(QString).
09:31:52.430 VERBOSE: Opening file:///home/pi/Videos/SampleVideo_1080x720_2mb.mp4...
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/pi/Videos/SampleVideo_1080x720_2mb.mp4':
Metadata:
major_brand : isom
minor_version : 512
compatible_brands: isomiso2avc1mp41
creation_time : 1970-01-01 00:00:00
encoder : Lavf53.24.2
Duration: 00:00:13.50, start: 0.000000, bitrate: 1248 kb/s
Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 862 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
creation_time : 1970-01-01 00:00:00
handler_name : VideoHandler
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, 5.1, fltp, 381 kb/s (default)
Metadata:
creation_time : 1970-01-01 00:00:00
handler_name : SoundHandler
QDeclarativeAudio::itemChange
QMediaPlayer::onItemChanged
09:31:52.649 VERBOSE: Copy metatada...
09:31:52.649 VERBOSE: MetaData
09:31:52.649 VERBOSE: Key: major_brand, Value: isom.
09:31:52.650 VERBOSE: Key: minor_version, Value: 512.
09:31:52.650 VERBOSE: Key: compatible_brands, Value: isomiso2avc1mp41.
09:31:52.650 VERBOSE: Key: creation_time, Value: 1970-01-01 00:00:00.
09:31:52.650 VERBOSE: Key: encoder, Value: Lavf53.24.2.
09:31:52.650 VERBOSE: Initializing OMX clock...
09:31:52.651 VERBOSE: Metadata update requested.
09:31:52.656 VERBOSE: Opening video using OMX...
09:31:52.656 VERBOSE: Using deinterlace mode: 0.
09:31:52.657 VERBOSE: Generating texture of size (1280, 720).
09:31:52.657 INFORMATION: Instantiating texture data...
09:31:52.657 INFORMATION: Creating EGLImageKHR...
09:31:52.657 VERBOSE: EGL image 0 created...
09:31:52.657 INFORMATION: Instantiating texture data...
09:31:52.658 INFORMATION: Creating EGLImageKHR...
09:31:52.658 VERBOSE: EGL image 0 created...
eglCreateImageKHR: failed to create image for buffer (nil) target 12465 error 0x3008
09:31:52.657 ERROR: Failed to create KHR image: 12296.
eglCreateImageKHR: failed to create image for buffer (nil) target 12465 error 0x3008
09:31:52.658 ERROR: Failed to create KHR image: 12296.
09:31:52.658 INFORMATION: Instantiating texture data...
09:31:52.658 INFORMATION: Creating EGLImageKHR...
09:31:52.658 VERBOSE: EGL image 0 created...
09:31:52.658 INFORMATION: Instantiating texture data...
09:31:52.658 INFORMATION: Creating EGLImageKHR...
09:31:52.658 VERBOSE: EGL image 0 created...
09:31:52.659 VERBOSE: Setting up for new textures...
09:31:52.659 WARNING: Couldn't get a valid texture.
Video codec omx-h264 width 1280 height 720 profile 77 fps 25.000000
09:31:52.681 VERBOSE: Opening audio using OMX...
09:31:52.681 VERBOSE: Using omx:hdmi output device...
eglCreateImageKHR: failed to create image for buffer (nil) target 12465 error 0x3008
09:31:52.658 ERROR: Failed to create KHR image: 12296.
eglCreateImageKHR: failed to create image for buffer (nil) target 12465 error 0x3008
09:31:52.658 ERROR: Failed to create KHR image: 12296.
Audio codec aac channels 6 samplerate 48000 bitspersample 16
09:31:52.721 VERBOSE: State changing from STATE_INACTIVE to STATE_STOPPED...
09:31:52.721 VERBOSE: Entering: bool OMX_MediaProcessor::playInt().
09:31:52.721 VERBOSE: State changing from STATE_STOPPED to STATE_PLAYING...
09:31:52.723 VERBOSE: Starting thread.
09:31:52.723 VERBOSE: Entering: bool OMX_MediaProcessor::playInt().
09:31:52.724 VERBOSE: Decoding thread started.
V:PortSettingsChanged: [email protected] interlace:0 deinterlace:0 anaglyph:0 par:inf layer:0 alpha:255
09:31:52.767 VERBOSE: Creating buffers for 4 images.
bash: line 1: 2813 Segmentation fault DISPLAY=':0.0' /opt/Piomx5002/bin/Piomx5002
Application finished with exit code 139.

And here is my main.qml:

import QtQuick 2.0
import QtMultimedia 5.0

Item {
width: 480; height: 320

MediaPlayer {
    id: player
    source: "file:///home/pi/Videos/SampleVideo_1080x720_2mb.mp4"
    autoPlay: true
    onStopped: { player.seek(0); player.play(); }
}

VideoOutput {
    id: video
    anchors.fill: parent
    source: player
    fillMode: VideoOutput.Stretch
}

Component.onCompleted: {
    player.play();
}

}

Well also, if I copy this main.qml and run with qmlscene it is also working with 5.0.0 build.

Also it might help to solve the problem, QtCreator editor underline "import QtMultimedia 5.0" and if I mouseover it, it says;

"Errors while reading typeinfo files: Cannot open /opt/rpi/sysroot/usr/local/Qt-rasp2-5.5.0/qml/QtMultimedia/plugins.qmltypes for reading: No such a file or directory"

But there is plugins.qmltypes file. Here is the list of /opt/rpi/sysroot/usr/local/Qt-rasp2-5.5.0/qml/QtMultimedia$ ls -l
total 300
-rwxr-xr-x 1 root root 220168 Eyl 18 12:19 libdeclarative_multimedia.so
-rw-r--r-- 1 root root 56359 Eyl 18 12:19 plugins.qmltypes
-rw-r--r-- 1 root root 135 Eyl 18 12:19 qmldir
-rw-r--r-- 1 root root 21774 Eyl 18 12:19 Video.qml

Thank you,
Sina

Garbage on video changed

When using latest 4.3.0 version and Qt 5.4 (from the tar in your blog) i get garbage on screen when changing the video it looks as if there is a buffer which is not zeroed so we get noise.

 import QtQuick 2.3
 import QtQuick.Controls 1.2
 import QtQuick.Window 2.2
 import QtMultimedia 5.0

 ApplicationWindow {
 id: app
 title: qsTr("Hello World")
 width: 640
 height: 480
 visible: true
 property var videos: ["/home/pi/test.mp4", "/home/pi/test1.mp4", "/home/pi/test2.mp4", "/home/pi/test3.mp4", "/home/pi/este-no-existe.mp4"]
 property int index:0
 Video{
    id: vid
    width: 400
    height: 400

    anchors.fill: parent
    source: videos[index]
    autoPlay: true
    onStopped: {
        var i = app.index
        i = (i+1)%videos.length
        index=i
    }
   }
  }

Duration atribute is not trigerred once changed

I have just made a simple program using PiomxTextures. I need to know current media duration in order to trigger an event and this attribute changes asynchronously, so in desktop mode i am using onDurationChanged to dispatch event. But this is no longer working in Piomxtextures.

MediaPlayer {
id: player
autoPlay: false
onDurationChanged: {
console.log('Duration changed: ' + player.duration)
console.log('Finish early')
timer.interval = (player.duration - 1200)
timer.start()
}

muting a video from QML crashes the app

the app exits when mute property is used from QML, the app exits with:

06:29:09.189 DEBUG: Entering: virtual QMediaPlayer::State OpenMAXILPlayerControl::state() const.
06:29:09.190 DEBUG: Entering: virtual QMediaPlayer::MediaStatus OpenMAXILPlayerControl::mediaStatus() const.
06:29:09.191 DEBUG: Entering: virtual QMediaPlayer::MediaStatus OpenMAXILPlayerControl::mediaStatus() const.
QDeclarativeAudio::itemChange
QMediaPlayer::onItemChanged
Requesting control for org.qt-project.qt.videorenderercontrol/5.0...
06:29:09.276 DEBUG: Entering: virtual void OpenMAXILVideoRendererControl::setSurface(QAbstractVideoSurface*).
06:29:12.309 DEBUG: Entering: virtual bool OpenMAXILPlayerControl::isMuted() const.

Video Start position

Here is a complete demo to reproduce the bug (expires in 48 hours):
http://expirebox.com/download/2ab22febf1987beda8aa7944e819b01a.html

It seem related to the profile / level used to encode the video file.
As you can see in the demo ah h264 file encoded with ffmpeg and the parameter "-profile:v high -level 40" causes the video to start skipping the very first part of the video.
Same video encoded with "-profile:v baseline -level 30" seems ok and starts correctly.
Thank you for your work,
hope this helps ;)

The video can't be replayed

After the video finished playing, the play() method doesnt work. Also the CPU usage jumps to about 100%.

EDIT: after the video stopped playing the CPU usage drops, but after the play() method is used (from QML) the debug info is this:

�[0;34mvirtual void OpenMAXILPlayerControl::play()
�[0;37m�[0;37m
Deferring play() command...
�[0;37m
�[0;37mProcessing post play()...
�[0;37m
�[0;34mvoid OpenMAXILPlayerControl::playInt()
�[0;37m�[0;37mPlay
�[0;37m�[0;37mStarting thread.
�[0;37m�[0;37mDecoding thread started.
�[0;37m

And the CPU usage jumps to 97%

Path solve error for explicit local files

I'm working on a project with my qml files in a qrc, but the video files are local.
That's why I need to pass the source strings as "file://home/pi/Videos/......."

The problem is that in this case the path is trimmed as it can be seen in the next debug output

17:09:46.587 DEBUG: Entering: virtual void OpenMAXILPlayerControl::setMedia(const QMediaContent&, QIODevice*).
17:09:46.587 DEBUG: [0x6d13b470] Media: file://home/pi/Videos/720p_ci24.mov.
17:09:46.588 DEBUG: [0x6d13b470] setMedia thread is: 0x554758.
17:09:46.588 VERBOSE: Media status changing from MEDIA_STATUS_NO_MEDIA to MEDIA_STATUS_LOADING...
17:09:46.588 VERBOSE: Entering: bool OMX_MediaProcessor::setFilenameInt(const QString&).
17:09:46.589 DEBUG: [0x6d13b470] virtual void OpenMAXILPlayerControl::play()
17:09:46.589 VERBOSE: Opening file://home/pi/Videos/720p_ci24.mov...
17:09:46.590 DEBUG: [0x6d13b470] virtual void OpenMAXILPlayerControl::play()
17:09:46.609 ERROR: Failed to open source /pi/Videos/720p_ci24.mov.
17:09:46.609 VERBOSE: Media status changing from MEDIA_STATUS_LOADING to MEDIA_STATUS_INVALID_MEDIA...

Looking into the sources I found at omx_mediaprocessor.cpp:

   // It seems that omxplayer expects path and not local URIs.
   QUrl url(filename);
   if (url.isLocalFile() && filename.startsWith("file://"))
      filename = url.path();

To get the correct path I have to double the home directory as follows:

"file://home/home/pi/Videos/720p_ci24.mov"

It seems to be a minor bug

ERROR: Failed to create KHR image: 12300

Hi,

In this simple example, I create/destroy the mediaplayer dynamically. After some times, I always got this error:

09:14:08.076 INFORMATION: Instantiating texture data...
09:14:08.096 INFORMATION: Creating EGLImageKHR...
09:14:08.096 INFORMATION: Instantiating texture data...
09:14:08.532 INFORMATION: Creating EGLImageKHR...
09:14:08.533 INFORMATION: Instantiating texture data...
09:14:08.553 INFORMATION: Creating EGLImageKHR...
09:14:08.553 INFORMATION: Instantiating texture data...
09:14:08.554 INFORMATION: Creating EGLImageKHR...
eglCreateImageKHR: failed to create image for buffer 0x39 target 12465 error 0x300c
09:14:08.556 ERROR: Failed to create KHR image: 12300.

This example is launched with qmlscene.

Do you have any idea about this ?

mediaPlayerTest.zip

Memory leaks

Leaving the player switching between several videos, like a playlist it seems to leak about 3~5 MB on each loop, and depending on the video. Im using the Big Buck Bunny and others to test.

Cannot compile

I've tried compiling the projects for the Pi 1 by using the prepare_3rdparty.sh and prepare_openmaxil_backend.sh scripts, but I've run into several problems:

prepare_openmaxil_backend.sh expects the compiled result of ffmpeg in ../3rdparty/ffmpeg/lib (line 25). But the files are in ../3rdparty/ffmpeg/ffmpeg_pi1.

The next problem, I ran into, has to do with the GLES-includes. I get a lot of strange errors of this kind:
http://pastebin.com/iXrcAdMq

Changing the includes from #include <GLES2/gl2.h> to #include <GLES3/gl3.h> seems to fix this problem, but I have no idea, if that is the correct way to fix this issue.
There is another guy, who had the same problem a few months ago, but he posted his question in the wrong place, so nobody answered:
https://forum.qt.io/topic/62284/qt-5-6-qopengl-library-missing

I'm not able to verify, if my changes are working, as I'm not sure, what the expected build result is and as I don't know yet, how the Qt plugin system works. The script tries to copy some files at the end, but I think the paths at this place are wrong, too:

cp -a build-PiOmxTextures/libPiOmxTextures* PiOmxTextures/lib
cp -a build-PiOmxTextures/piomxtextures/* PiOmxTextures/include
cp -a ../../3rdparty/ffmpeg/include ffmpeg
cp -a ../../3rdparty/ffmpeg/lib ffmpeg

The ffmpeg path probably has to be changed to ../3rdparty/ffmpeg/ffmpeg_pi1. The piomxtextures directories simply doesn't exist after my build finishes.

Can you help me fix these issues?

I haven't understood yet, how to use the Qt plugin. Does Qt automatically use your plugin for video playback if it is present in Qt's plugin directory or do you have to use a special QML-Item? If there is no special QML-item, how does Qt know, which video backend to use?

Edit:
Some additional information: I'm trying to build with Qt 5.6, and I'm using a current Raspbian image on a Pi 1.
Output of uname -a:
Linux raspberrypi 4.1.14+ #4 PREEMPT Wed Mar 23 15:16:24 UTC 2016 armv6l GNU/Linux

Edit2:
Perhaps this stackoverflow-thread is helpful: http://stackoverflow.com/questions/31003863/gles-3-0-including-gl2ext-h

video seek() method goes to different video position

please see this log:

qml: video pos: 9805
qml: video pos: 9906
qml: video pos: 10006
qml: issuing seek(5000) from QML
17:54:22.761 DEBUG: Entering: virtual void OpenMAXILPlayerControl::setPosition(qint64).
17:54:22.761 VERBOSE: Seek 5000ms.
17:54:22.765 INFORMATION: Seek to: 00:00:05
17:54:22.786 VERBOSE: Seeked to: 00:00:05
qml: video pos: 1321
qml: video pos: 1421
qml: video pos: 1521
qml: video pos: 1628

as yo usee, it seeks to an earlier point 1321 instead of 5000. Also when i do seek(0) it does:

qml: video pos: 9940
qml: video pos: 10039
17:59:43.520 DEBUG: Entering: virtual void OpenMAXILPlayerControl::setPosition(qint64).
17:59:43.520 VERBOSE: Seek 0ms.
17:59:43.524 INFORMATION: Seek to: 00:00:00
17:59:43.547 VERBOSE: Seeked to: 00:00:00
qml: video pos: -144
qml: video pos: -45
qml: video pos: 54

note the minus there, is this normal behaviour? The seek(0) doesn't bother me, but seek to a non zero position breaks some QML logic.

Also the underseek is different from video to video. On this video it is about 3.5 seconds, we have other videos with 0.5 under seek. (i suspect the bigger the video the biger is underseek but its not proven)

Is this a normal behaviour?

Can't Restart if stopped at beginning - V5.0.0

If I start a video (play) and stop it, immediately after it starts the video stop responding to play command.

11:55:51.849 VERBOSE: �[0;37mOpening file:///home/pi/Videos/720p_cocacola.mov...�[0m
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/pi/Videos/720p_cocacola.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: 
qt  
    encoder         : Lavf54.29.104
  Duration: 00:00:11.01, start: 0.000000, bitrate: 1503 kb/s
    Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720 [SAR 1:1 DAR 16:9], 1304 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc (default)
    Metadata:
      handler_name    : DataHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 191 kb/s (default)
    Metadata:
      handler_name    : DataHandler
QDeclarativeAudio::itemChange
QMediaPlayer::onItemChanged
11:55:51.944 VERBOSE: �[0;37mCopy metatada...�[0m
11:55:51.944 VERBOSE: �[0;37mMetaData�[0m
11:55:51.944 VERBOSE: �[0;37mKey: major_brand, Value: qt  .�[0m
11:55:51.944 VERBOSE: �[0;37mKey: minor_version, Value: 512.�[0m
11:55:51.945 VERBOSE: �[0;37mKey: compatible_brands, Value: qt  .�[0m
11:55:51.945 VERBOSE: �[0;37mKey: encoder, Value: Lavf54.29.104.�[0m
11:55:51.945 VERBOSE: �[0;37mInitializing OMX clock...�[0m
11:55:51.951 VERBOSE: �[0;37mOpening video using OMX...�[0m
11:55:51.951 VERBOSE: �[0;37mUsing deinterlace mode: 0.�[0m
11:55:51.951 VERBOSE: �[0;37mGenerating texture of size (1280, 720).�[0m
11:55:51.952 INFORMATION: �[0;32mInstantiating texture data...�[0m
11:55:51.977 INFORMATION: �[0;32mCreating EGLImageKHR...�[0m
11:55:51.990 VERBOSE: �[0;37mEGL image 1909 created...�[0m
11:55:51.990 VERBOSE: �[0;37mCreating OMX_TextureData...�[0m
11:55:51.990 INFORMATION: �[0;32mInstantiating texture data...�[0m
11:55:52.008 INFORMATION: �[0;32mCreating EGLImageKHR...�[0m
11:55:52.008 VERBOSE: �[0;37mEGL image 1910 created...�[0m
11:55:52.008 VERBOSE: �[0;37mCreating OMX_TextureData...�[0m
11:55:52.009 INFORMATION: �[0;32mInstantiating texture data...�[0m
11:55:52.041 INFORMATION: �[0;32mCreating EGLImageKHR...�[0m
11:55:52.055 VERBOSE: �[0;37mEGL image 1911 created...�[0m
11:55:52.055 VERBOSE: �[0;37mCreating OMX_TextureData...�[0m
11:55:52.056 INFORMATION: �[0;32mInstantiating texture data...�[0m
11:55:52.074 INFORMATION: �[0;32mCreating EGLImageKHR...�[0m
11:55:52.074 VERBOSE: �[0;37mEGL image 1912 created...�[0m
11:55:52.074 VERBOSE: �[0;37mCreating OMX_TextureData...�[0m
Video codec omx-h264 width 1280 height 720 profile 100 fps 29.970030
11:55:52.095 VERBOSE: �[0;37mOpening audio using OMX...�[0m
11:55:52.096 VERBOSE: �[0;37mUsing omx:both output device...�[0m
Audio codec aac channels 2 samplerate 44100 bitspersample 16
11:55:52.126 VERBOSE: �[0;37mState changing from STATE_INACTIVE to STATE_STOPPED...�[0m
11:55:52.127 VERBOSE: �[0;37mEntering: bool OMX_MediaProcessor::playInt().�[0m
11:55:52.127 VERBOSE: �[0;37mState changing from STATE_STOPPED to STATE_PLAYING...�[0m
11:55:52.128 VERBOSE: �[0;37mStarting thread.�[0m
11:55:52.129 VERBOSE: �[0;37mEntering: bool OMX_MediaProcessor::playInt().�[0m
11:55:52.129 VERBOSE: �[0;37mDecoding thread started.�[0m
V:PortSettingsChanged: [email protected] interlace:0 deinterlace:0 anaglyph:0 par:inf layer:0 alpha:255
11:55:52.151 VERBOSE: �[0;37mCreating buffers for 4 images.�[0m
11:55:52.152 INFORMATION: �[0;32mBuffer created 0x6d465d20�[0m
11:55:52.152 INFORMATION: �[0;32mBuffer created 0x6d465e10�[0m
11:55:52.153 INFORMATION: �[0;32mBuffer created 0x6d465e80�[0m
11:55:52.153 INFORMATION: �[0;32mBuffer created 0x6d465d90�[0m
11:55:52.153 VERBOSE: �[0;37mComponent renderer: 1b5b338.�[0m
11:55:52.172 VERBOSE: �[0;37mMetadata update requested.�[0m
11:55:52.172 VERBOSE: �[0;37mSetting up for new textures...�[0m
qml: 07/09 11:55:53 click Stop
11:55:53.507 VERBOSE: �[0;37mEntering: bool OMX_MediaProcessor::stopInt().�[0m
11:55:53.507 VERBOSE: �[0;37mWaiting for the stop command to finish.�[0m
11:55:53.514 VERBOSE: �[0;37mStopping OMX clock...�[0m
11:55:53.517 VERBOSE: �[0;37mState changing from STATE_PLAYING to STATE_STOPPED...�[0m
11:55:53.517 VERBOSE: �[0;37mState changing from STATE_STOPPED to STATE_STOPPED...�[0m
11:55:53.518 INFORMATION: �[0;32mStop command issued.�[0m
qml: 07/09 11:55:54 click Play
11:55:54.097 VERBOSE: �[0;37mEntering: bool OMX_MediaProcessor::playInt().�[0m
11:55:54.097 VERBOSE: �[0;37mState changing from STATE_STOPPED to STATE_PLAYING...�[0m
11:55:54.099 VERBOSE: �[0;37mStarting thread.�[0m
11:55:54.099 VERBOSE: �[0;37mDecoding thread started.�[0m
11:55:54.100 INFORMATION: �[0;32mSeek to: 00:00:00�[0m
11:55:54.117 VERBOSE: �[0;37mSeeked to: 00:00:00�[0m
qml: 07/09 11:55:54 click Stop
11:55:54.736 VERBOSE: �[0;37mEntering: bool OMX_MediaProcessor::stopInt().�[0m
11:55:54.736 VERBOSE: �[0;37mWaiting for the stop command to finish.�[0m
11:55:54.743 VERBOSE: �[0;37mStopping OMX clock...�[0m
11:55:54.745 VERBOSE: �[0;37mState changing from STATE_PLAYING to STATE_STOPPED...�[0m
11:55:54.745 VERBOSE: �[0;37mState changing from STATE_STOPPED to STATE_STOPPED...�[0m
11:55:54.745 INFORMATION: �[0;32mStop command issued.�[0m
qml: 07/09 11:55:57 click Play
11:55:57.313 VERBOSE: �[0;37mEntering: bool OMX_MediaProcessor::playInt().�[0m
11:55:57.313 VERBOSE: �[0;37mState changing from STATE_STOPPED to STATE_PLAYING...�[0m
11:55:57.314 VERBOSE: �[0;37mStarting thread.�[0m
11:55:57.314 VERBOSE: �[0;37mDecoding thread started.�[0m

However the logs says "Decoding thread started" but no video is shown.

The only way to get video again is to change the source.

I know start/stop a video in such a stressful way is not meant to be done, but I found the bug testing different things.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.