mirror of
https://github.com/MoreTore/openpilot.git
synced 2026-09-29 19:04:03 +08:00
504453c3e4
* support live streaming
* update live stream's time
* cleanup stream classes
* disable video control in live streaming mode
* emit streamStarted() in LiveStream::streamThread
* disable some features in live streaming mode
* refactor charts to support live streaming mode
* disable dynamic mode checkbox in live streaming mode
* updateDispalyRange
* thread safe events
* TODO: add support for ZMQ
* atomic time stamp
* only keep settings.cached_segment_limit*60 seconds data in liveStream
* make charts work better in live mode
* cleanup ChartView
* fix toolbar
* cleanup
cleanup
* disable openpilotPrefix and useOpenGL on macos
* add comment
* exit gracefully
* support ZMQ
* use ::operator new/delete
* cleanup streams
* cleanup
* align stream buffers
* check looping back
* check if series is empty
* cleanup
* add TODO: write stream to log file to replay it
* upper_bound
* remove class member event_range
* change default settings value
* cleanup updateDisplayrange
* fix merge error
old-commit-hash: f9490739ab
59 lines
1.3 KiB
C++
59 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include <atomic>
|
|
#include <mutex>
|
|
|
|
#include <QHBoxLayout>
|
|
#include <QFuture>
|
|
#include <QLabel>
|
|
#include <QPushButton>
|
|
#include <QSlider>
|
|
|
|
#include "selfdrive/ui/qt/widgets/cameraview.h"
|
|
#include "selfdrive/ui/qt/widgets/controls.h"
|
|
#include "tools/cabana/streams/abstractstream.h"
|
|
|
|
class Slider : public QSlider {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
Slider(QWidget *parent);
|
|
|
|
private:
|
|
void mousePressEvent(QMouseEvent *e) override;
|
|
void mouseMoveEvent(QMouseEvent *e) override;
|
|
void sliderChange(QAbstractSlider::SliderChange change) override;
|
|
void paintEvent(QPaintEvent *ev) override;
|
|
void streamStarted();
|
|
void loadThumbnails();
|
|
QString getThumbnailString(const capnp::Data::Reader &data);
|
|
|
|
int slider_x = -1;
|
|
std::vector<std::tuple<int, int, TimelineType>> timeline;
|
|
std::mutex thumbnail_lock;
|
|
std::atomic<bool> abort_load_thumbnail = false;
|
|
QMap<uint64_t, QString> thumbnails;
|
|
QFuture<void> thumnail_future;
|
|
QSize thumbnail_size = {};
|
|
};
|
|
|
|
class VideoWidget : public QWidget {
|
|
Q_OBJECT
|
|
|
|
public:
|
|
VideoWidget(QWidget *parnet = nullptr);
|
|
void rangeChanged(double min, double max, bool is_zommed);
|
|
|
|
protected:
|
|
void updateState();
|
|
void updatePlayBtnState();
|
|
void timeLabelClicked();
|
|
|
|
CameraWidget *cam_widget;
|
|
QLabel *end_time_label;
|
|
ElidedLabel *time_label;
|
|
QHBoxLayout *slider_layout;
|
|
QPushButton *play_btn;
|
|
Slider *slider;
|
|
};
|