- 08 3月, 2014 6 次提交
-
-
由 jp9000 提交于
Had the audio restart slot connected to things that didn't require a restart
-
由 jp9000 提交于
The strings didn't have ending double quotes. No clue why this didn't fail in GCC and VC. Well, VC is horrible but I expected better out of GCC.
-
由 jp9000 提交于
- Fix a bug where the initial audio data insertion would cause all audio data to unintentionally clear (mixed up < and > operators, damn human error) - Fixed a potential interdependant lock scenario with channel mutex locks and graphics mutex locks. The main video thread could lock the graphics mutex and then while in the graphics mutex could lock the channels mutex. Meanwhile in another thread, the channel mutex could get locked, and then the graphics mutex would get locked, causing a deadlock. The best way to deal with this is to not let mutexes lock within other mutexes, but sometimes it's difficult to avoid such as in the main video thread. - Audio devices should now be functional, and the devices in the audio settings can now be changed as desired.
-
由 jp9000 提交于
There shouldn't be errors if the actual source has successfully been created, just warnings.
-
由 jp9000 提交于
Also, revamp the settings dialog code and make it use signals and slots a bit better.
-
由 jp9000 提交于
Modify the obs_display API so that it always uses an orthographic projection that is the size of the display, rather than OBS' base size. Having it do an orthographic projection to OBS' base size was silly because it meant that everything would be skewed if you wanted to draw 1:1 in the display. This deoes mean that the callbacks must handle resizing the images, but it's worth it to ensure 1:1 draw sizes. As for the preview widget, instead of making some funky widget within widget that resizes, it's just going to be a widget within the entire top layout. Also changed the preview padding color to gray.
-
- 07 3月, 2014 3 次提交
-
-
由 jp9000 提交于
- Implement a means of obtaining default settings for an input/output/encoder. obs_source_defaults for example will return the default settings for a particular source type. - Because C++ doesn't have designated initializers, use functions in the WASAPI plugin to register the sources instead.
-
由 jp9000 提交于
Having everything in global.ini meant that if you wanted different settings for studio mode, that it would also overwrite it for basic mode. This way, the settings for each mode are separate, and you can use different settings for each mode.
-
由 jp9000 提交于
The function would fail to compile on linux because the variables didn't exist
-
- 06 3月, 2014 2 次提交
-
-
由 jp9000 提交于
It will now load up a the list of audio input/output devices in the combo boxes in audio settings.
-
由 jp9000 提交于
- Implement windows monitor capture (code is so much cleaner than in OBS1). Will implement duplication capture later - Add GDI texture support to d3d11 graphics library - Fix precision issue with sleep timing, you have to call timeBeginPeriod otherwise windows sleep will be totally erratic.
-
- 04 3月, 2014 3 次提交
-
-
由 jp9000 提交于
I can't believe I did !res there. Well I suppose I can believe it, but still.
-
由 jp9000 提交于
The enumeration code being up at the top was making things quite messy, so I split that code out to a separate set of files.
-
由 jp9000 提交于
- Add WASAPI audio capture for windows, input and output - Check for null pointer in os_dlopen - Add exception-safe 'WinHandle' and 'CoTaskMemPtr' helper classes that will automatically call CloseHandle on handles and call CoTaskMemFree on certain types of memory returned from windows functions - Changed the wide <-> MBS/UTF8 conversion functions so that you use buffers (like these functions are *supposed* to behave), and changed the ones that allocate to a different naming scheme to be safe
-
- 03 3月, 2014 5 次提交
-
-
由 jp9000 提交于
Somehow this code didn't get included with the last commit.
-
由 jp9000 提交于
Also, don't have it repeat trying to reconnect if no devices are found
-
由 jp9000 提交于
- Split input and output audio captures so that they're different sources. This allows easier handling and enumeration of audio devices without having to do some sort of string processing. This way the user interface code can handle this a bit more easily, and so that it doesn't confuse users either. This should be done for all audio capture sources for all operating systems. You don't have to duplicate any code, you just need to create input/output wrapper functions to designate the audio as input or output before creation. - Make it detect soundflower and wavtap devices as mac "output" devices (even though they're actually input) for the mac output capture, and make it so that users can select a default output capture and automatically use soundflower or wavtap. I'm not entirely happy about having to do this, but because mac is designed this way, this is really the only way to handle it that makes it easier for users and UI code to deal with. Note that soundflower and wavtap are still also designated as input devices, so will still show up in input device enumeration. - Remove pragma messages because they were kind polluting the other compiler messages and just getting in the way. In the future we can just do a grep for TODO to find them. - Redo list property again, this time using a safer internal array, rather than requiring sketchy array inputs. Having functions handle everything behind the scenes is much safer. - Remove the reference counter debug log code, as it was included unintentionally in a commit.
-
由 jp9000 提交于
Categories added an unnecessary complexity to making properties, and would very likely almost never be used in most cases, and were more of a display feature. The main issue is that it made property data more complex to work with, and I just didn't feel comfortable with that. Also, added a function to allow you to retrieve a porperty just by its name.
-
由 jp9000 提交于
-
- 02 3月, 2014 2 次提交
-
-
由 jp9000 提交于
As usual, microsoft treats all enums as integers, rather than actually even checking the enum type. Worthless compiler. Just complete garbage.
-
由 jp9000 提交于
When a source/output/etc has a property of a 'list' type, there was no way to get the names associated with its values. That, and it only supported lists of either text, or enums (0..[value] only). Now, you can associate translated names with those values, and use integer, float, or string values. Put it all in to one function as well to simplify its usage. I plan on using this to help get enumerations from devices/etc for certain types of sources. For example, if I get the properties of an audio source, I'd like to have a list of available devices with it as well.
-
- 01 3月, 2014 6 次提交
-
-
由 jp9000 提交于
- Signals and dynamic callbacks now require declarations to be made before being used. What this does is allows us to get information about the functions dynamically which can be relayed to the user and plugins for future extended usage (this should have big implications later for scripting in particular, hopefully). - Reduced the number of types calldata uses from "everything I could think of" to simply integer, float, bool, pointer/object, string. Integer data is now stored as long long. Floats are now stored as doubles (check em). - Use a more consistent naming scheme for lexer error/warning macros. - Fixed a rather nasty bug where switching to an existing scene would cause it to increment sourceSceneRefs, which would mean that it would never end up never properly removing the source when the user clicks removed (stayed in limbo, obs_source_remove never got called)
-
由 jp9000 提交于
-
由 jp9000 提交于
If the default device changes, set the reconnect interval to 200 milliseconds so it pretty much immediately tries to reinitialize the audio with the newly selected default device. Otherwise, use 2000 millisecond intervals, and assume disconnection. Also, reduced FFmpeg logging to just regular FFmpeg information rather than everything FFmpeg logs.
-
由 jp9000 提交于
Happened because I compiled on windows and it only compiled windows-specific code.
-
由 jp9000 提交于
See, it can sometimes be a bit confusing. These functions should definitely not fail under normal circumstances, and these errors may affect the user and/or application in some way.
-
由 jp9000 提交于
LOG_ERROR should be used in places where though recoverable (or at least something that can be handled safely), was unexpected, and may affect the user/application. LOG_WARNING should be used in places where it's not entirely unexpected, is recoverable, and doesn't really affect the user/application.
-
- 28 2月, 2014 9 次提交
-
-
由 jp9000 提交于
I can't believe I wasn't doing this. This is why file output was getting corrupted. Audio and video send in data from separate threads. I should be embarassed for not having considered that. Key lesson: Increase threading paranoia levels. Apparently my threading paranoid levels are lackluster.
-
由 jp9000 提交于
I'm not entirely sure what's going on with my FFmpeg code, but it's definitely not generating the proper footers for MP4 files, despite the fact that the footer function succeeds. Going to use AVIs for the time being still.
-
-
由 jp9000 提交于
Also, make it use 'veryfast' preset. Still testing this, might have to revise this later.
-
由 jp9000 提交于
The mutex must be unlocked regardless of what the return value is or it will be locked forever if the return value isn't 0.
-
-
由 jp9000 提交于
After a mac just boots up, it often takes about 700 milliseconds for audio devices to work on first use, so it would often have issues with the 700ms audio buffering time, and audio data would get cut off. Just increasing the buffering a little bit fixes the issue.
-
-
由 jp9000 提交于
-
- 27 2月, 2014 4 次提交
-
-
由 jp9000 提交于
Forgot to add a '!'.
-
由 jp9000 提交于
-
由 jp9000 提交于
-
由 jp9000 提交于
Actually, if initializing failed at all, it would never properly uninitialize because the 'initialized' variable was never set until the very end. Instead, set the "initialized" flag from the beginning to ensure initialization.
-