rtp: take into account ipv4/ipv6 when calculating header size

Calculate the header_size based on the IP version instead of using a
hardcoded value.

Fixes #4524
This commit is contained in:
Wim Taymans 2025-01-24 12:43:34 +01:00
parent 180967bb64
commit 830bd19ca2
4 changed files with 22 additions and 4 deletions

View file

@ -564,6 +564,7 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
int64_t ts_offset;
char addr[128];
int res = 0;
uint32_t header_size;
PW_LOG_TOPIC_INIT(mod_topic);
@ -644,6 +645,11 @@ int pipewire__module_init(struct pw_impl_module *module, const char *args)
pw_properties_set(stream_props, "rtp.source.ip", addr);
pw_properties_setf(stream_props, "rtp.source.port", "%u", impl->src_port);
header_size = impl->src_addr.ss_family == AF_INET ?
IP4_HEADER_SIZE : IP6_HEADER_SIZE;
header_size += UDP_HEADER_SIZE;
pw_properties_setf(stream_props, "net.header", "%u", header_size);
ts_offset = pw_properties_get_int64(props, "sess.ts-offset", DEFAULT_TS_OFFSET);
if (ts_offset == -1)
ts_offset = pw_rand32();