4698 Commits

Author SHA1 Message Date
jp9000
13741034dd UI: Don't use "quit on last window closed"
Instead, quit only when the main window has been fully closed (and not
minimized to tray).  Fixes a bug where if the main window is minimized
to tray and another non-child window is open (for example, the stats
window), and then that window is closed, would cause the program to
prematurely exit and crash.
2017-05-14 13:03:46 -07:00
jp9000
d13fa96851 libobs: Don't use source flags for async buffering
(This commit also modifies the decklink, linux-v4l2, mac-avcapture,
obs-ffmpeg, and win-dshow modules)

Originally, async buffering for sources was supposed to be a
user-controllable flag.  However, that turned out to be less than ideal
because sources (such as the win-dshow plugin) were programmed with
automatic control over their buffering (such as automatically detecting
USB 2.0 capture devices and then enabling in those cases).

The fact that it was a flag caused a design flaw to where buffering
values would be overwritten when a source is loaded from save data.

Because of that, this flag is being deprecated and replaced with a
specific function to enable unbuffered mode instead.
2017-05-13 23:32:40 -07:00
jp9000
d64542e10b Revert "libobs: Allow source to fully control source flags (for now)"
This reverts commit d85224bb9b01173b4ceed866482c435681f3f9b1.

Would cause other flags to stop saving.  Buffering needs to be split off
from the source flags.
2017-05-13 23:30:36 -07:00
jp9000
3d5759335c UI: Save/remember stats window geometry 2017-05-13 20:51:44 -07:00
jp9000
b40f940b51 UI: Add option to show stats on startup to general 2017-05-13 20:47:47 -07:00
jp9000
b3435f62d7 UI: Bring stats to front if it already exists
If the menu item is triggered again, just bring it to the front instead
of trying to recreate it again.
2017-05-13 20:45:48 -07:00
jp9000
72d7adba67 UI: Fix locale text for "OK" in question dialogs
This is the only case where the button's name does not match the
locale's text, the button name being "Ok" and the locale text item being
"OK", fully capitalized.
2017-05-13 14:10:44 -07:00
jp9000
522f5cdf3b UI: Make sure all message box buttons are translated
Instead of QMessageBox::question and QMessageBox::information, use the
OBSMessageBox class, which translates all buttons.
2017-05-13 14:06:32 -07:00
jp9000
bd34dce8b6 UI: Add helper class to translate message box buttons 2017-05-13 14:05:03 -07:00
jp9000
1c5591e644 UI: Make Qt use locale text for QWizard buttons 2017-05-13 13:07:12 -07:00
jp9000
35454f7fc5 UI: Fix a few locale items, and add a few missing ones 2017-05-13 13:01:56 -07:00
jp9000
0e1ae62355 UI: Add stats dialog
Shows performance stats, and streaming/recording stats, and helps warn
the user when they have less-than-optimal values with coloring on the
values (e.g. yellow when getting low on disk space, red when getting
really low)
2017-05-13 01:52:54 -07:00
jp9000
ee734c17a5 UI: Add themeID values for colors to style sheets 2017-05-13 01:52:53 -07:00
jp9000
d0d9cc4254 UI: Add function to get current memory usage (win32) 2017-05-13 01:52:45 -07:00
jp9000
d6872af0a2 obs-ffmpeg: Implement get_total_bytes in recording outputs
Allows seeing statistics such as bitrate and total bytes saved for
recording outputs.
2017-05-13 01:21:20 -07:00
jp9000
5c773d6807 libobs: Add obs_output_reconnecting func
Returns whether the output is currently in a state of reconnecting or
not.
2017-05-13 01:21:18 -07:00
jp9000
0a7361f4cc libobs: Add functions to get total/lagged frames
Useful for rendering statistics.
2017-05-13 01:21:17 -07:00
jp9000
cb9a478821 libobs: Add function to get average render time
Useful for real-time rendering statistics
2017-05-13 01:21:16 -07:00
jp9000
5ba37f81ec libobs-opengl: Fix potential crash w/ viewports
'device->cur_swap' can be null in this function, and gl_getclientsize
expects it not to be null.
2017-05-13 01:21:15 -07:00
jp9000
9e466a4697 libobs/util: Add function to get free disk space 2017-05-13 01:21:14 -07:00
jp9000
ce44791932 CI: Use git fetch --unshallow for OSX 2017-05-12 18:19:40 -07:00
craftwar
ebd341145e CI: exclude .gitignore 2017-05-12 12:20:14 +08:00
jp9000
8962899b77 obs-ffmpeg: Add signal/proc to restart media playback
A convenient feature if the user wants to trigger the media to play back
on the fly for whatever reason.
2017-05-10 19:54:03 -07:00
Gol-D-Ace
95ffca850d rtmp-services: Rename hitbox.tv to Smashcast
Ingest URLs are the same for now.
2017-05-11 02:49:28 +02:00
Jim
01db15128c Merge pull request #911 from fryshorts/decklink-fixes
Decklink fixes
2017-05-10 16:44:53 -07:00
Richard Stanway
0c167d27a6
win-capture: Hide cursor when in background (window capture) 2017-05-11 00:01:33 +02:00
Richard Stanway
9e95b2eb6f
Various: Don't use boolean bitfields
Using bitfields causes less optimized code generation and the memory
savings are minimal as none of the objects are instantiated enough
times to be worth it.

See https://blogs.msdn.microsoft.com/oldnewthing/20081126-00/?p=20073
2017-05-10 23:28:46 +02:00
Richard Stanway
62c40eac0c
win-capture: Hide cursor when in background (game capture)
Prevents random OS cursors showing if someone alt+tabs out of a game but
still moves their cursor over the captured area (possibly fullscreen).
2017-05-10 23:08:25 +02:00
fryshorts
00cb0540a5 decklink: Remove unused variables to fix warning
Remove two unused variables that are causing a compiler warning on gcc.
The size was probably added in the past to calculate the the packet
size, but in the end was not actually needed.
2017-05-10 22:47:58 +02:00
fryshorts
c8ce08d4b6 decklink: Add option to disable the plugin
Add an option to the cmake build system to disable the plugin. This is
needed on arm, as the plugin uses x86-intrinsics.
2017-05-10 22:43:15 +02:00
fryshorts
311cd6fb79 decklink: Fix compiler warning about ignored const
Fix a warning from gcc about one of the const keywords being ignored.
This happens because the returned type is not a reference contrary to
the methods above.
2017-05-10 22:43:15 +02:00
Richard Stanway
09f6882137
UI: Show invalid Bind to IP entries in the settings
This fixes a case where the user sets an IP but then that IP is no longer
valid, resulting in OBS showing "Default" in the settings but still trying
to bind to the invalid IP internally.
2017-05-10 21:44:28 +02:00
Jim
9eed12deb0 Merge pull request #909 from juvester/ci-wget
CI: OSX - Use wget instead of curl
2017-05-10 10:42:56 -07:00
Jim
2bf9d54899 Merge pull request #910 from fryshorts/linux-safe-replace
libobs: Fix os_safe_replace not working linux
2017-05-08 10:38:49 -07:00
fryshorts
0527cb5c15 libobs: Fix os_safe_replace not working linux
Make sure the target file exists before attempting to create a backup.
This will allow for the function to work correctly if the target does
not yet exist.
2017-05-08 19:24:02 +02:00
juvester
2cb73f32a2 CI: OSX - Use wget instead of curl
Possible fix for "curl: (56) SSLRead()" errors on Travis.
[skip appveyor]
2017-05-08 16:10:51 +03:00
jp9000
4049a5a882 UI: Add auto-configuration wizard
The auto-configuration wizard is designed to allow first-time or
novice/uneducated users or to set up video and encoding settings in a
very quick and easy way.  It'll automatically perform a bandwidth test,
and/or test the user's video settings to determine the most ideal
settings for streaming and recording (assuming a 1-pc setup).
2017-05-08 02:12:03 -07:00
jp9000
51e5f5fc64 UI: Remove colon from a few locale items
The colon makes it difficult to use these locale items for other
purposes, and the colon isn't used much elsewhere, so just remove them.
2017-05-06 12:12:37 -07:00
jp9000
f9595938d0 UI: Add 1920x1080/1280x720 to the settings base res list
Adds 1920x1080 and 1280x720 to the drop-down list of "default"
base/canvas resolutions rather than just the user's monitor resolutions,
in case the user wants to set the canvas to 1920x1080 or 1280x720
without having to manually type it in.  Added as a minor convenience.
2017-05-06 11:29:41 -07:00
jp9000
9d019e90ab UI: Limit default canvas res to 1920x1080 or below
The reasoning behind this is because having a very large canvas size can
negatively affect the user experience -- most sources end up seeming
smaller than they need to be to users, resulting in the user needing to
size up the sources, or in the case of webcams it makes the user try to
use much larger webcam resolutions than they should reasonably need to
do, resulting in higher unintentional resource usage.  The program will
additionally require more fillrate to render and downscale things as
well.

This applies only to the default starting base/canvas resolution for new
users only.

Additionally, users that ran the program pre-19 will be unaffected by
this change, as it will detect that and set the old defaults to prevent
an unexpected change in resolution for those users.
2017-05-06 11:29:40 -07:00
jp9000
ca0d4d18d5 UI: Don't subject base/output resolutions defaults
If defaults change for the base or output resolutions, it could
unintentionally affect users who are using defaults by chance and have
never changed those values.

Instead, save those values are soon as defaults are set if the users
haven't already set them.
2017-05-06 11:29:39 -07:00
jp9000
b850bc6415 UI: Add function to enable/disable outputs 2017-05-06 11:29:37 -07:00
jp9000
d1329d1798 obs-outputs: Fix frame dropping when using ultrafast
x264 on ultrafast won't drop any b-frames, so it might buffer packets a
bit too much in that case.

The frame drop duration calculation now searches for the first valid
video frame within the packets buffer.  Additionally, it no longer
prevents frame dropping for a specific time after dropping frames,
because the first case eliminates the need for that.
2017-05-06 11:29:36 -07:00
jp9000
585b3ed945 obs-outputs: Add connect time callback for rtmp output 2017-05-06 11:29:35 -07:00
jp9000
f6517d2be3 obs-outputs: Add null output
Allows encoding without necessarily outputting to a file or stream.
Useful for running encoding tests.
2017-05-06 11:29:33 -07:00
jp9000
a81646ed9c libobs: Don't allow lagged frames to be counted as skipped
Prevents lagged frames (frames that took too long to render) to be
counted as skipped frames (frames that are skipped due to encoding
taking too long to process)
2017-05-06 11:29:32 -07:00
jp9000
668763550c libobs: Add function to allow getting output connect time 2017-05-06 11:29:31 -07:00
jp9000
ad57aa1520 libobs: Add function to allow custom output drawing
Optionally allows drawing directly to the primary output instead of
having to use a source to draw.
2017-05-06 11:29:29 -07:00
jp9000
ffef736640 libobs: Pass exact data when calling obs_get_video_info
Originally, obs_get_video_info would recreate the obs_video_info
structure that was originally passed to it from obs_reset_video.  This
changes that to just store a copy of the obs_video_info when calling
obs_reset_video, and then copying that to the parameter of
obs_get_video_info when called.
2017-05-06 11:29:28 -07:00
jp9000
6fc74d69a9 libobs: Add functions to get logical/physical cores 2017-05-06 11:29:27 -07:00