Commit Graph

109 Commits (632f0bff5abec954fe84f191affb5243002890dd)

Author SHA1 Message Date
jp9000 2a343955a2 UI: Add "Bind to IP" setting to advanced settings 2016-07-29 15:49:40 -07:00
jp9000 2c5aa87468 UI: Add ability to lock preview
Adds the ability to lock the preview so sources can't be edited.  This
feature is typically used in the case where the user wants to prevent
accidentally clicking and dragging on sources.
2016-07-26 01:32:43 -07:00
jp9000 23430a9221 UI: Allow removing multiple selected scene items 2016-07-02 15:44:24 -07:00
jp9000 0b2fd1167e UI: Add process priority option for windows 2016-07-01 10:28:16 -07:00
jp9000 44a523f8b7 UI: Fix locale bug (forgot ending '"' character) 2016-06-30 15:31:19 -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 44beb75b04 UI: Add scaling filter options for scene items to UI
Adds scale filtering options to the scene item right-click context menu.
2016-06-29 08:00:55 -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 c2257e0a0f UI: Add option to hide cursor over projector windows 2016-06-27 14:47:42 -07:00
jp9000 4a3804518d UI: Show "stopping" text on buttons when waiting for stop
The new cutoff timing fix means that streaming/recording has to remain
active for bit until the stream/recording has reached the expecting stop
timestamp.  This means that the buttons would continue to say "Stop
streaming/recording" while waiting for the output to stop itself at the
appropriate timing.

So instead of letting it do that and confusing the user, the buttons
will now say "stopping" when the button is pressed to indicate to the
user that the stream/recording is in the process of stopping.
2016-06-22 14:10:42 -07:00
jp9000 55dc235d3e UI: Add ability to add directories to editable lists 2016-06-15 16:19:25 -07:00
jp9000 b567a02150 UI: Allow remuxing to/from different formats
Instead of just remuxing from FLV to MP4, allow remuxing to/from the
various container formats that are available.
2016-05-11 13:12:35 -07:00
jp9000 350855a2e7 UI: Show warning if using multiple separate QSV encoders
Warns users that two separate QSV encoders can't be active at the same
time.

This should be considered a temporary solution to two issues:
1.) Encoders need to be able to report these errors themselves
2.) If the QSV encoder is ever changed to allow more than one encoder at
    the same time this should be removed
2016-04-23 16:35:06 -07:00
jp9000 e3fbdb9293 UI: Add NVENC support to simple output 2016-04-19 09:20:27 -07:00
jp9000 60ec56b2c6 UI: Add support for QSV encoder to simple output 2016-04-19 08:29:24 -07:00
jp9000 b28b165d06 UI: Make minor text adjustment to bitrate warnings
Specify that it's the streaming bitrate and not just "bitrate" so users
hopefully realize that it's not referring to the recording settings.
2016-04-14 18:41:26 -07:00
jp9000 b9e4ff1ffb UI: Warn if streaming audio/video bitrate is too high
Allows the user to know that the maximum bitrate limit for a streaming
service is being enforced.
2016-04-10 03:12:25 -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 386a2ef8c9 UI: Adjust server rejection error message
This error implies to the user that the server still thinks they're
logged in, but that apparently no longer happens (at least on Twitch).
If the error happens, it usually means that the key is invalid or that
there's some general server issue, so update the message to reflect
that.
2016-04-03 11:41:51 -07:00
bl 1194d093ef UI: Fix duplicate filename specifiers
Fix redundant specifiers and change specifiers to match Linux date
command.

Closes jp9000/obs-studio#531
2016-04-02 17:09:24 -07:00
jp9000 7dd5e7bace UI: Add cropping locale text 2016-03-31 10:16:15 -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 c82771e594 UI: Add deinterlacing to UI
Accessible via the context menu of a source.
2016-03-21 21:22:32 -07:00
jp9000 3b1775d97f UI: Add configurable transitions 2016-03-01 15:18:34 -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 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 e5fc4dbbcd UI: Warn if high resource usage when encoding
Shows a warning stating that encoding is stalling, and shows the number
and percentage of frames that were skipped due to encoding.
2016-01-25 17:29:10 -08:00
jp9000 3749436cd5 UI: Fix "invalid" audio devices in audio settings
If a global audio device is disconnected or for whatever reason is no
longer available when audio settings is opened, it will erroneously
select index 0 of the combo box ("Disabled") by default because it can't
find it in the combo box.  This fixes that issue by making it insert an
item in to the combo box specifying that the previously available audio
device is no longer available, and properly preserving the user's
settings.
2016-01-25 17:29:10 -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
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 d4c4a0d1aa UI: Add custom muxer settings for ffmpeg-mux 2015-11-27 15:48:29 +01:00
Palana ddfe6483b3 UI: Add OBS_PROPERTY_FRAME_RATE implementation 2015-11-14 15:57:21 +01:00
Palana f4aae94fe2 UI: Remove "unsupported" part from AutoSelect message
The unsupported part should basically be signaled via making that
value inaccessible
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 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
jp9000 27d2860629 UI: Clarify base/scaled resolution text 2015-09-19 15:45:14 -07:00
jp9000 5ba8333da3 UI: Add more potential recording errors 2015-09-19 08:20:19 -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 f592c33eec UI: Implement stream delay
When stream delay is active, the "Start/Stop Streaming" button is
changed in to a menu button, which allows the user to select either the
option to stop the stream (which causes it to count down), or forcibly
stop the stream (which immediately stops the stream and cuts off all
delayed data).

If the user decides they want to start the stream again while in the
process of counting down, they can safely do so without having to wait
for it to stop, and it will schedule it to start up again with the same
delay after the stop.

On the status bar, it will now show whether delay is active, and its
duration.  If the stream is in the process of stopping/starting, it will
count down to the stop/start.

If the option to preserve stream cutoff point on unexpected
disconnections/reconnections is enabled, it will update the current
delay duration accordingly.
2015-09-10 12:13:40 -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 84d5938af2 Revert "UI: Add confirmation when clicking stop stream"
This reverts commit a508c17f0a.

I realized that this would become more of an annoyance for most people
rather than anything helpful.  This has only happened only twice that I
am aware of in all the years that the program has been around.
2015-09-10 12:11:29 -07:00
jp9000 a508c17f0a UI: Add confirmation when clicking stop stream
I decided to add a confirmation message box simply to prevent cases
where users may accidentally click "Stop Streaming".
2015-09-06 16:33:57 -07:00
jp9000 ee9cb8a931 UI: Increase clarity of exit message 2015-09-06 16:33:56 -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
Palana 99db4d7577 UI: Toggle password "Show" button text when clicked 2015-07-06 13:38:57 +02:00