Commit Graph

2128 Commits (bda7cfc3ed0e6e1f128a23fe8713554f54b0b7bb)

Author SHA1 Message Date
jp9000 73d3be9311 obs-outputs: Use INVALID_SOCKET instead of -1
On windows, for whatever reason sockets use the SOCKET type which is not
a signed integer.  Still, even though it's not a signed integer, -1 is
used to indicate an invalid socket, but the way you use it is via
microsoft's fabulously dumb little INVALID_SOCKET define, so we have to
make librtmp use that instead.
2015-02-09 03:49:17 -08:00
jp9000 e26dec916e libobs: Use windows wide <-> UTF8 conversion
If on windows, use the windows UTF conversion functions due to the fact
that the existing utf code is meant for 32bit wide characters, while the
windows conversion functions will properly handle 16bit wide characters.
2015-02-09 03:49:16 -08:00
jp9000 0c30dca526 libobs: Update to latest version of ComPtr.hpp 2015-02-09 03:49:15 -08:00
jp9000 5dfecab15c Fix windows printf format warnings (from mingw) 2015-02-09 03:49:14 -08:00
jp9000 0c1d121ff2 Remove various unused variables
Unused variables detected by mingw
2015-02-09 03:49:13 -08:00
jp9000 f9d4a957c1 Disable -Wmissing-braces
This warning is somewhat insignificant for most of what we do; just
warns about missing braces for sub-structures, but most of the time it
wrongly triggers on = {0}, which is a standard way of initializing a
structure to 0 in C.
2015-02-09 03:48:25 -08:00
martell a83e74dc1c Disable SEH for mingw-w64
The SEH implementation is not quite working properly in mingw-w64, so
disable it for the time being.
2015-02-09 03:47:27 -08:00
martell 5d184dc8e5 obs-d3d11: use sprintf for mingw-w64
We have a sprintf_s function in mingw-w64, but it's the it won't compile
with visual studio because it's the C11 specification (aka the correct
specification that's not made by morons).  Microsoft's version differs
to the specification (and is made by morons), so fall back to sprintf

(note if you can't tell, this commit message was edited by Jim)
2015-02-09 03:46:11 -08:00
martell d1a1a84722 obs-d3d11: Use cinttypes header (mingw)
There appears to be a bug with mingw where including the regular C
inttypes.h won't work; instead you have to use the 'cinttypes' C++
version.
2015-02-09 03:43:56 -08:00
martell e96bd8c6bb obs-d3d11: include float.h for FLT_MAX
gcc expects this header to be included
2015-02-09 03:41:59 -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
martell e0fab8888f test-input: avoid w32-pthreads for mingw-w64 2015-02-09 03:41:57 -08:00
martell 97cc9b610a win-capture: on mingw-w64 support try and catch 2015-02-09 03:41:56 -08:00
martell c5478f52d9 win-capture: explicitly cast function pointers
This solves invalid conversions when building with gcc
2015-02-09 03:41:55 -08:00
martell 1e056fd7ec win-capture: deal with a 32bit handle cast errors
The HWND type is a void pointer, but HWND values are global and always
32bit despite, so casting to 32bit can cause cast warnings on actual
good compilers like gcc via mingw.  This change correctly handles the
casting to 32bits without producing unwanted warnings or errors on
mingw.
2015-02-09 03:41:54 -08:00
martell c5fa22ae93 win-capture: avoid multiple definitions of data
At link time unless they are defined static they will conflict
2015-02-09 03:41:54 -08:00
martell 45cec546bd win-capture: fix link libs for mingw-w64
win-capture should not postfix .lib to psapi.

The graphics hook also requires psapi when linking.

Also change some link libs as mingw-w64 libraries are not postfixed
.lib.
2015-02-09 03:41:53 -08:00
martell d161f92105 obs-output: avoid w32-pthreads for mingw-w64
mingw-w64 provides its own pthreads library.

Also, change link libs as mingw-w64 libraries are not postfixed .lib
2015-02-09 03:41:52 -08:00
martell b8055ed944 obs-ffmpeg: avoid w32-pthreads for mingw-w64
mingw-w64 provides its own pthreads library
2015-02-09 03:41:51 -08:00
martell 27c4336eed libobs-d3d11: Remove Microsoft's dxgi.h
I have added LGPL idl's for d3d11 and dxgi to mingw-w64, so we can
remove the existing mingw helper files from libobs-d3d11
2015-02-09 03:41:50 -08:00
martell f9fa9c289f libobs: fix warning when logging the win version
The OSVERSIONINFOW structure contains DWORD variables, so to keep mingw
happy this should be printed with %ld
2015-02-09 03:41:49 -08:00
martell 9dd542f4fb libobs: fix warning when logging the cpu speed
Speed is a DWORD and should be printed as %ld.  This will keep mingw
happy and warning free
2015-02-09 03:41:49 -08:00
martell ef37b9b888 libobs: fix windows version log warning
OSVERSIONINFOW uses SIZE_T so cast to unsigned long instead.
2015-02-09 03:41:48 -08:00
martell 119c06198a deps-glad: don't build with -fPIC on windows
-fPIC generates unwanted warnings in mingw on windows.
2015-02-09 03:41:47 -08:00
martell e13a19207f wasapi: add PKEY_Device_FriendlyName on mingw-w64
Hopefully we can get this function merged for mingw-w64 4.1.  As for the
4.0 release, adding a new header is a big change, it'll have to wait for
the next version.
2015-02-09 03:41:46 -08:00
martell 5fa4889c9c dshow: call to CapsMatch is missing an argument
Evidently Visual Studio did not complain about this.  GCC however is
much more strict about this.
2015-02-09 03:41:45 -08:00
martell 4f5807e0b0 dshow: link to correct uuid libs
Remove the .lib postfix from strmiids

ksuser provides KSCATEGORY_ENCODER and similar GUIDS used

wmcodecdspuuid provides MEDIASUBTYPE_H264 MEDIASUBTYPE_RAW_AAC1 and
MEDIASUBTYPE_I420 so no need to define them in dshow-formats.  The
submodule will have to be updated to support this change.
2015-02-09 03:41:45 -08:00
martell 23d39ea5a8 libobs: threading-windows mingw-w64 support
Enable support for mingw-w64 in threading-windows.c
2015-02-09 03:41:44 -08:00
martell 079d15d518 libobs: mingw-w64 threading-posix
Enable support for mingw-w64 in threading-posix.c
2015-02-09 03:41:43 -08:00
martell 47c86b6cbe libobs: avoid using to w32-pthreads for mingw-w64
mingw-w64 provides its own pthreads library.

also change some link libs as mingw-w64 libraries are not postfixed .lib
2015-02-09 03:41:37 -08:00
martell c83a95983b cmake: set windows version to vista on mingw-w64
mingw-w64 defaults to xp, so when building we set it to vista because
function CancelIoEx is used in ipc-util/pipe-windows.c.

http://msdn.microsoft.com/en-us/library/windows/desktop/aa363792.aspx
2015-02-08 06:41:08 -08:00
martell e869a914b0 cmake: exclude w32-pthreads for mingw-w64
mingw-w64 has its own pthreads library
2015-02-08 06:40:15 -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 99c674e41f libobs: Add UI-independent plugin search paths
Adds an additional search path for UI-independent and
installation-independent plugins for windows/mac.

Windows:
%appdata%/obs-plugins/

Mac:
~/Library/Application Support/obs-plugins/

Plugin directory format is [module]/bin and [module]/data.

On windows, for 32bit binaries:
[module]/bin/32bit

and 64bit binaries:
[module]/bin/64bit
2015-02-08 00:55:26 -08:00
jp9000 7e3efa86e5 libobs: Don't search '.' and '..' dirs for modules
On windows doing os_glob will also include '.' and '..', exclude these
when searching for modules.
2015-02-08 00:54:07 -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 2ba5782fff Add optional support for opus for FFmpeg 2015-02-07 04:50:36 -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 28278682a3 win-capture: Add option to show/hide game cursor 2015-02-07 03:06: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
jp9000 07007bcc6e UI: Refactor output handling
To accommodate multiple types of outputs, there has to be some level of
abstraction.  The BasicOutputHandler structure will give us a way that
we can switch between different output configurations.
2015-02-06 03:17:33 -08:00
jp9000 efe31c9fe9 UI: Keep prop. view scroll positions if modified
If the properties view is scrolled down or right and a widget triggers
it to repaint, it would reset its scroll position, making editing a bit
awkward.  This simply saved/restores the position before and after
rebuilding the properties view.
2015-02-06 00:01:21 -08:00
jp9000 4983aaa586 UI: Clarify encoder preset usage
For the simple output section, clarifying that higher == less CPU is
pretty important.
2015-02-04 16:52:04 -08:00