videowidget.h 2.35 KB
Newer Older
1
/***************************************************************************
2
 * Copyright (C) 2015-2016 by Savoir-faire Linux                                *
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
 * Author: Edric Ladent Milaret <edric.ladent-milaret@savoirfairelinux.com>*
 *                                                                         *
 * This program is free software; you can redistribute it and/or modify    *
 * it under the terms of the GNU General Public License as published by    *
 * the Free Software Foundation; either version 3 of the License, or       *
 * (at your option) any later version.                                     *
 *                                                                         *
 * This program 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 General Public License for more details.                            *
 *                                                                         *
 * You should have received a copy of the GNU General Public License       *
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.   *
 **************************************************************************/

Edric Milaret's avatar
Edric Milaret committed
19
#pragma once
20 21 22

#include <QWidget>
#include <QPainter>
23 24

#include <memory>
25 26 27 28

#include "video/renderer.h"
#include "video/previewmanager.h"
#include "callmodel.h"
29 30 31 32 33

class VideoWidget : public QWidget
{
    Q_OBJECT
public:
34
    explicit VideoWidget(QWidget* parent = 0);
35 36
    ~VideoWidget();
    void paintEvent(QPaintEvent* evt);
37 38
    void setPreviewDisplay(bool display);
    void setDistantRenderer(Video::Renderer* renderer);
39
    void setIsFullPreview(bool full);
40 41 42

public slots:
    void previewStarted(Video::Renderer* renderer);
Edric Milaret's avatar
Edric Milaret committed
43
    void previewStopped();
44 45 46 47 48 49 50
    void frameFromPreview();
    void frameFromDistant();
    void renderingStopped();

private:
    Video::Renderer* previewRenderer_;
    Video::Renderer* renderer_;
51 52 53 54 55 56 57
    Video::Frame currentPreviewFrame_;
    Video::Frame currentDistantFrame_;
    QMutex mutex_;
    std::unique_ptr<QImage> distantImage_;
    std::unique_ptr<QImage> previewImage_;
    std::vector<uint8_t> frameDistant_;
    std::vector<uint8_t> framePreview_;
58
    bool isPreviewDisplayed_;
59
    bool fullPreview_;
60

Edric Milaret's avatar
Edric Milaret committed
61
    constexpr static int previewMargin_ = 15;
62 63
};