Commit Graph

568 Commits (4abae186cec647a7b34e5a7159245d9ab62f3e65)

Author SHA1 Message Date
jp9000 dc36f6f420 UI: Implement deferred update flag (properties) 2015-03-19 15:57:19 -05:00
jp9000 db17a72ff6 UI: Fix typo in dark theme causing wrong borders
This fixes an issue where the borders for certain types of windows would
not match the intended border style/color.  It was supposed to be 1
through 6 for frameShape, but I ended up putting 5 twice.
2015-03-13 07:20:04 -07:00
jp9000 48d47e9101 UI: Fix dark theme border consistency issue
Fixes an issue where the border color/style would not be consistent
across different operating systems
2015-03-13 01:41:57 -07:00
jp9000 9832a760b8 (API Change) Always use planar float audio output
Core API functions changed:
-----------------------------
EXPORT bool obs_reset_audio(struct audio_output_info *aoi);
EXPORT bool obs_get_audio_info(struct audio_output_info *aoi);

To:
-----------------------------
EXPORT bool obs_reset_audio(const struct obs_audio_info *oai);
EXPORT bool obs_get_audio_info(struct obs_audio_info *oai);

Core structure added:
-----------------------------
struct obs_audio_info {
	uint32_t            samples_per_sec;
	enum speaker_layout speakers;
	uint64_t            buffer_ms;
};

Non-interleaved (planar) floating point output is standard with audio
filtering, so to prevent audio filters from having to worry about
different audio format implementations and for the sake consistency
between user interfaces, make it so that audio is always set to
non-interleaved floating point output.
2015-03-12 22:22:02 -07:00
Socapex 6a16778bc9 UI: Implement theme selection option
OBS will offer the user a list of themes which are .qss files inside
data/obs-studio/themes.  If no theme is found in the configuration, it
loads the default theme for the system.
2015-03-12 09:27:18 -07:00
jp9000 5262fa31c0 UI: Change "Language:" to "Language" (consistency) 2015-03-12 09:27:18 -07:00
jp9000 7bd85233cc UI: Make "output mode" label disabled if active
I had previous made the output mode list box become disabled, but
neglected to do it for the label as well.
2015-03-12 09:27:17 -07:00
jp9000 21b8e6462b UI: Give "advanced" section icon a white border
Instead of trying to replace this icon, I feel like just giving it a
white border is sufficient to make it usable in both light and dark
themes.

The only other option is to add icon changing code for themes for this
particular type of widget, and I felt it was best to not go down that
route due to the complexity involved.
2015-03-12 09:27:16 -07:00
Socapex a62f079541 UI: Add dark theme
Links up certain controls via a "themeID" property so the icons can by
dynamically changed via the qss file if needed.
2015-03-12 09:27:16 -07:00
jp9000 b03eae57c6 (API Change) Fix "apply service settings" functions
API changed from:
------------------------
EXPORT void obs_service_apply_encoder_settings(obs_service_t *service,
		obs_encoder_t *video_encoder,
		obs_encoder_t *audio_encoder);

void obs_service_info::apply_encoder_settings(void *data
			obs_encoder_t *video_encoder,
			obs_encoder_t *audio_encoder);

To:
------------------------
EXPORT void obs_service_apply_encoder_settings(obs_service_t *service,
		obs_data_t *video_encoder_settings,
		obs_data_t *audio_encoder_settings);

void obs_service_info::apply_encoder_settings(void *data
			obs_data_t *video_encoder_settings,
			obs_data_t *audio_encoder_settings);

These changes make it so that instead of an encoder potentially being
updated more than once with different settings, that these functions
will be called for the specific settings being used, and the settings
will be updated according to what's required by the service.

This fixes that design flaw and ensures that there's no case where
obs_encoder_update is called where the settings might not have
service-specific settings applied.
2015-03-07 16:32:00 -08:00
jp9000 5faa5157c5 UI: Change default retry delay to ten seconds
Two seconds is a bit low apparently, and some services don't seem to
like it.
2015-03-07 10:10:41 -08:00
Socapex baa1890ed6 UI: Save position and size of main window
Resolves bug tracker issue #0000143

Closes Pull Request #396
2015-03-06 08:54:31 -08:00
jp9000 f4704cf4a8 UI: Use 'reorder' signal for scene item reordering
The old signals for for reordering have been removed; the new signal to
use is the 'reorder' signal, which means that the list needs to be
refreshed.
2015-03-05 02:28:17 -08:00
jp9000 b515f08048 UI: Fix potential race condition
The update_properties signal is created before the view itself is
created, therefore it was possible for the callback to trigger when the
view was invalid.
2015-03-04 04:34:06 -08:00
jp9000 7c8b053703 UI: Indicate source is being shown in properties
When viewing the properties of a source, there's no way to specify that
a source is actually being shown or not to the core.  This uses the new
obs_source_inc_showing and obs_source_dec_showing to tell the source
that it's being shown/hidden in this part of the program without
necessarily having to use a new render view just to render it.
2015-03-02 12:23:25 -08:00
HomeWorld 1a7e594bdb UI: Optimize OBSBasic.ui
This optimizes the main OBSBasic.ui window so that it uses fewer objects
and thus fewer allocations.  Closes pull request #386

(message added by Jim)
2015-03-01 19:06:16 -08:00
Caleb Anderson c3e382c8f7 UI: View Log menu entry in Help -> Log Files menu
Since the file being logged to changes with each run, opening a log
file is a tad more involved than desirable when it's necessary to view
the log each time OBS is run. This new menu entry shortcuts opening the
file from the file system manually.
2015-02-24 01:44:37 -07:00
fryshorts fd53892a4d UI: Fix rounding issues for advanced audio
Remove the close_float check for values that are set through the
advanced UI. If the difference of the integer was 1 this would sometimes
cause the input to be ignored.
Add rounding to values that are set through the signal system, since
casting alone will act like floor, which is not desirable in this case.
2015-02-17 21:44:32 +01:00
HomeWorld 641f626593 UI: Display message if no properties available
Display "No properties available" text in the property view if there are
no properties available.

Closes Pull Request #377
2015-02-16 18:39:39 -08:00
jp9000 2cc4c6e8d3 UI: Prevent re-updating of the stream encoder
Using advanced output mode, the stream encoder could be updated with the
same settings, causing the encoder to output those changes
unnecessarily.
2015-02-15 22:08:55 -08:00
jp9000 77f2fda3ce UI: Fix adv. mode recording settings update bug
The recording settings are updated only when not using the streaming
encoder for recording.
2015-02-15 22:08:55 -08:00
Socapex 86d4ee68e6 UI: Do not save the project if null
If the jsonData string is null, then there's nothing that should be
written.

Closes pull request #366 from Socapex/debugcrash
2015-02-14 12:19:41 -08:00
fryshorts 90ccae6f4c UI: Ensure only one advanced audio settings window
Add a check to prevent that the advanced audio settings dialog is only
once. When the dialog is already present raise it to the top instead.
2015-02-13 13:11:15 +01:00
fryshorts c45e74039f UI: Fix crash in advanced audio settings
Delete source controls when the settings window is deleted.
2015-02-13 13:11:15 +01:00
dodgepong 2b01030607 Add latest translations from crowdin 2015-02-11 19:15:08 -05:00
dodgepong 187f5181c7 Add latest translations from crowdin 2015-02-11 16:27:24 -05:00
jp9000 20d1c2c410 UI: Add 'Advanced' settings section
Currently, this allows the setting of values such as:
- Audio buffering time
- Color format (still somewhat unsupported)
- YUV color space (if a YUV format)
= YUV color range (if a YUV format)

More color formats will be added in the future, such as RGB and YUV
4:2:2 formats.
2015-02-11 13:10:57 -08:00
jp9000 bd2110947a UI: Disable unused export/import menu options 2015-02-11 13:10:56 -08:00
jp9000 bda7cfc3ed UI: Remove unused variable 2015-02-11 08:06:37 -08:00
jp9000 dce0afa84f UI: Use grid layout for advanced audio properties
This fixes the issue where the labels wouldn't have enough space for
localization text in certain circumstances, and also fixes some issues
with alignment
2015-02-11 08:02:56 -08:00
jp9000 1fc132dc77 UI: Add 'Save' and 'Discard' to localization text 2015-02-11 05:47:05 -08:00
jp9000 c2832b8b1c UI: Add "enforce streaming service settings"
Add a checkbox named "Enforce streaming service encoder settings"
checkbox to advanced output.  Disabling this checkbox allows the user to
optionally disable the enforcement of streaming service encoder
settings.  I had a user complain that they didn't want to always have
the service's preferred encoder settings forced on them.
2015-02-10 22:10:40 -08:00
jp9000 fc574a0d7b UI: Fix custom encoder settings not applying
Somehow the code to hook this particular widget was deleted, so add it
back in.
2015-02-10 22:10:39 -08:00
jp9000 943f89b873 UI: Apply service encoder settings (simple output)
Ensures that the current service's encoder settings are applied to the
encoders used with the simple output.  This is always on for simple
output so users don't have to mess with it themselves.
2015-02-10 22:10:39 -08:00
jp9000 3ca57fbb3e UI: Set simple mode reconnect signal to toggled()
clicked() is the wrong signal to use, it only activates on actual user
click, not when the value is changed.  toggle() activates whenever the
value itself is changed.
2015-02-10 22:10:38 -08:00
jp9000 368f04727c UI: Set simple output mode bufsize minimum to 0 2015-02-10 22:10:07 -08:00
dodgepong eb918d01b4 Add latest translations from CrowdIn 2015-02-09 19:26:17 -05:00
jp9000 0c1d121ff2 Remove various unused variables
Unused variables detected by mingw
2015-02-09 03:49:13 -08:00
martell c0827212df UI: use _WIN32 instead of WIN32
_WIN32 is a compiler define so it should be used.  WIN32 is only valid
when it's defined in a header.
2015-02-09 03:41:58 -08:00
jp9000 21ec81ebcc UI: Do not allow invalid downscale/rescale values
For the 'output resolution' setting in video settings, do not show
values in the list that it does not support (width must be aligned to a
128bit boundry, and height must be divisible by two)

For the 'rescale' settings in advanced outputs, the scales must all be
divisible by two.
2015-02-08 01:31:02 -08:00
jp9000 c69e7c96f3 UI: Base encoder rescales on output resolution
The 'rescale' values in advanced output section are supposed to be based
upon the output resolution of the program.  Meaning they should not be
used for scaling up, because the resolution downloaded from the graphics
processor is the output resolution set in video settings; thus any
resolution you set for the 'rescale' values is scaled from that.
2015-02-08 01:29:15 -08:00
jp9000 bd78db91e9 UI: Fix encoder rescaling for streaming
The "rescale" option for streaming in the advanced output settings was
not properly checking the parameter output of sscanf.  sscanf returns
the number of values that were found, not the number of string matches.
2015-02-08 01:11:34 -08:00
jp9000 bbd48c7bf2 UI: Isolate filter localization strings
To prevent from causing confusion/issues for our most awesome and
respected locale editors, only localize and translate the relevant text
rather than the extensions of the filter.
2015-02-07 12:12:12 -08:00
jp9000 b72e68afe7 (API Change) Fix obs_service_gettype func name
Before:                After:
obs_service_gettype    obs_service_get_type

It seems there was an API function that was missed when we were doing
our big API consistency update.  Unsquishes obs_service_gettype to
obs_service_get_type.
2015-02-07 08:19:34 -08:00
jp9000 69c6714090 UI: Make service settings use OK/Apply/Cancel
Currently service settings are updated in real time via the properties
view, which means that OK/Cancel/Apply have no effect.  This fixes that
by using the new type of properties view that operates only on settings
data, not an object.
2015-02-07 08:11:46 -08:00
jp9000 17c342bf61 UI: If active, prompt user before exiting
Precautionary measure to prevent the user from accidentally clicking the
'exit' buttons
2015-02-07 03:39:16 -08:00
jp9000 a3e47e53bf UI: Add button for adv. audio properties
Add a button to the main window to access advanced audio properties to
make it a bit more visible to users.

To facilitate this, the bottom part of the window was switched to a grid
layout.
2015-02-07 02:43:37 -08:00
jp9000 8ee3e41d09 UI: Remove unnecessary info from locale string
All outputs specify streaming/recording, there's no reason to say this
explicitly it just causes confusion about the advanced output.
2015-02-06 13:47:04 -08:00
jp9000 8b2614ddc2 UI: Add advanced output settings
Adds an 'advanced' mode to the output settings to allow more powerful
and complex streaming and recording options:

- Optionally use a different encoder for recording than for streaming to
  allow the recording to use a different encoder or encoder settings if
  desired (though at the cost if increased CPU usage depending on the
  encoders being used)

- Use encoders other than x264

- Rescale the recording or streaming encoders in case the user wishes to
  stream and record at different resolutions

- Select the specific mixer to use for recording and for streaming,
  allowing the stream and recording to use separate mixers (to for
  example allow a user to stream the game/mic audio but only record the
  game audio)

- Use FFmpeg output for the recording button instead of only recording
  h264/aac to FLV, allowing the user to output to various different
  types of file formats or remote URLs, as well as allowing the user to
  select and use different encoders and encoder settings that are
  available in the FFmpeg library

- Optionally allow the use of multiple audio tracks in a single output
  if the file formats or stream services support it
2015-02-06 11:55:48 -08:00
jp9000 a2373b1258 UI: Add buffer size to 'simple' settings 2015-02-06 03:56:19 -08:00