When destroying the state, ServerMediaSubsession::deleteStream callbacks
are called but we are already deconfiguring so do not send messages to
change destination (eg. audio is already destroyed so the message wont
be delivered causing warnings like:
```
Receiver audio.sender does not exist.
Receiver audio.sender does not exist.
Warning: Message queue not empty!
```
Currently this is just a dirty fix, rtsp_serv::watch would be better to
pass.
Until now, just a warning was issued for known but unsupported messages,
now all unknown/unsupported is handled and the error is returned via
the control.
"[control] " was used to reflect that the commands get from the control
channel but it is slightly misleading so replace it with module-specific
prefix (consistent with other modules).
Unfortunately when the window is bigger than the desktop size, the
behavior is different in Windows and Wayland:
1. in Windows, it is needed to set the limits and not to set
GLFW_RESIZE=GLFW_FALSE
2. in Wayland, GLFW_RESIZE must be set to GLFW_FALSE (calling
glfwSetWindowSizeLimits() and not setting GLFW_RESIZE=GLFW_FALSE is
not enough)
This option is (besides the obvious use-case) particularly useful when
window is bigger than active display resolution, in which case GLFW tend
to resize the window to fit the screen, which may not be always desired.
Avoid using UG-specific platform macros (HAVE_LINUX/MAVE_MACOSX/WIN32)
and use a generic ones instead. This allows removeing config_*.h.
Also removed unused includes and sorted.
Expose the struct with parameters passed to acutal resize than passing
individual parameters.
\+ measure duration also for resize defined with a ratio (only if DEBUG
is specified)
When the client doesn't call TEARDOWN (like ffplay doesn't),
the stream could not have been played until the timeout (given by
`reclamationTestSeconds`). After that (or when TEARDOWN was called),
`BasicRTSPOnlySubsession::deleteStream()` is called allowing the new
stream.
After this change, the stream can be redirected withot explicit TEARDOWN
or timeout.
The symbol size is printed only once (or more precisely few times,
because it is guarded by a thread-local variable and the sending may
pick a different runner). This, however, doesn't give representative
numbers when frame sizes differ (== compressed) because then may also FEC
symbol sizes so print it unconditionally at least with debug2 log level.
refers to GH-361
Added notice about video-related positional arguments as capture filter
or audio.
\+ use color_printf where formatting macros were used (otherwise ANSI
esc sequences won't be stripped if output is not a tty)
Fixed a crash in situation where compressing stream with properties A,
then B but init fails and then again A.
This can occur when using switcher for 1->2->1 when compress reconf
fails for 2. But because `saved_desc` is set if reconf succeeds and
was already set on first configure, the state is inconsistent because
partially de/configured for 2 but it looks like it is still correctly
configured to input 1 because `saved_desc` was not cleared.
refers to GH-365
avcodec only guarantees that sw_pix_fmt is set before calling the
get_format callback. However for libdav1d the callback is for some
reason never called and sw_pix_fmt is not set.
So just use the pix_fmt if sw_pix_fmt is unset. Not sure if this is the
best fix, but it works in this case and doesn't break anything.
Useful when running without WM (#364). Perhaps we could eventually use
this behaviour for fullscreen by default (since we already do something
similar in the glfw display).
- suppressed CID 424203 - move old audio data free outside the lock
(to indicate that network_audio_buffer is not needed to be guarded by
the lock)
- suppressed CID 424228 - assign video frame data from network buffer
in the locked section - similarly as for the above, it is actually not
guarded by the lock but this is just done to suppress the warning (and
is also shorter to assign on single line)