You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.0 KiB
44 lines
1.0 KiB
#pragma once
|
|
|
|
#include <memory>
|
|
|
|
#include <QOpenGLFunctions>
|
|
#include <QOpenGLWidget>
|
|
|
|
#include "cereal/visionipc/visionipc_client.h"
|
|
#include "selfdrive/common/glutil.h"
|
|
#include "selfdrive/common/mat.h"
|
|
#include "selfdrive/common/visionimg.h"
|
|
#include "selfdrive/ui/ui.h"
|
|
|
|
class CameraViewWidget : public QOpenGLWidget, protected QOpenGLFunctions {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
using QOpenGLWidget::QOpenGLWidget;
|
|
explicit CameraViewWidget(VisionStreamType stream_type, QWidget* parent = nullptr);
|
|
~CameraViewWidget();
|
|
|
|
signals:
|
|
void frameUpdated();
|
|
|
|
protected:
|
|
void paintGL() override;
|
|
void initializeGL() override;
|
|
void showEvent(QShowEvent *event) override;
|
|
void hideEvent(QHideEvent *event) override;
|
|
|
|
protected slots:
|
|
void updateFrame();
|
|
|
|
private:
|
|
VisionBuf *latest_frame = nullptr;
|
|
GLuint frame_vao, frame_vbo, frame_ibo;
|
|
mat4 frame_mat;
|
|
std::unique_ptr<VisionIpcClient> vipc_client;
|
|
std::unique_ptr<EGLImageTexture> texture[UI_BUF_COUNT];
|
|
std::unique_ptr<GLShader> gl_shader;
|
|
|
|
VisionStreamType stream_type;
|
|
QTimer* timer;
|
|
};
|
|
|