mistserver/lib
Alex Henrie a1fbb9e186 Allow any RTP/AVP payload type to be dynamically assigned
The Bosch FLEXIDOME 4000i camera sets the RTP payload type to 35 for
H264, which causes MistServer to output "FAIL: Payload type 35 not
supported!"

The camera probably uses 35 for H264 because the ATSC standard requires
it. A/153 Part 7 states: [1]

> In addition, for RTP packets that carry AVC video elementary stream,
> the payload_type field in the RTP header shall have value 35.

The camera also sends "a=rtpmap:35 H264/90000" to explicitly map the
value 35 to H264. This is perfectly valid; although payload types 96
through 127 are recommended for dynamic use, the RTP protocol allows any
AVP payload type to be dynamically reassigned. The relevant section of
RFC 3551 states: [2]

> This profile reserves payload type numbers in the range 96-127
> exclusively for dynamic assignment.  Applications SHOULD first use
> values in this range for dynamic payload types.  Those applications
> which need to define more than 32 dynamic payload types MAY bind
> codes below 96, in which case it is RECOMMENDED that unassigned
> payload type numbers be used first.  However, the statically assigned
> payload types are default bindings and MAY be dynamically bound to
> new encodings if needed.  Redefining payload types below 96 may cause
> incorrect operation if an attempt is made to join a session without
> obtaining session description information that defines the dynamic
> payload types.

If the payload type is not recognized, assume that an rtpmap line will
follow that defines it. If in the end there is no rtpmap line, error out
in the same way whether the payload type is between 96 and 127 inclusive
or whether it is outside of that range.

[1] https://prdatsc.wpenginepowered.com/wp-content/uploads/2021/04/A153-Part-7-2012.pdf#page=14
[2] https://datatracker.ietf.org/doc/html/rfc3551#page-6
2024-05-16 16:39:13 +02:00
..
adts.cpp AAC input 2022-06-16 16:13:27 +02:00
adts.h AAC input 2022-06-16 16:13:27 +02:00
amf.cpp Various metadata-related features and improvements: 2023-09-26 17:10:23 +02:00
amf.h Various metadata-related features and improvements: 2023-09-26 17:10:23 +02:00
auth.cpp Restyle 2021-10-19 22:29:40 +02:00
auth.h Restyle 2021-10-19 22:29:40 +02:00
bitfields.cpp Silence more compile warnings, fix compilation on MacOS 2022-10-27 14:50:38 +02:00
bitfields.h Restyle 2021-10-19 22:29:40 +02:00
bitstream.cpp New Meta commit 2021-10-19 22:29:40 +02:00
bitstream.h New Meta commit 2021-10-19 22:29:40 +02:00
certificate.cpp Support for upstream mbedtls versions 2 and 3 when compiled with SRTP support 2024-02-22 17:45:47 +01:00
certificate.h Support for upstream mbedtls versions 2 and 3 when compiled with SRTP support 2024-02-22 17:45:47 +01:00
checksum.h FLAC support: 2023-02-26 20:37:15 +01:00
cmaf.cpp Bug Fix: CMAF DASH playback works 2022-02-11 22:52:20 +01:00
cmaf.h HLS CMAF updated to use hls_support library for (LL)HLS manifest generation. 2022-02-11 22:47:28 +01:00
comms.cpp Fix header includes to be a bit more consistent 2024-04-25 12:44:38 +02:00
comms.h TSSRT and TSRIST outputs in listen mode will now request not to be killed by the Comms library, since they handle multiple users 2023-07-24 10:37:42 +02:00
config.cpp Fix Cygwin compilation: 2024-04-25 12:44:38 +02:00
config.h Fix header includes to be a bit more consistent 2024-04-25 12:44:38 +02:00
defines.h Support limiting output range for most outputs and outgoing pushes 2023-10-17 00:13:45 +02:00
downloader.cpp Fixes to downloader range requests, improvements to input bufferFrame code 2023-04-10 14:15:00 +02:00
downloader.h Fixing all of the things. 😩 2023-04-10 14:15:00 +02:00
dtsc.cpp Fix header includes to be a bit more consistent 2024-04-25 12:44:38 +02:00
dtsc.h Added Meta::packetTimeToUnixMs, fixed datetimes in m3u8 recordings 2023-12-13 16:00:31 +01:00
ebml.cpp Restyle 2021-10-19 22:29:40 +02:00
ebml.h Restyle 2021-10-19 22:29:40 +02:00
ebml_socketglue.cpp Restyle 2021-10-19 22:29:40 +02:00
ebml_socketglue.h Restyle 2021-10-19 22:29:40 +02:00
encode.cpp Restyle 2021-10-19 22:29:40 +02:00
encode.h Restyle 2021-10-19 22:29:40 +02:00
encryption.cpp New Meta commit 2021-10-19 22:29:40 +02:00
encryption.h New Meta commit 2021-10-19 22:29:40 +02:00
flac.cpp Improvements to FLAC library and analyser 2023-02-27 10:20:14 +01:00
flac.h Fixed compiling with CMake 2023-03-16 14:31:27 +01:00
flv_tag.cpp Support limiting output range for most outputs and outgoing pushes 2023-10-17 00:13:45 +02:00
flv_tag.h Made FLV memory-based loader functions use const pointers 2022-09-26 12:44:30 +02:00
h264.cpp Fix header includes to be a bit more consistent 2024-04-25 12:44:38 +02:00
h264.h Added SPS/PPS validation functions, RTP lib now only updates SPS/PPS when valid 2022-01-22 23:52:03 +01:00
h265.cpp New Meta commit 2021-10-19 22:29:40 +02:00
h265.h Restyle 2021-10-19 22:29:40 +02:00
hls_support.cpp Fix header includes to be a bit more consistent 2024-04-25 12:44:38 +02:00
hls_support.h hls_support: A new library for (LL)HLS manifest generation 2022-02-11 22:47:28 +01:00
http_parser.cpp Fix header includes to be a bit more consistent 2024-04-25 12:44:38 +02:00
http_parser.h Added some HTTP parser unit tests, fixed HTTP support for zero content length, added gcovr file for coverage reports 2023-07-17 18:22:03 +02:00
json.cpp Fix broken UTF-8/UTF-16 conversion in JSON library 2023-07-06 10:56:36 +02:00
json.h Added JSON::Value::append() which returns a reference to a newly appended element 2021-10-19 22:29:42 +02:00
langcodes.cpp Restyle 2021-10-19 22:29:40 +02:00
langcodes.h Restyle 2021-10-19 22:29:40 +02:00
meson.build Fix Cygwin compilation: 2024-04-25 12:44:38 +02:00
mp4.cpp Support for AV1 MP4 input and output 2023-07-17 18:46:16 +02:00
mp4.h New Meta commit 2021-10-19 22:29:40 +02:00
mp4_adobe.cpp Restyle 2021-10-19 22:29:40 +02:00
mp4_adobe.h Restyle 2021-10-19 22:29:40 +02:00
mp4_dash.cpp Restyle 2021-10-19 22:29:40 +02:00
mp4_dash.h Restyle 2021-10-19 22:29:40 +02:00
mp4_encryption.cpp Restyle 2021-10-19 22:29:40 +02:00
mp4_encryption.h Restyle 2021-10-19 22:29:40 +02:00
mp4_generic.cpp Fixes to better support Safari/MacOS/iOS playback of MP4 output 2023-10-17 00:13:45 +02:00
mp4_generic.h Support for AV1 MP4 input and output 2023-07-17 18:46:16 +02:00
mp4_ms.cpp Restyle 2021-10-19 22:29:40 +02:00
mp4_ms.h Restyle 2021-10-19 22:29:40 +02:00
mpeg.cpp New Meta commit 2021-10-19 22:29:40 +02:00
mpeg.h Restyle 2021-10-19 22:29:40 +02:00
nal.cpp Restyle 2021-10-19 22:29:40 +02:00
nal.h Restyle 2021-10-19 22:29:40 +02:00
ogg.cpp Fixed all ARM-related issues/warnings/etc 2021-11-04 18:49:27 +01:00
ogg.h Fixed all ARM-related issues/warnings/etc 2021-11-04 18:49:27 +01:00
opus.cpp Restyle 2021-10-19 22:29:40 +02:00
opus.h Restyle 2021-10-19 22:29:40 +02:00
procs.cpp UDP API port is now stored in and read from global config 2023-05-01 15:21:10 +02:00
procs.h Custom variables support 2023-02-09 12:49:01 +01:00
riff.cpp Socket library and Config library restructuring, improvement to UDP socket reliability 2021-10-19 22:29:41 +02:00
riff.h Socket library and Config library restructuring, improvement to UDP socket reliability 2021-10-19 22:29:41 +02:00
rijndael.cpp Restyle 2021-10-19 22:29:40 +02:00
rijndael.h Restyle 2021-10-19 22:29:40 +02:00
rtmpchunks.cpp Ah yes, bug from 2018, a great vintage. 2023-03-16 14:19:27 +01:00
rtmpchunks.h RTMP improvements for rollover behaviour 2021-10-19 22:29:42 +02:00
rtp.cpp RTP library fixes and improvements. 2023-06-15 12:33:24 +02:00
rtp.h RTP library fixes and improvements. 2023-06-15 12:33:24 +02:00
rtp_fec.cpp Improved RTP NACK handling and dropped packet handling 2021-10-19 22:29:40 +02:00
rtp_fec.h Improved RTP NACK handling and dropped packet handling 2021-10-19 22:29:40 +02:00
sdp.cpp Allow any RTP/AVP payload type to be dynamically assigned 2024-05-16 16:39:13 +02:00
sdp.h Added SDP input 2022-02-21 15:51:09 +01:00
sdp_media.cpp Fix header includes to be a bit more consistent 2024-04-25 12:44:38 +02:00
sdp_media.h Support for WebRTC data tracks (output only, for now), rewrite of dTLS integration (now part of socket lib), support for multi-path WebRTC connections 2024-02-22 17:45:44 +01:00
shared_memory.cpp Fix Cygwin compilation: 2024-04-25 12:44:38 +02:00
shared_memory.h Session cache fix, semaphore verbosity only in dev builds 2021-10-19 22:29:41 +02:00
socket.cpp Fix Cygwin compilation: 2024-04-25 12:44:38 +02:00
socket.h Fix Cygwin compilation: 2024-04-25 12:44:38 +02:00
socket_srt.cpp Various small fixes to SRT sockets and SRT socket statistics 2023-06-08 17:31:39 +02:00
socket_srt.h Various small fixes to SRT sockets and SRT socket statistics 2023-06-08 17:31:39 +02:00
stream.cpp Added stream tagging support 2023-12-20 15:42:27 +01:00
stream.h Added stream tagging support 2023-12-20 15:42:27 +01:00
stun.cpp Fix header includes to be a bit more consistent 2024-04-25 12:44:38 +02:00
stun.h New Meta commit 2021-10-19 22:29:40 +02:00
subtitles.cpp Restyle 2021-10-19 22:29:40 +02:00
subtitles.h Restyle 2021-10-19 22:29:40 +02:00
theora.cpp Restyle 2021-10-19 22:29:40 +02:00
theora.h Restyle 2021-10-19 22:29:40 +02:00
timing.cpp Fix Cygwin compilation: 2024-04-25 12:44:38 +02:00
timing.h Implemented UDP socket packet send pacing, WebRTC now makes use of this new feature. 2023-06-15 12:34:25 +02:00
tinythread.cpp Restyle 2021-10-19 22:29:40 +02:00
tinythread.h Restyle 2021-10-19 22:29:40 +02:00
triggers.cpp Added stream tagging support 2023-12-20 15:42:27 +01:00
triggers.h Restyle 2021-10-19 22:29:40 +02:00
ts_packet.cpp Various metadata-related features and improvements: 2023-09-26 17:10:23 +02:00
ts_packet.h Fixed all ARM-related issues/warnings/etc 2021-11-04 18:49:27 +01:00
ts_stream.cpp Various metadata-related features and improvements: 2023-09-26 17:10:23 +02:00
ts_stream.h Various metadata-related features and improvements: 2023-09-26 17:10:23 +02:00
urireader.cpp URIReader optimizations/improvements, support for getHost/getBinHost functions, socket lib improvements + related improvements 2023-04-10 14:31:26 +02:00
urireader.h URIReader optimizations/improvements, support for getHost/getBinHost functions, socket lib improvements + related improvements 2023-04-10 14:31:26 +02:00
url.cpp UDP API port is now stored in and read from global config 2023-05-01 15:21:10 +02:00
url.h UDP API port is now stored in and read from global config 2023-05-01 15:21:10 +02:00
util.cpp Fix Cygwin compilation: 2024-04-25 12:44:38 +02:00
util.h Fix Cygwin compilation: 2024-04-25 12:44:38 +02:00
vorbis.cpp Restyle 2021-10-19 22:29:40 +02:00
vorbis.h Restyle 2021-10-19 22:29:40 +02:00
websocket.cpp Fix Cygwin compilation: 2024-04-25 12:44:38 +02:00
websocket.h Completed new sessions system 2022-10-05 03:13:52 +02:00