#pragma once #include #include "StreamingEngine.h" #include #include #include class CameraController { public: explicit CameraController(std::shared_ptr camera); // Process JSON command and return JSON response std::string processCommand(const std::string& jsonCommand); // Get streaming engine for external control std::shared_ptr getStreamingEngine() { return streamingEngine_; } private: // Command handlers std::string handleSetFormat(const std::string& width, const std::string& height, const std::string& framerate, const std::string& format); std::string handleGetFormats(); std::string handleSetExposure(const std::string& mode, const std::string& value); std::string handleSetWhiteBalance(const std::string& mode, const std::string& temperature); std::string handleSetBrightness(const std::string& value); std::string handleSetContrast(const std::string& value); std::string handleSetSaturation(const std::string& value); std::string handleSetSharpness(const std::string& value); std::string handleSetGamma(const std::string& value); std::string handleSetGain(const std::string& value); std::string handleGetStatus(); std::string handleStartStream(); std::string handleStopStream(); std::string handleSetPipeline(const std::string& pipeline); // Helper functions VX_IMAGE_FORMAT stringToFormat(const std::string& format); std::string formatToString(VX_IMAGE_FORMAT format); std::string createErrorResponse(const std::string& error); std::string createSuccessResponse(const std::string& message = ""); std::shared_ptr camera_; std::shared_ptr streamingEngine_; std::mutex mutex_; std::string gstPipeline_; };