mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-07-21 09:12:25 +08:00
5afb4b9731
* start streaming after segment loaded dd * loop from beginning if reaches the end * isSegmentLoaded * one loop * move to ctor * delete stream_thread_ on exit * pause streaming while testing seek * Revert "one loop" This reverts commit f029cd118f7ac876dee1dbf2b91478403211ad47. * test:dummy stream thread * cleanup * start thread after vipcserver old-commit-hash: f6de10b55a089a0600dd9826ffa3bfc140752370
40 lines
1.1 KiB
C++
40 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include <unistd.h>
|
|
#include "cereal/visionipc/visionipc_server.h"
|
|
#include "selfdrive/common/queue.h"
|
|
#include "selfdrive/ui/replay/framereader.h"
|
|
#include "selfdrive/ui/replay/logreader.h"
|
|
|
|
class CameraServer {
|
|
public:
|
|
CameraServer(std::pair<int, int> cameras[MAX_CAMERAS] = nullptr);
|
|
~CameraServer();
|
|
void pushFrame(CameraType type, FrameReader* fr, const cereal::EncodeIndex::Reader& eidx);
|
|
inline void waitFinish() {
|
|
while (publishing_ > 0) usleep(0);
|
|
}
|
|
|
|
protected:
|
|
void startVipcServer();
|
|
void thread();
|
|
|
|
struct Camera {
|
|
VisionStreamType rgb_type;
|
|
VisionStreamType yuv_type;
|
|
int width;
|
|
int height;
|
|
};
|
|
|
|
Camera cameras_[MAX_CAMERAS] = {
|
|
{.rgb_type = VISION_STREAM_RGB_BACK, .yuv_type = VISION_STREAM_YUV_BACK},
|
|
{.rgb_type = VISION_STREAM_RGB_FRONT, .yuv_type = VISION_STREAM_YUV_FRONT},
|
|
{.rgb_type = VISION_STREAM_RGB_WIDE, .yuv_type = VISION_STREAM_YUV_WIDE},
|
|
};
|
|
|
|
std::atomic<int> publishing_ = 0;
|
|
std::thread camera_thread_;
|
|
std::unique_ptr<VisionIpcServer> vipc_server_;
|
|
SafeQueue<std::tuple<CameraType, FrameReader*, const cereal::EncodeIndex::Reader>> queue_;
|
|
};
|