66 :
x(ccdChip.getSubX() / ccdChip.getBinX())
67 ,
y(ccdChip.getSubY() / ccdChip.getBinY())
68 ,
w(ccdChip.getSubW() / ccdChip.getBinX())
69 ,
h(ccdChip.getSubH() / ccdChip.getBinY())
76 ,
w(sensorInterface.getBufferSize() * 8 / sensorInterface.getBPS())
98 return other.
x !=
x || other.
y !=
y || other.
w !=
w || other.
h !=
h;
109 bool ISNewText(
const char * dev,
const char * name,
char * texts[],
char * names[],
int n);
110 bool ISNewSwitch(
const char * dev,
const char * name,
ISState * states,
char * names[],
int n);
111 bool ISNewNumber(
const char * dev,
const char * name,
double values[],
char * names[],
int n);
113 void newFrame(
const uint8_t *
buffer, uint32_t nbytes, uint64_t timestamp);
120 void setSize(uint16_t width, uint16_t height);
129 static std::string
expand(
const std::string &fname,
const std::map<std::string, std::string> &patterns);
149 bool recordStream(
const uint8_t *
buffer, uint32_t nbytes,
double deltams, uint64_t timestamp);
151 void getStreamFrame(uint16_t * x, uint16_t * y, uint16_t * w, uint16_t * h)
const;
152 void setStreamFrame(uint16_t x, uint16_t y, uint16_t w, uint16_t h);
158 const uint8_t *srcBuffer,
159 const FrameInfo &srcFrameInfo,
The CCDChip class provides functionality of a CCD Chip within a CCD.
Class to provide extended functionality for devices in addition to the functionality provided by INDI...
The EncoderInterface class is the base class for video streaming encoders.
The EncoderManager class contains a list of active supported encoders.
Provides generic container for INDI properties.
The RecorderInterface class is the base class for recorders.
The RecorderManager class contains a list of active supported recorders.
The SensorDevice class provides functionality of a Sensor Device within a Sensor.
bool ISNewSwitch(const char *dev, const char *name, ISState *states, char *names[], int n)
std::atomic< bool > isRecording
bool setPixelFormat(INDI_PIXEL_FORMAT pixelFormat, uint8_t pixelDepth)
INDI::PropertySwitch RecordStreamSP
bool hasStreamingExposure
static std::string expand(const std::string &fname, const std::map< std::string, std::string > &patterns)
void setStreamFrame(uint16_t x, uint16_t y, uint16_t w, uint16_t h)
INDI::PropertySwitch EncoderSP
std::atomic< bool > isStreaming
INDI::PropertySwitch StreamSP
static void subframe(const uint8_t *srcBuffer, const FrameInfo &srcFrameInfo, uint8_t *dstBuffer, const FrameInfo &dstFrameInfo)
void newFrame(const uint8_t *buffer, uint32_t nbytes, uint64_t timestamp)
std::atomic< bool > isRecordingAboutToClose
bool stopRecording(bool force=false)
UniqueQueue< TimeFrame > framesIncoming
virtual ~StreamManagerPrivate()
INDI::PropertyBlob imageBP
std::atomic< bool > framesThreadTerminate
INDI::PropertyNumber RecordOptionsNP
EncoderInterface * encoder
const char * getDeviceName() const
std::string recordfiledir
uint32_t frameCountDivider
INDI::PropertyNumber StreamTimeNP
INDI::PropertyNumber FpsNP
void setSize(uint16_t width, uint16_t height)
EncoderManager encoderManager
bool ISNewText(const char *dev, const char *name, char *texts[], char *names[], int n)
std::string recordfilename
bool uploadStream(const uint8_t *buffer, uint32_t nbytes)
uploadStream Upload frame to client using the selected encoder
INDI_PIXEL_FORMAT PixelFormat
RecorderManager recorderManager
bool recordStream(const uint8_t *buffer, uint32_t nbytes, double deltams, uint64_t timestamp)
recordStream Calls the backend recorder to record a single frame.
RecorderInterface * recorder
INDI::PropertyText RecordFileTP
INDI::PropertyNumber StreamFrameNP
bool setStream(bool enable)
DefaultDevice * currentDevice
INDI::PropertyNumber LimitsNP
StreamManagerPrivate(DefaultDevice *defaultDevice)
void getStreamFrame(uint16_t *x, uint16_t *y, uint16_t *w, uint16_t *h) const
void asyncStreamThread()
Thread processing frames and forwarding to recording and preview.
void ISGetProperties(const char *dev)
FrameInfo updateSourceFrameInfo()
bool ISNewNumber(const char *dev, const char *name, double values[], char *names[], int n)
INDI::PropertyNumber StreamExposureNP
INDI::PropertySwitch RecorderSP
The UniqueQueue class is a thread-safe FIFO container adapter.
Constants and Data structure definitions for the interface to the reference INDI C API implementation...
std::vector< uint8_t > buffer
Namespace to encapsulate INDI client, drivers, and mediator classes.
bool operator!=(const FrameInfo &other) const
FrameInfo(const SensorInterface &sensorInterface, size_t bytesPerColor=1)
FrameInfo(const CCDChip &ccdChip, size_t bytesPerColor=1)
std::vector< uint8_t > frame