For some reason librtmp treats a close message as a request to reconnect.
It does this syncronously, and uses the same event processing so that
another close request will continue the cycle until the stack is exhausted
and the application crashes.
Fixes https://obsproject.com/mantis/view.php?id=634
Twitch no longer recommend Main profile on their "Broadcast requirements"
page. The number of devices that can't decode High profile is very small
and limited to old, legacy devices such as the 1st generation iPad (six
years old). Additionally, these devices have limited resolution / FPS
support, so streams are often encoded at levels beyond what they could
decode even disregarding the H264 profile requirement. It's not worth
degrading the quality of streams for modern devices just to support these
legacy decoders. Twitch still provides low-complexity transcodes for
devices which cannot handle Source quality streams.
When a pulseaudio source is created from existing settings and the
device is not found, then the private data will return NULL, making it
impossible to change the source to use a different device. NULL should
never be returned when possible, otherwise settings cannot be changed
and properties cannot be displayed.
Closesjp9000/obs-studio#604
The maximum shutdown timeout value was added as a setting, but never
actually fully implemented. This implements it properly, and sets its
default timeout value to 30 seconds.
This commit fixes the issue outlined in the following thread:
https://obsproject.com/forum/threads/50045/
When the image source file was replaced by an outside process, it would
only reload when the file's new timestamp was newer than the file's
previous timestamp. This fixes that behavior. Now an image source
will reload any time the file's new timestamp is different than its
previous timestamp.
libvlc_media_new_path implies a file. To get media based upon URLs, use
libvlc_media_new_location. Additionally, if using a URL, it's best to
give it some playback caching/buffering, at least 100 milliseconds.
Closesjp9000/obs-studio#590
Previously, for an unknown reason p-frames were marked as highest
priority along with i-frames (keyframes), which means they could not be
dropped. This would cause a problem where if for whatever reason
there's too much congestion, data would continually buffer. This fixes
the issue by dropping p-frames at a separate (higher) threshold than
b-frames.
Measures packet data rate and sleeps to prevent data from going above
the set data rate. Uncomment the TEST_FRAMEDROPS macro, then set
DROPTEST_MAX_KBPS to the desired kb/s (for example 3000 for 3000
kilobits per second), and then it will limit the data rate to that
specified amount, forcing the thread to sleep to ensure it can only
output the desired data rate.