NV12 will be mapped to UYVY, so instead of NV12, there will be
misleadingly written UYVY.
Actually, the FourCC stored in &pSubtype->Data could be used, because
it mostly match. Chosen approach is, however, more conservative if the
name doesn't match, because the "old-style" init with the codec name
requires the mapping back from name to subtype and there doesn't seem
to be a way to find a subtype from FourCC in genral.
see also similar change for audio in commit 6c07a3e43 (2023-07-27)
The previous solution was using some cumbersome solution, perhaps
repeating the sequence (with mult:3) like `111222333444`.
Rewritten to be easier; also nwo the multiplication is as follows:
`123412341234`, which is perhaps better than the previous variant.
- do not assume in reader indices 0 for Y a 1 for Cb/Cr
- check the RTP egligibility later
- handle lavc-compressed JPEG (using only table 0) properly, not as a
hack until today
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.