115 Commits

Author SHA1 Message Date
jp9000
7f6cf97bd7 libobs: Add obs_render_main_texture
(Note: This commit also modifies UI and test)

This makes it so that main preview panes are rendered with the main
output texture rather than re-rendering the main view.  The view will
render all objects again, whereas the output texture will be a single
texture render of the same exact thing.

Also fixes some abnormal artifacting when scaling the main preview pane.
2018-01-01 18:52:47 -08:00
jp9000
8a38d8e60e UI: Move multiview options to view menu
Moves the multiview (fullscreen/window) options to the view menu to
reduce context menu clutter, and allow using it even when not in studio
mode.

Also adds missing translation strings.
2017-12-02 16:12:03 -08:00
Shaolin
721cb3dea5 UI: Add Multiview projector
Jim note:

- Refactored code significantly
- Added a context menu option to exclude specific scenes from projectors
- Made it so multiview projectors update when scenes are
  added/removed/renamed
- Increased text quality
- Removed the color sources and replaced them with simple solid
  rectangles
- Increased the border size of "program" and "preview" scenes in the
  lower scene list

Closes jp9000/obs-studio#1068
2017-12-01 12:14:02 -08:00
jp9000
6461b63623 UI: Fix preview/program projectors being swapped
If a preview projector was created in normal mode, it would become a
studio projector in studio mode.  The window title of the window
projector would reflect that it was in fact a preview projector and not
a program projector.
2017-11-30 06:17:07 -08:00
cg2121
60e1d7e90b UI: Implement per-scene transition overriding
Allows the ability to override what specific transition a scene may use
when transitioning to it.

(Original proposal by cg2121, reworked by Jim)

Closes jp9000/obs-studio#1052
2017-11-30 05:10:25 -08:00
jp9000
b5c036974f UI: Fix studio program projectors
The studio mode program view projectors used the wrong saving mechanism.
The save data was copied from the source projectors, which were
dependent on string values, where as it should have been using a boolean
true/false value for specific monitors.
2017-11-29 23:11:38 -08:00
Ryan Foster
f140104da8 UI: Add Studio Mode layout option for portrait mode displays
This commit adds a checkbox to general setting to allow users to enable
a vertically oriented layout for studio mode.

This commit addresses mantis issue 827:
https://obsproject.com/mantis/view.php?id=827

Closes jp9000/obs-studio#1072
2017-11-28 22:24:57 -08:00
Ryan Foster
9fce162137 UI: Add Studio Preview Projector
This commit allows a user to create projectors for the preview scene
instead of the program/live scene.

Close jp9000/obs-studio#1071
2017-11-27 00:28:03 -08:00
cg2121
3a43a047d4 UI: Add transition on double-click studio mode option
This adds the ability to switch to a scene by double-clicking it when in
studio mode.

(Edit by Jim: In case this change is undesired by the user, this has
been changed to be an option in general settings; disabled by default)

Closes jp9000/obs-studio#1029
2017-11-26 19:05:50 -08:00
pkviet
bbac3280c1 libobs: Add surround sound audio support
(This commit also modifies the following modules: UI,
deps/media-playback, coreaudio-encoder, decklink, linux-alsa,
linux-pulseaudio, mac-capture, obs-ffmpeg, obs-filters, obs-libfdk,
obs-outputs, win-dshow, and win-wasapi)

Adds surround sound audio support to the core, core plugins, and user
interface.

Compatible streaming services: Twitch, FB 360 live
Compatible protocols: rtmp / mpeg-ts tcp udp
Compatible file formats: mkv mp4 ts  (others untested)
Compatible codecs: ffmpeg aac, fdk_aac, CoreAudio aac,
		   opus, vorbis, pcm (others untested).
Tested streaming servers: wowza, nginx
	 HLS, mpeg-dash : surround passthrough
Html5 players tested with live surround:
	 videojs, mediaelement, viblast (hls+dash), hls.js
Decklink: on win32, swap channels order for 5.1 7.1
         (due to different channel mapping on wav, mpeg, ffmpeg)
Audio filters: surround working.
Monitoring: surround working (win macOs linux (pulse-audio)).
VST:	 stereo plugins keep in general only the first two channels.
	 surround plugins should work (e.g. mcfx does).
OS: win, macOs, linux (alsa, pulse-audio).
Misc: larger audio bitrates unlocked to accommodate more channels
NB: mf-aac only supports mono and stereo + 5.1 on win 10
         (not implemented due to lack of usefulness)

Closes jp9000/obs-studio#968
2017-11-26 03:41:53 -08:00
jp9000
573fbbfead UI: Fix a memory leak when renaming mixer sources 2017-11-26 02:30:26 -08:00
cg2121
e86754c2a0 UI: Add ability to rename audio sources from the mixer
This adds the ability for users to change the names of audio sources
from the mixer including desktop and mic/aux sources.

Closes jp9000/obs-studio#1055
2017-11-25 00:59:01 -08:00
Jim
a63028dd9c
Merge pull request #1051 from RytoEX/add-frontend-replay-buffer-save
UI: Add Frontend API function to save replay buffer
2017-11-24 22:41:54 -08:00
Jim
5d5da2a380
Merge pull request #1050 from RytoEX/disable-copy-with-no-source
UI: Disable source copy if no sources are selected
2017-11-24 22:40:56 -08:00
nleseul
d22a75401d UI: Make streaming/recording buttons checkable
This makes it so the buttons appear "pressed" while streaming/recording
to more visibly help indicate that they are currently active.

Closes jp9000/obs-studio#1039
2017-11-23 00:54:06 -08:00
Ryan Foster
44b3cde9da UI: Add Frontend API function to save replay buffer 2017-10-19 07:16:00 -04:00
Ryan Foster
c8353c90b6 UI: Disable source copy if no sources are selected
This commit addresses Mantis Bug 993. If no source was selected, the
"Copy" context menu item was enabled, but selecting it would do nothing.
This commit disables that menu item when no sources are selected.
2017-10-17 19:22:07 -04:00
cg2121
0e0db29d80 UI: Fix Pulse Audio not loading saved device 2017-10-16 17:28:50 -05:00
Ryan Foster
0fe4688a34 UI: Disallow pasting duplicates of sources with DO_NOT_DUPLICATE
This commit prevents users from being able to use the "Paste
(Duplicate)" context menu option after copying a source that has the
OBS_SOURCE_DO_NOT_DUPLICATE flag set. Though OBS would correctly paste
the source as a reference, it seems that this behavior was confusing
some users. This fixes Mantis Bug 1034.
2017-10-14 05:05:16 -04:00
Richard Stanway
8e66f180d8
UI: Add missing text for replay buffer hotkey log 2017-10-12 17:49:02 +02:00
Richard Stanway
5c9d3dd30d
UI: Log when starting / stopping via hotkey or timer
This will help resolve incidents where users accidentally started or
stopped their stream without knowing what triggered it (usually from
hotkeys that were forgotten about).
2017-10-12 17:23:56 +02:00
jp9000
3dc96fbe43 UI: Add ini option to use different graphics adapters
Allows setting a specific graphics adapter index to use for Direct3D 11.
This is currently meant to be sort of "undocumented" in implementing it
this way due to the fact that users will be guaranteed to break their
configurations if this is implemented in the UI (even if in advanced
settings).
2017-10-07 03:05:57 -07:00
Benjamin Schubert
9cba5660e4 UI: Enable Replay Buffer in Advanced Mode
Replay buffer is currently only supported in simple mode.  This change
adds support to advanced mode and is, for the most part, a mirror of the
addition of replay buffer to simple mode.

Mantis-bug: https://obsproject.com/mantis/view.php?id=792

Closes jp9000/obs-studio#1019
2017-09-16 05:55:18 -07:00
Jim
1e1808dbd9 Merge pull request #1005 from SuslikV/patch-1
UI: Fix parent window geometry loading
2017-09-15 10:30:39 -07:00
SuslikV
2b175d6da9 UI: Add missing option to context menu
Add 'Advanced Audio Properties' option to context menu over empty area
of the Mixer's pane.
2017-09-14 15:01:15 +02:00
cg2121
76b6266689 UI: Allow hiding/unhiding sources in the mixer
Allows the ability to hide/unhide sources in the mixer that the user
doesn't care about or doesn't necessarily want to see (such as video
sources that have audio but don't have any audio playing).  If all
sources are hidden, the user can right-click the mixer's empty area and
choose "unhide all" via a context menu.

Closes jp9000/obs-studio#1002
2017-09-13 21:17:44 -07:00
jp9000
7bde1eb6af UI: Allow right-clicking mixer sources to bring up menu
Allows bringing up properties/filters/etc via right-clicking mixer items
in addition instead of only being able to click the gear icon.  Minor
QoL improvement.
2017-09-13 21:17:44 -07:00
SuslikV
a21da59741 UI: Fix parent window geometry loading
The parent window adjusted according to child object polices and hint 
sizes. Thus, it is possible to disable all docking panes to restore 
true parent geometry first, the docking geometry and settings will be 
restored later in OBSBasic::OBSInit().
2017-08-12 19:45:25 +02:00
SuslikV
77ddce3f9a UI: Fix stats window geometry saving on shutdown
Possible fix for: https://obsproject.com/mantis/view.php?id=923

If you close whole application (not just stats window) it skips the
close event and thus saving of the geometry.  The Qt::WA_DeleteOnClose
was set earlier.

Closes jp9000/obs-studio#984
2017-08-06 05:41:58 -07:00
jp9000
10d6c347cc UI: Move adv. audio props. to each audio config button
Instead of having an extra config button that essentially wastes
valuable window space, allow the ability to open advanced audio
properties from each audio meter config button.
2017-08-05 21:20:08 -07:00
jp9000
8b68ccdc13 UI: Fix build issue with older linux Qt5 packages
QMainWindow::resizeDocks isn't supported on certain long-term support
distros (ubuntu trusty in particular), so instead just restore the
starting state and don't try to recalculate the ideal positioning.
2017-07-27 22:50:25 -07:00
jp9000
25bb8a444f UI: Add modular UI
Changes the UI to an adjustable user interface, allowing the user to
fully customize how the scenes list, sources list, the mixer,
transitions, and the buttons are oriented on the main window window.
2017-07-27 12:17:18 -07:00
SammyJames
4fd66d4d1e libobs: Add post-load module callback
This allows the ability for certain types of modules (particularly
scripting-related modules) to initialize extra data when all other
modules have loaded.  Because front-ends may wish to have custom
handling for loading modules, the front-end must manually call
obs_post_load_modules after it has completed loading all plug-in
modules.

Closes jp9000/obs-studio#965
2017-07-21 08:27:31 -07:00
Jim
9ad8e0c5f0 Merge pull request #947 from Fenrirthviti/new-theme
UI: Add new theme, update theme capabilities
2017-07-01 15:48:05 -07:00
Joseph El-Khouri
8942c18695 UI: Allow zoom with the scroll wheel
Adds the ability to zoom into the preview when fixed scaling mode is
enabled.

(Edit by Jim: Also now saves zoom and scroll position)

Closes jp9000/obs-studio#917
2017-06-30 20:20:56 -07:00
Shaolin
e5756a922a libobs/plugins/UI: Suppress unused variables warnings
Closes jp9000/obs-studio#937
2017-06-27 21:55:37 -07:00
cg2121
fce078d997 UI, libobs: Add ability to lock individual scene items
Adds a lock checkbox to allow the user to lock a specific scene item.

Closes jp9000/obs-studio#949
2017-06-27 10:27:57 -07:00
cg2121
b8d907f399 UI: Add fullscreen UI option to view menu
(Edit by Jim: Removed "Fullscreen Preview" because that's already sort
of served by the normal fullscreen projector option via the preview
context menu)

Closes jp9000/obs-studio#846
2017-06-26 09:49:43 -07:00
cg2121
50103825c0 UI: Add fullscreen projector to systray menu
(Edit by Jim: Changed it to just add the fullscreen projector sub-menu
like when right-clicking the preview, that way it doesn't have to add
new locale text for translators, and allows the users to specify which
monitor to use)

Closes jp9000/obs-studio#845
2017-06-26 08:35:52 -07:00
jp9000
36394ab08d UI: Fix potential crash with unsupported video cards
If a video card is unsupported, it will attempt to initialize the stats
window, querying values from a video subsystem that doesn't exist, and
crash instead of alerting the user that their hardware is unsupported.
2017-06-24 09:14:46 -07:00
jp9000
1d2def766f UI: Preserve source if audio settings device changed
If the user changes one of the devices in audio settings, it would reset
all of its data, including settings, filters, flags, and all that.  This
changes the handling so that the source and all of its other settings
are preserved if the user just changes the device.  (Note that if the
user disables the device, settings will be lost; this only applies to
when the user changes the device to a different device for whatever
reason)
2017-06-21 00:03:14 -07:00
jp9000
96f746ce41 UI: Initialize Stats window values after OBSInit/reset
When the statistics window starts up for the first time, it reset values
at that very moment so that stray lagged frames due to OBS' startup
wouldn't be displayed.  However, that's really a bad place to reset
those values because the user could want to view the stats window after
a long stream, and having those values reset when he/she views the
window for the first time would sort of make the point of viewing your
stats moot.

Instead, reset the values only when applicable, such as after OBSInit or
when video is reset.
2017-06-19 15:38:13 -07:00
Joel Bethke
432e285257 UI: Add new theme, update theme capabilities
I have always felt that the out of the box themes for OBS were quite
lacking, and have spent a lot of time going through and sorting out the
difficulties with the current setup. I've added a new themeID parameter to
several elements that were otherwise impossible to target with QSS in a
theme. Since Qt has pushed for the use of QML over QSS at this point,
these should be considered workarounds. Included is the theme I was
working on that can serve as a base. I'm hoping to encourage others to
make their own themes, so we can grow the available themes for OBS.

I am happy for any feedback on the theme itself, or other updates that
can me made to make creating new themes easier overall.
2017-06-13 14:37:59 -05:00
Colin Edwards
c6e2318eae UI: Look for plugins in ~/Library/Application Support/obs-studio/plugins/ 2017-05-29 17:41:29 -05:00
jp9000
3470776843 UI: Make Stats a regular window rather than dialog 2017-05-15 15:02:56 -07:00
jp9000
4ff7ac0bfa UI: Change output blocking bool to integer ref counter 2017-05-15 14:35:36 -07:00
jp9000
0697e37b26 UI: Fix misleading log message when updating settings
While an output is active, the user may try to reset the settings in the
settings window, causing a misleading error message to be thrown in the
log indicating that it's "falling back" to OpenGL.

Instead, if an output is currently active, do not reset video.
2017-05-15 14:28:00 -07:00
Richard Stanway
2933b89733
UI: Add support for showing output error messages 2017-05-15 12:03:42 +02:00
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
b40f940b51 UI: Add option to show stats on startup to general 2017-05-13 20:47:47 -07:00