Loading...
Searching...
No Matches
ScreenReceiver.h
Go to the documentation of this file.
1// Copyright (c) 2025 Dave R. Smith.
2// Malena Framework — Licensed under PolyForm Noncommercial 1.0.0; commercial use requires a paid license. See LICENSE.
3
4#pragma once
5#ifndef MALENA_SCREEN_RECEIVER_H
6#define MALENA_SCREEN_RECEIVER_H
7
11#include <cstddef>
12#include <cstdint>
13#include <memory>
14#include <string>
15
16namespace ml {
17
35class MALENA_API ScreenReceiverBase : public Graphic<sf::RectangleShape>
36{
37public:
44 enum class ScaleMode { Stretch, Fit, Fill };
45
50 ScreenReceiverBase(const char* name, const char* rtspUrl);
52
55
57 void start();
58
60 void stop();
61
67 void setUrl(const std::string& rtspUrl);
68
74 void setFrozen(bool frozen);
75 bool isFrozen() const;
76
80
96 void pushFrame(const std::uint8_t* data, std::size_t size);
97
99 bool isConnected() const;
100
101 const std::string& receiverName() const;
102 const std::string& url() const;
103
104 // sf::Drawable override — uploads the latest frame and renders it (or a
105 // black placeholder when no stream is active).
106 void draw(sf::RenderTarget& target, sf::RenderStates states) const override;
107
108private:
109 struct Impl;
110 std::unique_ptr<Impl> _impl;
111};
112
113// ---------------------------------------------------------------------------
114
126template<typename Manifest>
128{
129public:
133};
134
135} // namespace ml
136
137#endif // MALENA_SCREEN_RECEIVER_H
Base class for all Malena manifests.
Definition Manifest.h:51
void draw(sf::RenderTarget &target, sf::RenderStates states) const override
Draw this graphic to an SFML render target.
const std::string & receiverName() const
ScreenReceiverBase(const ScreenReceiverBase &)=delete
void setScaleMode(ScaleMode mode)
void pushFrame(const std::uint8_t *data, std::size_t size)
ScreenReceiverBase & operator=(const ScreenReceiverBase &)=delete
const std::string & url() const
ScreenReceiverBase(const char *name, const char *rtspUrl)
void setUrl(const std::string &rtspUrl)
void setFrozen(bool frozen)
bool isConnected() const
ScaleMode scaleMode() const
~ScreenReceiverBase() override
#define MALENA_API
Definition Animate.h:25