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.
		
		
		
		
			
				
					45 lines
				
				1.0 KiB
			
		
		
			
		
	
	
					45 lines
				
				1.0 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								#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;
							 | 
						||
| 
								 | 
							
								};
							 |