/* Copyright (C) 2012 Harald Sitter This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library. If not, see . */ #ifndef Phonon_VLC_VIDEODATAOUTPUT_H #define Phonon_VLC_VIDEODATAOUTPUT_H #include #include #include #include #include "sinknode.h" #include "videomemorystream.h" namespace Phonon { namespace VLC { /** * @author Harald Sitter */ class VideoDataOutput : public QObject, public SinkNode, public Experimental::VideoDataOutputInterface, private VideoMemoryStream { Q_OBJECT Q_INTERFACES(Phonon::Experimental::VideoDataOutputInterface) public: explicit VideoDataOutput(QObject *parent); ~VideoDataOutput(); void handleConnectToMediaObject(MediaObject *mediaObject) override; void handleDisconnectFromMediaObject(MediaObject *mediaObject) override; void handleAddToMedia(Media *media) override; Experimental::AbstractVideoDataOutput *frontendObject() const override; void setFrontendObject(Experimental::AbstractVideoDataOutput *frontend) override; void *lockCallback(void **planes) override; void unlockCallback(void *picture,void *const *planes) override; void displayCallback(void *picture) override; unsigned formatCallback(char *chroma, unsigned *width, unsigned *height, unsigned *pitches, unsigned *lines) override; void formatCleanUpCallback() override; private: Experimental::AbstractVideoDataOutput *m_frontend; Experimental::VideoFrame2 m_frame; QByteArray m_buffer; QMutex m_mutex; }; } // namespace VLC } // namespace Phonon #endif // PHONON_VLC_VIDEODATAOUTPUT_H