libpromeki main
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
rtppayload.h
Go to the documentation of this file.
1
8#pragma once
9
10#include <cstdint>
11#include <cstddef>
12#include <promeki/core/buffer.h>
14
16
33 public:
35 virtual ~RtpPayload() = default;
36
38 virtual uint8_t payloadType() const = 0;
39
41 virtual uint32_t clockRate() const = 0;
42
55 virtual RtpPacket::List pack(const void *mediaData, size_t size) = 0;
56
62 virtual Buffer unpack(const RtpPacket::List &packets) = 0;
63
72 virtual size_t maxPayloadSize() const { return 1200; }
73
74 protected:
76 RtpPayload() = default;
77};
78
96class RtpPayloadL24 : public RtpPayload {
97 public:
104
106 uint8_t payloadType() const override { return _payloadType; }
108 uint32_t clockRate() const override { return _sampleRate; }
110 RtpPacket::List pack(const void *mediaData, size_t size) override;
113
115 void setPayloadType(uint8_t pt) { _payloadType = pt; }
116
118 int channels() const { return _channels; }
119
121 uint32_t sampleRate() const { return _sampleRate; }
122
123 private:
124 uint32_t _sampleRate;
125 int _channels;
126 uint8_t _payloadType = 97;
127};
128
142class RtpPayloadL16 : public RtpPayload {
143 public:
150
152 uint8_t payloadType() const override { return _payloadType; }
154 uint32_t clockRate() const override { return _sampleRate; }
156 RtpPacket::List pack(const void *mediaData, size_t size) override;
159
161 void setPayloadType(uint8_t pt) { _payloadType = pt; }
162
164 int channels() const { return _channels; }
165
167 uint32_t sampleRate() const { return _sampleRate; }
168
169 private:
170 uint32_t _sampleRate;
171 int _channels;
172 uint8_t _payloadType = 96;
173};
174
203 public:
211
213 uint8_t payloadType() const override { return _payloadType; }
215 uint32_t clockRate() const override { return 90000; }
217 RtpPacket::List pack(const void *mediaData, size_t size) override;
220
222 void setPayloadType(uint8_t pt) { _payloadType = pt; }
223
225 int width() const { return _width; }
226
228 int height() const { return _height; }
229
231 int bitsPerPixel() const { return _bitsPerPixel; }
232
233 private:
234 int _width;
235 int _height;
236 int _bitsPerPixel;
237 uint8_t _payloadType = 96;
238};
239
265 public:
272 RtpPayloadJpeg(int width, int height, int quality = 85);
273
275 uint8_t payloadType() const override { return 26; }
277 uint32_t clockRate() const override { return 90000; }
279 RtpPacket::List pack(const void *mediaData, size_t size) override;
282
284 int width() const { return _width; }
285
287 int height() const { return _height; }
288
290 int quality() const { return _quality; }
291
293 void setQuality(int q) { _quality = q; }
294
295 private:
296 int _width;
297 int _height;
298 int _quality;
299};
300
Generic memory buffer descriptor with alignment and memory space support.
Definition buffer.h:85
Dynamic array container wrapping std::vector.
Definition list.h:40
promeki::List< RtpPacket > List
List of RtpPacket values.
Definition rtppacket.h:62
RTP payload handler for RFC 2435 JPEG (Motion JPEG).
Definition rtppayload.h:264
int width() const
Returns the image width.
Definition rtppayload.h:284
int height() const
Returns the image height.
Definition rtppayload.h:287
int quality() const
Returns the quality parameter.
Definition rtppayload.h:290
uint8_t payloadType() const override
Returns the RTP payload type number.
Definition rtppayload.h:275
RtpPayloadJpeg(int width, int height, int quality=85)
Constructs a JPEG payload handler.
uint32_t clockRate() const override
Returns the RTP timestamp clock rate in Hz.
Definition rtppayload.h:277
Buffer unpack(const RtpPacket::List &packets) override
Reassembles RTP payload packets into media data.
void setQuality(int q)
Sets the quality parameter.
Definition rtppayload.h:293
RtpPacket::List pack(const void *mediaData, size_t size) override
Fragments media data into RTP payload packets.
RTP payload handler for 16-bit linear audio (L16).
Definition rtppayload.h:142
uint32_t clockRate() const override
Returns the RTP timestamp clock rate in Hz.
Definition rtppayload.h:154
Buffer unpack(const RtpPacket::List &packets) override
Reassembles RTP payload packets into media data.
RtpPayloadL16(uint32_t sampleRate=48000, int channels=2)
Constructs an L16 payload handler.
int channels() const
Returns the number of audio channels.
Definition rtppayload.h:164
void setPayloadType(uint8_t pt)
Sets the RTP payload type number.
Definition rtppayload.h:161
RtpPacket::List pack(const void *mediaData, size_t size) override
Fragments media data into RTP payload packets.
uint32_t sampleRate() const
Returns the audio sample rate.
Definition rtppayload.h:167
uint8_t payloadType() const override
Returns the RTP payload type number.
Definition rtppayload.h:152
RTP payload handler for 24-bit linear audio (L24).
Definition rtppayload.h:96
uint32_t sampleRate() const
Returns the audio sample rate.
Definition rtppayload.h:121
RtpPayloadL24(uint32_t sampleRate=48000, int channels=2)
Constructs an L24 payload handler.
uint8_t payloadType() const override
Returns the RTP payload type number.
Definition rtppayload.h:106
Buffer unpack(const RtpPacket::List &packets) override
Reassembles RTP payload packets into media data.
void setPayloadType(uint8_t pt)
Sets the RTP payload type number.
Definition rtppayload.h:115
uint32_t clockRate() const override
Returns the RTP timestamp clock rate in Hz.
Definition rtppayload.h:108
int channels() const
Returns the number of audio channels.
Definition rtppayload.h:118
RtpPacket::List pack(const void *mediaData, size_t size) override
Fragments media data into RTP payload packets.
RTP payload handler for RFC 4175 raw video (ST 2110-20).
Definition rtppayload.h:202
RtpPacket::List pack(const void *mediaData, size_t size) override
Fragments media data into RTP payload packets.
int height() const
Returns the frame height.
Definition rtppayload.h:228
int width() const
Returns the frame width.
Definition rtppayload.h:225
void setPayloadType(uint8_t pt)
Sets the RTP payload type number.
Definition rtppayload.h:222
int bitsPerPixel() const
Returns bits per pixel.
Definition rtppayload.h:231
Buffer unpack(const RtpPacket::List &packets) override
Reassembles RTP payload packets into media data.
uint32_t clockRate() const override
Returns the RTP timestamp clock rate in Hz.
Definition rtppayload.h:215
RtpPayloadRawVideo(int width, int height, int bitsPerPixel)
Constructs a raw video payload handler.
uint8_t payloadType() const override
Returns the RTP payload type number.
Definition rtppayload.h:213
Abstract base class for RTP payload type handlers.
Definition rtppayload.h:32
virtual uint8_t payloadType() const =0
Returns the RTP payload type number.
virtual Buffer unpack(const RtpPacket::List &packets)=0
Reassembles RTP payload packets into media data.
virtual ~RtpPayload()=default
Destructor.
virtual size_t maxPayloadSize() const
Returns the maximum payload size per packet.
Definition rtppayload.h:72
RtpPayload()=default
Default constructor (protected; use a concrete subclass).
virtual uint32_t clockRate() const =0
Returns the RTP timestamp clock rate in Hz.
virtual RtpPacket::List pack(const void *mediaData, size_t size)=0
Fragments media data into RTP payload packets.
#define PROMEKI_NAMESPACE_BEGIN
Starts a promeki namespace block.
Definition namespace.h:14
#define PROMEKI_NAMESPACE_END
Ends a promeki namespace block.
Definition namespace.h:19