When a new offer is received while recording is in paused mode,
recording should remain paused until explicitly re-enabled.
The detect_setup_recording function was starting recording when
record_call flags were set, ignoring the current pause state.
🤖 Generated with [Claude Code](https://claude.ai/code)
Closes#1983
Change-Id: I49daf03532b74ec942550b184a7e7d2828e70f81
Co-Authored-By: Claude <noreply@anthropic.com>
Write human-readable timestamp markers to the metadata file whenever
recording is paused or resumed via control protocol commands.
Include ISO-format timestamps with millisecond precision that aid in
tracking changes in recording state.
Example metadata output:
Recording paused at: 2025-07-29T15:30:45 (1234567.890 ms)
Recording resumed at: 2025-07-29T15:31:20 (1234598.123 ms)
🤖 Generated with [Claude Code](https://claude.ai/code)
Closes#1982
Change-Id: Id92c14900a29f53ba0ee00b3d0f53132bb11cff7
Co-Authored-By: Claude <noreply@anthropic.com>
Simply take the xmlrpc-callback address as string and don't try to parse
it out. Store it in the call object as string as well.
Obsolete `created_from_addr`. The string form `created_from` is all we
need.
Change `created_from` to `str` as well.
Change-Id: Ib67b57b1d2d474d7b033f56ef8be59f71e44641b
Different instances of rtpengine may be configured with different port
ranges. If HA requests usage of a port not part of our pool, allow it.
Change-Id: Ib4ace6c4facac35ea44948720fa46bcbdaf441d3
Use different function to get a port from a pool and return it, and
reserve a port in a pool permanently during startup.
Change-Id: I030dc2ebbe30c9b47252669717f235177f15219d
Protect selected_sfd with in_lock.
Protect RTCP sending with in_lock and out_lock as appropriate.
Has the odd side effect of RTCP reports expected in tests to be sent one
packet later than before.
Closes#1966
Probably fixes#1927
Change-Id: I225b43dff8e8fbb938d3be6aad50249997615d77
Add the ptime into the hash function so that cached player using
different ptimes use distinct entries.
Closes#1963
Change-Id: Ib118cd2ce14525d524a2d63c0506af8ae8ae929f
... from packetizer function instead of putting it into the AVPacket.
Remove AVPacket from callback function arguments.
Fix up PTS/duration adjustments where they were missing.
Closes#1963
Change-Id: Ib36b36bb6648b0579dd83155c7217317dda29cc3
Fixes:
../lib/loglib.h:54:17: warning: ‘err’ may be used uninitialized in this function [-Wmaybe-uninitialized]
54 | __ilog(prio, "[%s] " fmt, log_level_names[system], ##__VA_ARGS__); \
| ^~~~~~
sdp.c:613:21: note: ‘err’ was declared here
613 | const char *err;
| ^~~
sdp.c:734:9: warning: ‘err’ may be used uninitialized in this function [-Wmaybe-uninitialized]
734 | ilog(LOG_ERROR, "Failed to parse a=crypto attribute, ignoring: %s", err);
| ^
sdp.c:613:21: note: ‘err’ was declared here
613 | const char *err;
| ^
Change-Id: I18c3c1d6f2d6d5643a61ef864116e1f3d5e1db95
Move destination format information into the sink object.
Decode each codec directly to its matching output format and leave
resampling to the sinks.
Move managing of the adjusted multi-channel output format into the mix
context.
Make sure all inputs to a mix outputs use the same audio format.
Change-Id: Ib9f334443bfee26d59f2ede6e13ac80c66c1b57e