Commit Graph

158 Commits (60c77d41a3fde0b27e4bbd570cac77ebbbdea476)

Author SHA1 Message Date
jp9000 3d63096076 UI: Allow adding scenes as scene items
Allows adding scenes as scene items.  Note that you will not be able to
add scenes if it detects infinite recursion (i.e. adding scene A to
scene B, then adding scene B to scene A), in that case it will just fail
to create the scene item.
2016-07-01 15:23:06 -07:00
jp9000 0b2fd1167e UI: Add process priority option for windows 2016-07-01 10:28:16 -07:00
jp9000 3bc9e042a5 UI: Add "View" menu to control visibility of UI widgets
Adds a little improvement to quality-of-life, a typical "View" menu with
the ability to show/hide the following (for now):

- Listbox toolbars
- Status bar
- Transitions pane (some people don't really need/use/care about it)
2016-06-30 14:54:53 -07:00
jp9000 fc45a94775 UI: Minimize transitions pane size on main window
Prevents it from taking up too much space from the other parts of the
main window.
2016-06-30 12:51:06 -07:00
cg2121 2dfb211956 UI: Add option to automatically record while streaming
Allows the ability for users to make it so recording automatically
starts when they start streaming.  Also adds the option to allow the
recording to continue when stream is stopped.

Closes jp9000/obs-studio#554
2016-06-27 17:51:15 -07:00
jp9000 563d8efe46 UI: Fix position of "hide projector cursor" checkbox 2016-06-27 15:11:05 -07:00
jp9000 c2257e0a0f UI: Add option to hide cursor over projector windows 2016-06-27 14:47:42 -07:00
jp9000 60ec56b2c6 UI: Add support for QSV encoder to simple output 2016-04-19 08:29:24 -07:00
jp9000 d54bf1b8ab UI: Add "Enforce streaming bitrate limits" setting
Allows the user to disable streaming bitrate limits in simple output
mode if they so choose.  This option is enabled by default.
2016-04-10 03:11:41 -07:00
Jeremiah Senkpiel 7463c0dbaa UI: Add option to snap to edges of other sources
Allows the user to snap sources to the edges of other sources, on by
default.

Closes jp9000/obs-studio#530
2016-04-06 18:29:04 -07:00
Jeremiah Senkpiel 5911b26578 UI: Add option to snap to vertical/horizontal center
Allows users to snap sources to the horizontal or vertical centers of
the screen.  Off by default.

Closes jp9000/obs-studio#528
2016-04-06 18:15:15 -07:00
Jeremiah Senkpiel ad70d023c4 UI: Add snap options to general settings section
Allows the user to disable snapping all together or control the snap
threshold.
2016-04-06 18:08:48 -07:00
jp9000 02806a71f8 UI: Add crop options to scene item transform dialog 2016-03-30 19:00:07 -07:00
bl 50961861c7 UI: Add file formatting options for recording
Allows the user to specify custom formatting for their recording file
names with many formatting options, viewed via tooltip.  The options
have been added to the advanced settings section.

Closes jp9000/obs-studio#507
2016-03-25 03:28:54 -07:00
jp9000 3b1775d97f UI: Add configurable transitions 2016-03-01 15:18:34 -08:00
jp9000 5a071ace4a UI: Add label/control buddy pairs for main windows 2016-02-21 11:19:26 -08:00
jp9000 11271ce6e0 UI: Set accessible name for adv audio props button
People who are blind cannot know what the button does due to lack of any
strings associated with the button.
2016-02-21 11:17:26 -08:00
jp9000 48a3230b07 UI: Fix a wrong label alignment in settings window 2016-01-31 00:54:56 -08:00
jp9000 9e17328392 UI: Fix Delete shortcut for scenes/sources listboxes
When the new UI was put in, the action shortcuts were unintentionally
removed from the list boxes.
2016-01-31 00:54:50 -08:00
jp9000 544953c870 UI: Implement transitions and preview/program mode
Implements transitions, and introduces "Studio Mode" which allows live
editing of the same or different scenes while preserving what's
currently being displayed.

Studio Mode offers a number of new features:
  - The ability to edit different scenes or the same scene without
    modifying what's currently being displayed (of course)

  - The ability to set up "quick transitions" with a desired transition
    and duration that can be assigned hotkeys

  - The option to create full copies of all sources in the program scene
    to allow editing of source properties of the same scene live without
    modifying the output, or (by default) just use references.  (Note
    however that certain sources cannot be duplicated, such as capture
    sources, media sources, and device sources)

  - Swap Mode (enabled by default) which swaps the program scene with
    the preview scene when a transition completes

Currently, only non-configurable transitions (transitions without
properties) are listed, and the only transitions available as of this
writing are fade and cut.  In future versions more transitions will be
added, such as swipe, stingers, and many other various sort of
transitions, and the UI will support being able to add/configure/remove
those sort of configurable transitions.
2016-01-26 11:49:56 -08:00
jp9000 adcbf9311b UI: Remove "audio buffering time" (skip)
(Note: This commit breaks libobs compilation.  Skip if bisecting)
2016-01-26 11:49:30 -08:00
jp9000 832043fc7f UI: Disable OSX V-Sync when program is open
OSX has an annoying feature called "BeamSync", which on later versions
of OSX is always on.  For whatever reason, Apple devs decided to force
this feature to always be on, so applications must always render with
v-sync regardless of what they set their swap interval to.

This issue would cause syncing to the vertical refresh for each
additional active display, and wouldn't allow rendering above the
current refresh rate.  This caused major rendering stalls and prevented
video frame timing from being accurate.

This fixes the issue by using an undocumented set of functions to
disable BeamSync.  Note that because this is an undocumented method of
working around the issue, its existence cannot be guaranteed.  If the
functions no longer exist for whatever reason, it will safely do
nothing.
2016-01-25 17:44:41 -08:00
jp9000 c072ba55b2 UI: Hide renderer/adapter when not on windows
Also hide adapter list if not using Direct3D.
2016-01-25 17:29:11 -08:00
jp9000 22f7e6a82d UI: Move Renderer/Adapter to advanced
These really are advanced options that users shouldn't need to change
normally, so moving them to advanced makes sense, and keeps them away
from users who don't know what they're doing.
2016-01-25 17:29:11 -08:00
jp9000 bbbdd4442c UI: Add options to enable/disable stream confirm dialogs
Some streamers would accidentally hit start/stop streaming, which on
certain services would send out mass emails to all their followers.
This just adds options to general settings to optionally enable dialogs
that confirm whether to actually start/stop streaming when the button is
clicked.
2016-01-25 17:29:10 -08:00
jp9000 213d8ce154 UI: Add "Always On Top" option to file menu 2016-01-25 17:29:10 -08:00
jp9000 d7d5e55d2c UI: Add splitter to main window
Allows adjusting the size of the bottom section of the main window
2016-01-25 17:29:09 -08:00
Palana 124ccb68de UI: Allow file name generation without spaces
This will probably go away once proper file name formatting is
implemented (https://obsproject.com/mantis/view.php?id=361)
2015-11-27 15:48:30 +01:00
Palana feb0ccd858 UI: Add HLS entries for ffmpeg-mux output 2015-11-27 15:48:29 +01:00
Palana d4c4a0d1aa UI: Add custom muxer settings for ffmpeg-mux 2015-11-27 15:48:29 +01:00
Palana dd825f7d33 UI: Change CenterToScreen shortcut to ctrl+d 2015-11-14 15:34:46 +01:00
Christoph Hohmann fc063444ca UI: Add checkbox for visibility of new scene items
Note: This functionality should probably be considered as a temporary
solution.  Ideally, sources should not be visible on creation until the
user presses "OK" in the initial properties dialog.  Also, the problem
of initial visibility can additionally be solved by implementing the
preview/program functionality.  Once preview/program is implemented the
need for this patch will be negated, and the option should probably be
removed.

Closes jp9000/obs-studio#483
2015-10-11 11:42:40 -07:00
jp9000 0b119ba1e8 UI: Remove 22.05khz
22.05khz audio really doesn't make sense to have available, and causes
issues with encoders (primarily CoreAudio)
2015-09-21 19:31:08 -07:00
jp9000 718035efa2 UI: Use better default UI icons 2015-09-21 00:01:40 -07:00
jp9000 54a3e6696f UI: Add recording presets to simple output
So certain high-profile individuals were complaining that it was
difficult to configure recording settings for quality in OBS.  So, I
decided to add a very easy-to-use auto-configuration for high quality
encoding -- including lossless encoding.  This feature will
automatically configure ideal recording settings based upon a specified
quality level.

Recording quality presets added to simple output:

- Same as stream: Copies the encoded streaming data with no extra usage
  hit.

- High quality: uses a higher CRF value (starting at 23) if using x264.

- Indistinguishable quality: uses a low CRF value (starting at 16) if
  using x264.

- Lossless will spawn an FFmpeg output that uses huffyuv encoding.  If a
  user tries to select lossless, they will be warned both via a dialog
  prompt and a warning message in the settings window to ensure they
  understand that it requires tremendous amounts of free space.  It will
  always use the AVI file format.

Extra Notes:

- When High/Indistinguishable quality is set, it will allow you to
  select the recording encoder.  Currently, it just allows you to select
  x264 (at either veryfast or ultrafast).  Later on, it'll be useful to
  be able to set up pre-configured presets for hardware encoders once
  more are implemented and tested.

- I decided to allow the use of x264 at both veryfast or ultrafast
  presets.  The reasoning is two-fold:

  1.) ultrafast is perfectly viable even for near indistinguishable
quality as long as it has the appropriate CRF value.  It's nice if you
want to record but would like to or need to reduce the impact of
encoding on the CPU.  It will automatically compensate for the preset at
the cost of larger file size.

  2.) It was suggested to just always use ultrafast, but ultrafast
requires 2-4x as much disk space for the same CRF (most likely due to
x264 compensating for the preset).  Providing veryfast is important if
you really want to reduce file size and/or reduce blocking at lower
quality levels.

- When a recording preset is used, a secondary audio encoder is also
  spawned at 192 bitrate to ensure high quality audio.  I chose 192
  because that's the limit of the media foundation aac encoder on
  windows, which I want to make sure is used if available due to its
  high performance.

- The CRF calculation is based upon resolution, quality, and whether
  it's set to ultrafast.  First, quality sets the base CRF, 23 for
  "good" quality, 16 for "very high" quality.  If set to ultrafast,
  it'll subtract 2 points from the CRF value to help compensate.  Lower
  resolutions will also lower the CRF value to help improve higher
  details with a smaller pixel ratio.
2015-09-19 17:04:22 -07:00
Palana edec540695 UI: Add custom muxer settings to advanced FFmpeg output 2015-09-16 10:47:58 +02:00
jp9000 b574407c74 UI: Remove cbr/bufsize from simple output mode
CBR is now always on by default for streaming, so there's no reason to
have a setting for this in particular.  Still available in advanced
output settings of course, but simple output mode really should be kept
as simple as possible.
2015-09-11 08:43:10 -07:00
jp9000 a4f8d18948 UI: Move reconnect options to advanced settings
This is mostly just to remove the unnecessary clutter from the output
sections.  The reconnect settings are generally rarely modified by users
as it is.
2015-09-10 21:54:11 -07:00
jp9000 d1293b2b8a UI: Add stream delay options to advanced settings
I added stream delay options to advanced settings not just because I
feel it's an advanced option, but also to reduce clutter in the outputs
section and its sub-sections, which already have far too many options as
it is.
2015-09-10 12:13:40 -07:00
jp9000 75dcd1ffa3 UI: Allow generated filenames for FFmpeg output
This changes the way the advanced output section's FFmpeg output
settings work by allowing the user to select whether they want to output
to a file or output to a URL, and makes it so file names are
automatically generated like other recording outputs.

If they choose to output to a file, it'll only require an output
directory similarly to how other recording outputs work.  They can
select a directory to output to rather than being required to type in a
full path and filename; the filename is automatically generated.  The
extension is also automatically retrieved from libff depending on the
format selected.

Otherwise if they have Output to URL selected, it'll show a simple edit
box where they can type in the target URL.
2015-08-19 11:56:18 -07:00
jp9000 66f7330a58 UI: Remove properties window UI file (not needed)
The properties window UI file has no point at this time.  It's just a
window with a widget inside of it.
2015-07-20 19:11:35 -07:00
jp9000 7c97e21a1f UI: Add menu options to open settings folders
Adds "Show Settings Folder" and "Show Profile Folder" items to the file
menu.
2015-07-03 18:35:33 -07:00
jp9000 f9314128ea UI: Add Profiles
Adds setting profiles to the basic user interface.  For each profile, a
subdirectory for the profile will be created in
[config_dir]/obs-studio/basic/profiles which will contain the settings
data for each profile.
2015-07-03 18:35:30 -07:00
jp9000 7d6a12f49e UI: Add scene collections
Adds scene collections to the menu bar, which allows you to duplicate,
rename, remove, or add clean new scene collections.

Scene files are now stored in ./obs-studio/basic/scenes directory with
filesystem-safe names.
2015-07-03 18:33:57 -07:00
shousa 708bac734f UI: Add Audio bitrate
CoreAudio AAC encoder is now available for both AAC-LC and HE-AAC.
Added some Audio bitrate settings for lower bitrate region.
2015-07-01 20:00:19 +09:00
Palana fc0819ca32 UI: Add workaround for drag&drop removing items with Qt-5.4/win
Workaround taken from <http://stackoverflow.com/a/30291775>,
potentially relevant Qt bug:
<https://bugreports.qt.io/browse/QTBUG-45365>
2015-06-28 05:09:46 +02:00
Palana b53d6e9e58 UI: Add drag&drop reordering for the sources list 2015-06-28 05:09:45 +02:00
Palana 95857b4443 UI: Enable drag&drop reordering for scenes
The empty implementation for the QDataStream operators is necessary to fix
a Qt assertion: "QVariant::save: unable to save type
'std::vector<std::shared_ptr<OBSSignal> >' (type id: 1036)."

It doesn't seem like a full implementation of the stream operators would be
useful since the signal registration is very specific to the interaction
between the scenes and sources list, i.e. in case the scenes list ever accepts
scenes from sources (not 'obs_source's) other than itself (non InternalMove
drag&drop?) it would have to register those scenes with the libobs core which
should trigger the normal signal registration
2015-06-28 05:09:45 +02:00
jp9000 84567f2745 UI: Implement scene reordering
This simply saves/loads the actual list widget item order.

The reason why this is done is because internally, libobs doesn't have a
list of scenes, it only has a list of sources.  The list of scenes is
actually something artificially implemented by the basic window user
interface.
2015-06-25 03:55:33 -07:00
jp9000 f15965e721 UI: Add menu to visit website to basic main window 2015-06-25 01:02:47 -07:00