- Sep 25, 2014
-
-
Jim authored
It's better to use VBR for local recordings, so this option should be nice for people who want to do that.
-
- Aug 25, 2014
-
-
Jim authored
-
- Aug 08, 2014
-
-
Jim authored
Instead of having functions like obs_signal_handler() that can fail to properly specify their actual intent in the name (does it signal a handler, or does it return a signal handler?), always prefix functions that are meant to get information with 'get' to make its functionality more explicit. Previous names: New names: ----------------------------------------------------------- obs_audio obs_get_audio obs_video obs_get_video obs_signalhandler obs_get_signal_handler obs_prochandler obs_get_proc_handler obs_source_signalhandler obs_source_get_signal_handler obs_source_prochandler obs_source_get_proc_handler obs_output_signalhandler obs_output_get_signal_handler obs_output_prochandler obs_output_get_proc_handler obs_service_signalhandler obs_service_get_signal_handler obs_service_prochandler obs_service_get_proc_handler
-
Jim authored
Previous names: New names: ----------------------------------------------------------- obs_view_setsource obs_view_set_source obs_view_getsource obs_view_get_source obs_source_getdisplayname obs_source_get_display_name obs_source_getwidth obs_source_get_width obs_source_getheight obs_source_get_height obs_filter_getparent obs_filter_get_parent obs_filter_gettarget obs_filter_get_target obs_source_filter_setorder obs_source_filter_set_order obs_source_getsettings obs_source_get_settings obs_source_getname obs_source_get_name obs_source_setname obs_source_set_name obs_source_setvolume obs_source_set_volume obs_source_getvolume obs_source_get_volume obs_scene_getsource obs_scene_get_source obs_scene_fromsource obs_scene_from_source obs_scene_findsource obs_scene_find_source obs_output_getdisplayname obs_output_get_display_name obs_output_getname obs_output_get_name obs_encoder_getname obs_encoder_get_name obs_service_getdisplayname obs_service_get_display_name obs_service_getname obs_service_get_name
-
- Jul 13, 2014
- Jul 08, 2014
-
-
Jim authored
Being in with the other locale files causes a bit of confusion, especially since the locale files will all be renamed to have .ini extensions.
-
- Jul 03, 2014
-
-
Jim authored
-
- Jun 29, 2014
-
-
Jim authored
The current renderer should be a global config setting, not a local setting.
-
- Jun 25, 2014
-
-
Jim authored
The locale parameter was a mistake, because it puts extra needless burden upon the module developer to have to handle this variable for each and every single callback function. The parameter is being removed in favor of a single centralized module callback function that specifically updates locale information for a module only when needed.
-
Jim authored
-
- Jun 23, 2014
-
-
Jim authored
Currently, if a user presses 'OK' or 'Apply' on the settings window, it will save all data from all controls on a settings pane, regardless of whether of not they were changed. The major issue with this is that setting the data will overwrite all default values, making it impossible for default values to be used if a user didn't actually change a value. (Thanks to palana for pointing this fact out) So instead, mark a control as 'changed' using QObject::property() and QObject::sender(), and add a few helper functions to controls to ensure that they are checked to see whether they were actually changed directly by the user before saving the value to the config.
-
- Jun 15, 2014
-
-
Jim authored
So, scene editing was interesting (and by interesting I mean excruciating). I almost implemented 'manipulator' visuals (ala 3dsmax for example), and used 3 modes for controlling position/rotation/size, but in a 2D editing, it felt clunky, so I defaulted back to simply click-and-drag for movement, and then took a similar though slightly different looking approach for handling scaling and reszing. I also added a number of menu item helpers related to positioning, scaling, rotating, flipping, and resetting the transform back to default. There is also a new 'transform' dialog (accessible via menu) which will allow you to manually edit every single transform variable of a scene item directly if desired. If a scene item does not have bounds active, pulling on the sides of a source will cause it to resize it via base scale rather than by the bounding box system (if the source resizes that scale will apply). If bounds are active, it will modify the bounding box only instead. How a source scales when a bounding box is active depends on the type of bounds being used. You can set it to scale to the inner bounds, the outer bounds, scale to bounds width only, scale to bounds height only, and a setting to stretch to bounds (which forces a source to always draw at the bounding box size rather than be affected by its internal size). You can also set it to be used as a 'maximum' size, so that the source doesn't necessarily get scaled unless it extends beyond the bounds. Like in OBS1, objects will snap to the edges unless the control key is pressed. However, this will now happen even if the object is rotated or oriented in any strange way. Snapping will also occur when stretching or changing the bounding box size.
-
- May 21, 2014
-
-
Jim authored
Implement the 'file path' in output settings, and implement the 'start recording' button, though for the time being I'm just going to make it use a directory rather than allow custom file names. This file output will actually share the video and audio encoder with the stream. I don't really know what to do about MP4 -- I don't really like the idea of saving directly in the program, if you do and the program crashes, that MP4 file is lost. I'm contemplating making some sort of mp4 output process stub. So no MP4 file output for the time being. If you need MP4, just remux it with FFmpeg: ffmpeg -i flv_file.flv -acodec copy -vcodec copy mp4_file.mp4
-
- May 18, 2014
-
-
Jim authored
Added github gist API uploading to the help menu to help make problems a bit easier to debug in the future. It's somewhat vital that this functionality be implemented before any release in order to analyze any given problem a user may be experiencing.
-
- May 15, 2014
-
-
Jim authored
-
- May 12, 2014
-
-
Socapex authored
Don't ask user to save changes every item switch. Apply button greyed out when there are no changes.
-
- May 10, 2014
-
-
Jim authored
Add a 'source selection' dialog to replace the 'enter a name' dialog. This new dialog allows you to make new instances of pre-existing sources so that you can add a pre-existing source to a different scene, or in to the same scene more than once. Also started implementing locale. Comtemplating switching to JSON-based locale later, so we can add things like descriptions/disambiguation, and so we can use jansson's built-in hash table when doing the string lookup.
-
- Apr 24, 2014
-
-
Jim authored
- Updated the services API so that it links up with an output and the output gets data from that service rather than via settings. This allows the service context to have control over how an output is used, and makes it so that the URL/key/etc isn't necessarily some static setting. Also, if the service is attached to an output, it will stick around until the output is destroyed. - The settings interface has been updated so that it can allow the usage of service plugins. What this means is that now you can create a service plugin that can control aspects of the stream, and it allows each service to create their own user interface if they create a service plugin module. - Testing out saving of current service information. Saves/loads from JSON in to obs_data_t, seems to be working quite nicely, and the service object information is saved/preserved on exit, and loaded again on startup. - I agonized over the settings user interface for days, and eventually I just decided that the only way that users weren't going to be fumbling over options was to split up the settings in to simple/basic output, pre-configured, and then advanced for advanced use (such as multiple outputs or services, which I'll implement later). This was particularly painful to really design right, I wanted more features and wanted to include everything in one interface but ultimately just realized from experience that users are just not technically knowledgable about it and will end up fumbling with the settings rather than getting things done. Basically, what this means is that casual users only have to enter in about 3 things to configure their stream: Stream key, audio bitrate, and video bitrate. I am really happy with this interface for those types of users, but it definitely won't be sufficient for advanced usage or for custom outputs, so that stuff will have to be separated. - Improved the JSON usage for the 'common streaming services' context, I realized that JSON arrays are there to ensure sorting, while forgetting that general items are optimized for hashing. So basically I'm just using arrays now to sort items in it.
-
- Apr 04, 2014
-
-
Jim authored
Improve the properties API so that it can actually respond somewhat to user input. Maybe later this might be further improved or replaced with something script-based. When creating a property, you can now add a callback to that property that notifies when the property has been changed in the user interface. Return true if you want the properties to be refreshed, or false if not. Though now that I think about it I doubt there would ever be a case where you would have this callback and *not* refresh the properties. Regardless, this allows functions to change the values of properties or settings, or enable/disable/hide other property controls from view dynamically.
-
- Mar 23, 2014
-
-
Jim authored
- Add a properties window for sources so that you can now actually edit the settings for sources. Also, display the source by itself in the window (Note: not working on mac, and possibly not working on linux). When changing the settings for a source, it will call obs_source_update on that source when you have modified any values automatically. - Add a properties 'widget', eventually I want to turn this in to a regular nice properties view like you'd see in the designer, but right now it just uses a form layout in a QScrollArea with regular controls to display the properties. It's clunky but works for the time being. - Make it so that swap chains and the main graphics subsystem will automatically use at least one backbuffer if none was specified - Fix bug where displays weren't added to the main display array - Make it so that you can get the properties of a source via the actual pointer of a source/encoder/output in addition to being able to look up properties via identifier. - When registering source types, check for required functions (wasn't doing it before). getheight/getwidth should not be optional if it's a video source as well. - Add an RAII OBSObj wrapper to obs.hpp for non-reference-counted libobs pointers - Add an RAII OBSSignal wrapper to obs.hpp for libobs signals to automatically disconnect them on destruction - Move the "scale and center" calculation in window-basic-main.cpp to its own function and in its own source file - Add an 'update' callback to WASAPI audio sources
-
- Mar 10, 2014
-
-
Jim authored
-
Jim authored
Also, check that audio devices are available before setting defaults
-
Jim authored
- Add some temporary streaming code using FFmpeg. FFmpeg itself is not very ideal for streaming; lack of direct control of the sockets and no framedrop handling means that FFmpeg is definitely not something you want to use without wrapper code. I'd prefer writing my own network framework in this particular case just because you give away so much control of the network interface. Wasted an entire day trying to go through FFmpeg issues. There's just no way FFmpeg should be used for real streaming (at least without being patched or submitting some sort of patch, but I'm sort of feeling "meh" on that idea) I had to end up writing multiple threads just to handle both connecting and writing, because av_interleaved_write_frame blocks every call, stalling the main encoder thread, and thus also stalling draw signals. - Add some temporary user interface for streaming settings. This is just temporary for the time being. It's in the outputs section of the basic-mode settings - Make it so that dynamic arrays do not free all their data when the size just happens to be reduced to 0. This prevents constant reallocation when an array keeps going from 1 item to 0 items. Also, it was bad to become dependent upon that functionality. You must now always explicitly call "free" on it to ensure the data is free, and that's how it should be. Implicit functionality can lead to confusion and maintainability issues.
-
- Mar 08, 2014
-
-
Jim authored
Had the audio restart slot connected to things that didn't require a restart
-
- Mar 07, 2014
-
-
Jim authored
- 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.
-
Jim authored
Also, revamp the settings dialog code and make it use signals and slots a bit better.
-
- Mar 06, 2014
-
-
Jim authored
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.
-
Jim authored
The function would fail to compile on linux because the variables didn't exist
-
Jim authored
It will now load up a the list of audio input/output devices in the combo boxes in audio settings.
-
- Feb 24, 2014
-
-
Jim authored
FFmpeg test output wasn't make any attempt to sync data before. Should be much more accurate now. Also, added a restart message to audio settings if base audio settings are changed.
-
- Feb 23, 2014
-
-
Jim authored
Resetting audio while libobs is active is a real pain. I think I'm just going to do audio resetting later, or maybe just require restart regardless just because having to shut down audio streams/lines while there's sources currently active requires recreating all the audio lines for each audio source. Very painful. Video fortunately is no big deal, so at least there's that.
-
Jim authored
Implement a few audio options in to the user interface as well as a few inline audio functions in audio-io.h. Make it so ffmpeg plugin automatically converts to the desired format. Use regular interleaved float internally for audio instead of planar float.
-
- Feb 22, 2014
-
-
Jim authored
This allows the changing of bideo settings without having to completely reset all graphics data. Will recreate internal output/conversion buffers and such and reset the main preview.
-
- Feb 14, 2014
-
-
Jim authored
There were a *lot* of warnings, managed to remove most of them. Also, put warning flags before C_FLAGS and CXX_FLAGS, rather than after, as -Wall -Wextra was overwriting flags that came before it.
-
- Jan 29, 2014
-
-
Palana authored
-
- Jan 28, 2014
-
-
Jim authored
- Add 'set_default' functions to obs-data.*. These functions ensure that a paramter exists and that the parameter is of a specific type. If not, it will create or overwrite the value with the default setting instead. These functions are meant to be explicitly called before using any of the 'get' functions. The reason why it was designed this way is to encourage defaults to be set in a single place/function. For example, ideal usage is to create one function for your data, "set_my_defaults(obs_data_t data)", set all the default values within that function, and then call that function on create/update, that way all defaults are centralized to a single place. - Ensure that data passed to sources/encoders/outputs/etc is always valid, and not a null value. - While I'm remembering, fix a few defaults of the main program config file data.
-
- Jan 26, 2014
-
-
Jim authored
- Move over the last of the original settings dialog code to QT. It was actually a bit easier to write in the QT version. wxWidgets was definitely not ideal for that because the pages would fully create/destroy every time. - [Win32] Fix os_dlopen so that it only appends .dll if not present - [MacOS] Fix name dialog text edit widget issue (it would be better if we could just use the list widget for editing labels, will have to look in to that in the future) - Tweak the settings UI a bit more and make 30 FPS default - Add a macro to convert a QString to a UTF-8 const char * string - Rename build/plugins to build/obs-plugins - Remove the last of the wxWidgets code
-
- Jan 25, 2014
-
-
Jim authored
- Fix the size issue with list boxes on mac. Was displaying the list boxes with an improper size. Turns out it was just the wrong size policies on the frame below. - Ensure the main windows are fully displayed *before* initializing subsystems. This ensures that the graphics system will properly start up on macos, and allows the glitch fix. - Made a workaround for weird QT glitch that would happen to the parent of a pure native widget that also has internal painting fully disabled. (Should definitely write an example and report this bug on the QT forums)
-
- Jan 24, 2014
-
-
Jim authored
- Had the wrong names set for the up/down widgets for sources/scenes - Updated the settings dialog and gave most of the widgets actual object names - Added code for the settings window. Settings window should now at least display.
-