- 02 4月, 2014 2 次提交
-
-
由 jp9000 提交于
Note that this is a somewhat heavily modified custom version of librtmp. I modified all the platform specific code that we were using for the OBS1 to make it platform-independent. I don't really like the code in this library, but it works well enough, so I can't really fault anyone for it. It's just very.. unclean. Even for a C library, quite unclean. Some parts are also a little less safe than I'd prefer as well.
-
由 jp9000 提交于
The serializer code is meant to be used as a means of reading/writing data from any arbitrary type of input/output. The array output serializer makes it so we can stream data to a dynamic array on the fly.
-
- 30 3月, 2014 3 次提交
-
-
由 jp9000 提交于
-
由 jp9000 提交于
Don't clear any data if it's a dummy texture.
-
由 jp9000 提交于
- Add dummy GL texture support to allow libobs texture references to be created for GL without - Add a texture_getobj function to allow the retrieval of the context-specific object, such as the D3D texture pointer, or the OpenGL texture object handle. - Also cleaned up the export stuff. I realized it was all totally superfluous. Kind of a dumb moment, but nice to clean it up regardless.
-
- 28 3月, 2014 1 次提交
-
-
由 jp9000 提交于
- Make it so that encoders can be assigned to outputs. If an encoder is destroyed, it will automatically remove itself from that output. I specifically didn't want to do reference counting because it leaves too much potential for unchecked references and it just felt like it would be more trouble than it's worth. - Add a 'flags' value to the output definition structure. This lets the output specify if it uses video/audio, and whether the output is meant to be used with OBS encoders or not. - Remove boilerplate code for outputs. This makes it easier to program outputs. The boilerplate code involved before was mostly just involving connecting to the audio/video data streams directly in each output plugin. Instead of doing that, simply add plugin callback functions for receiving video/audio (either encoded or non-encoded, whichever it's set to use), and then call obs_output_begin_data_capture and obs_output_end_data_capture to automatically handle setting up connections to raw or encoded video/audio streams for the plugin. - Remove 'active' function from output callbacks, as it's no longer really needed now that the libobs output context automatically knows when the output is active or not. - Make it so that an encoder cannot be destroyed until all data connections to the encoder have been removed. - Change the 'start' and 'stop' functions in the encoder interface to just an 'initialize' callback, which initializes the encoder. - Make it so that the encoder must be initialized first before the data stream can be started. The reason why initialization was separated from starting the encoder stream was because we need to be able to check that the settings used with the encoder *can* be used first. This problem was especially annoying if you had both video/audio encoding. Before, you'd have to check the return value from obs_encoder_start, and if that second encoder fails, then you basically had to stop the first encoder again, making for unnecessary boilerplate code whenever starting up two encoders.
-
- 26 3月, 2014 1 次提交
-
-
由 Palana 提交于
-
- 25 3月, 2014 1 次提交
-
-
由 Palana 提交于
This fixes some problems with multiple swap chains (e.g. flickering between the render views)
-
- 24 3月, 2014 1 次提交
-
-
由 Palana 提交于
Also add support for capturing displays that are not the main display as preparation for moving the code from test-plugins into a proper plugin in the future
-
- 23 3月, 2014 2 次提交
-
-
由 jp9000 提交于
I neglected to make it initialize the actual control values with the current settings
-
由 jp9000 提交于
- 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
-
- 18 3月, 2014 1 次提交
-
-
由 jp9000 提交于
The ones that were being used returned the previous value rather than the new value
-
- 17 3月, 2014 10 次提交
-
-
由 jp9000 提交于
Microsoft's garbage compiler just doesn't even.. read the names of enums. It sees an enum and goes "durr, that's an int" without even properly evaluating it. Just total garbage, as per usual.
-
由 jp9000 提交于
If integers are used, then store as integers. If doubles are used, then store as doubles. This way precision issues are prevented.
-
由 jp9000 提交于
Removed some warnings associated with it, was the wrong variable type.
-
由 jp9000 提交于
You have to use qt5_use_modules otherwise it just won't always work. I don't know how it was working before with cmake, but apparently this does the trick to ensure that all the necessary libraries and includes are added. ..Might require cmake 3.8.9 though. ..I do hope that doesn't end up being a problem.
-
由 jp9000 提交于
Also, rename atomic functions to be consistent with the rest of the platform/threading functions, and move atomic functions to threading* files rather than platform* files
-
由 jp9000 提交于
Automatically query defaults for sources/outputs/encoders and set them before calling create
-
由 jp9000 提交于
* Not entirely sure if this will fix it, johnnypatterson claimed it would, but this checked out on my mac so at the very least I don't think it should hurt anything
-
由 jp9000 提交于
GCC warned of this, but strangely not clang.
-
由 jp9000 提交于
-
由 jp9000 提交于
- Implement OBS encoder interface. It was previously incomplete, but now is reaching some level of completion, though probably should still be considered preliminary. I had originally implemented it so that encoders only have a 'reset' function to reset their parameters, but I felt that having both a 'start' and 'stop' function would be useful. Encoders are now assigned to a specific video/audio media output each rather than implicitely assigned to the main obs video/audio contexts. This allows separate encoder contexts that aren't necessarily assigned to the main video/audio context (which is useful for things such as recording specific sources). Will probably have to do this for regular obs outputs as well. When creating an encoder, you must now explicitely state whether that encoder is an audio or video encoder. Audio and video can optionally be automatically converted depending on what the encoder specifies. When something 'attaches' to an encoder, the first attachment starts the encoder, and the encoder automatically attaches to the media output context associated with it. Subsequent attachments won't have the same effect, they will just start receiving the same encoder data when the next keyframe plays (along with SEI if any). When detaching from the encoder, the last detachment will fully stop the encoder and detach the encoder from the media output context associated with the encoder. SEI must actually be exported separately; because new encoder attachments may not always be at the beginning of the stream, the first keyframe they get must have that SEI data in it. If the encoder has SEI data, it needs only add one small function to simply query that SEI data, and then that data will be handled automatically by libobs for all subsequent encoder attachments. - Implement x264 encoder plugin, move x264 files to separate plugin to separate necessary dependencies. - Change video/audio frame output structures to not use const qualifiers to prevent issues with non-const function usage elsewhere. This was an issue when writing the x264 encoder, as the x264 encoder expects non-const frame data. Change stagesurf_map to return a non-const data type to prevent this as well. - Change full range parameter of video scaler to be an enum rather than boolean
-
- 12 3月, 2014 8 次提交
-
-
由 jp9000 提交于
-
由 jp9000 提交于
device_id would end up being null, which would mess with the functions.
-
由 jp9000 提交于
if (data->output->flags & AVFMT_RAWPICTURE) If this was true, the 'ret' variable would be used without initialization.
-
由 jp9000 提交于
-
由 jp9000 提交于
-
由 Jim 提交于
linux input plugins for desktop and audio capture
-
由 jp9000 提交于
Otherwise deadlock
-
由 jp9000 提交于
Make sure it locks the write mutex before freeing the packets, and put the detach code in the main thread loop rather than off in a separate function for clarity
-
- 11 3月, 2014 10 次提交
-
-
由 fryshorts 提交于
The event functions got renamed in obs.
-
由 fryshorts 提交于
-
由 fryshorts 提交于
We use the default format to avoid any resampling by pulse audio, since obs will probably resample anyways if necessary.
-
由 fryshorts 提交于
-
由 fryshorts 提交于
-
由 fryshorts 提交于
-
由 fryshorts 提交于
pulse audio provides it's own convenience function to iterate the mainloop, no need to use a custom one. pulseaudio provides timing information for the stream, we use that instead of system time.
-
由 fryshorts 提交于
-
由 fryshorts 提交于
-
由 fryshorts 提交于
Instead of copying the data from pulse to a local buffer and then push it to obs, the pointer from pulse is now used and pa_stream_drop() called afterwards.
-