- 16 2月, 2014 1 次提交
-
-
由 fryshorts 提交于
changed includes to not use ffmpeg internal headers
-
- 15 2月, 2014 3 次提交
-
-
由 jp9000 提交于
...I neglected to put a '%' character before using the PRI* macros.
-
由 jp9000 提交于
-
由 jp9000 提交于
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.
-
- 14 2月, 2014 1 次提交
-
-
由 jp9000 提交于
I felt like the name could cause a bit of confusion with typical graphics viewports, so I just changed it to view instead.
-
- 13 2月, 2014 3 次提交
-
-
由 jp9000 提交于
Originally, the rendering system was designed to only display sources and such, but I realized there would be a flaw; if you wanted to render the main viewport in a custom way, or maybe even the entire application as a graphics-based front end, you wouldn't have been able to do that. Displays have now been separated in to viewports and displays. A viewport is used to store and draw sources, a display is used to handle draw callbacks. You can even use displays without using viewports to draw custom render displays containing graphics calls if you wish, but usually they would be used in combination with source viewports at least. This requires a tiny bit more work to create simple source displays, but in the end its worth it for the added flexibility and options it brings.
-
由 jp9000 提交于
- Add bit more documentation to some of the main headers - Fix alignment for the size of the name string of a obs_data_item.
-
由 jp9000 提交于
-
- 12 2月, 2014 2 次提交
-
-
由 jp9000 提交于
-
由 jp9000 提交于
The API used to be designed in such a way to where it would expect exports for each individual source/output/encoder/etc. You would export functions for each and it would automatically load those functions based on a specific naming scheme from the module. The idea behind this was that I wanted to limit the usage of structures in the API so only functions could be used. It was an interesting idea in theory, but this idea turned out to be flawed in a number of ways: 1.) Requiring exports to create sources/outputs/encoders/etc meant that you could not create them by any other means, which meant that things like faruton's .net plugin would become difficult. 2.) Export function declarations could not be checked, therefore if you created a function with the wrong parameters and parameter types, the compiler wouldn't know how to check for that. 3.) Required overly complex load functions in libobs just to handle it. It makes much more sense to just have a load function that you call manually. Complexity is the bane of all good programs. 4.) It required that you have functions of specific names, which looked and felt somewhat unsightly. So, to fix these issues, I replaced it with a more commonly used API scheme, seen commonly in places like kernels and typical C libraries with abstraction. You simply create a structure that contains the callback definitions, and you pass it to a function to register that definition (such as obs_register_source), which you call in the obs_module_load of the module. It will also automatically check the structure size and ensure that it only loads the required values if the structure happened to add new values in an API change. The "main" source file for each module must include obs-module.h, and must use OBS_DECLARE_MODULE() within that source file. Also, started writing some doxygen documentation in to the main library headers. Will add more detailed documentation as I go.
-
- 11 2月, 2014 4 次提交
-
-
由 jp9000 提交于
It wasn't properly being set for the graphics textures as well, so it would end up causing SSE to crash due to alignment
-
由 jp9000 提交于
Note to self - compile before committing.
-
由 jp9000 提交于
The 444->420 conversion function will crash if you don't align the output width to a 16 byte boundry.
-
由 jp9000 提交于
It will now output to a a filename that you specify when you click the record button. This is just for testing.
-
- 10 2月, 2014 2 次提交
- 09 2月, 2014 6 次提交
-
-
由 jp9000 提交于
Requires two sets of parentheses, not one. ...I think
-
由 jp9000 提交于
Accidentally put the code within a _MSC_VER #ifdef, causing the macro to not be found on non-VC compilers
-
由 jp9000 提交于
The signature detection code when reading UTF-8 files was causing the UTF-8 strings read from file to allocate more data than they were supposed to, causing the last 3 bytes to be garbage
-
由 jp9000 提交于
Force inling of the 444->420 conversion functions because their CPU usage goes up pretty heavily without it when compiling without optimizations
-
由 jp9000 提交于
Was mapping the data without unmapping the data, causing the data to become locked
-
由 jp9000 提交于
- Fill in the rest of the FFmpeg test output code for testing so it actually properly outputs data. - Improve the main video subsystem to be a bit more optimal and automatically output I420 or NV12 if needed. - Fix audio subsystem insertation and byte calculation. Now it will seamlessly insert new audio data in to the audio stream based upon its timestamp value. (Be extremely cautious when using floating point calculations for important things like this, and always round your values and check your values) - Use 32 byte alignment in case of future optimizations and export a function to get the current alignment. - Make os_sleepto_ns return true if slept, false if the time has already been passed before the call. - Fix sinewave output so that it actually properly calculates a middle C sinewave. - Change the use of row_bytes to linesize (also makes it a bit more consistent with FFmpeg's naming as well)
-
- 07 2月, 2014 1 次提交
-
-
由 jp9000 提交于
- Add planar audio support. FFmpeg and libav use planar audio for many encoders, so it was somewhat necessary to add support in libobs itself. - Improve/adjust FFmpeg test output plugin. The exports were somewhat messed up (making me rethink how exports should be done). Not yet functional; it handles video properly, but it still does not handle audio properly. - Improve planar video code. The planar video code was not properly accounting for row sizes for each plane. Specifying row sizes for each plane has now been added. This will also make it more compatible with FFmpeg/libav. - Fixed a bug where callbacks wouldn't create properly in audio-io and video-io code. - Implement 'blogva' function to allow for va_list usage with libobs logging.
-
- 06 2月, 2014 2 次提交
-
-
由 jp9000 提交于
-
由 jp9000 提交于
- Implement texture scaling/conversion/downloading for the main view so we can finally start getting data to output. Also, redesign how it works a bit, it will now properly wait one full frame for each step in the process: rendering the main texture, scaling the main texture to an output texture, staging/downloading the ouput texture, and then outputting that staged data. This way, the GPU will have more than enough time to fully complete each step. - Fix a bug with OpenGL plugin's texture staging function. Was using glBindBuffer instead of what should have been used: glBindTexture. - Change the naming scheme of the variables in default.effect. It's now named with the idea of just "color matrix" in mind instead of "yuv matrix", and instead of DrawRGBToYUV, it's now just DrawMatrix.
-
- 03 2月, 2014 10 次提交
-
-
由 Palana 提交于
-
由 Palana 提交于
-
由 Palana 提交于
-
由 Palana 提交于
The returned ref count was never used and the returned value doesn't actually confer any meaning in a multithreaded environment
-
由 jp9000 提交于
Doing this ensures Qt thread safety when adding/removing sources and scenes, because it will defer the function call to the main thread.
-
由 jp9000 提交于
Replace a NULL with nullptr and reduce code duplication with the = operators
-
由 jp9000 提交于
Also, removed some unused headers, and moved the constructor/destructor functions to the top
-
由 BtbN 提交于
-
由 BtbN 提交于
-
由 jp9000 提交于
- Implemented better C++ classes for handling scenes/sources/items in obs.hpp, allowing them to automatically increment and decrement the references of each, as well as assign them to QVariants. - Because QVariants are now using the C++ classes, remove the pointer QVariant wrapper. - Use the new C++ classes with the QVariant user data of list box items, both for the sake of thread safety and to ensure that the data referenced is not freed until removed. NOTE: still might need some testing. - Implemented a source-remove signal from libobs, and start using that signal instead of the source-destroy signal for signalling item removal.
-
- 02 2月, 2014 4 次提交
-
-
由 jp9000 提交于
- Add property list callbacks to sources/outputs/encoders so that if necessary user interface can be automatically generated or perhaps a property list widget can be used for them. - Change some of the property API names. obs_property_list_t felt a bit awkward when actually using it, so I just renamed it to obs_properties_t. - Removed the getdata/setdata nad getparam/setparam functions from sources/services, they will be superseded by the dynamic procedure call API.
-
由 jp9000 提交于
Implement a properties definition interface to allow modules to export general properties associated with objects of libobs. The properties definition interface allows the option for automatic settings UI generation (which will make simple plugins easier to develop without the need for user interface), as well as allow real-time property editing of values of things like sources/outputs/etc without having to open property dialogs. More property types can be added in the future as needed as well.
-
由 jp9000 提交于
Reduce and simplify the UI export interface. Having to export functions with designated names was a bit silly for this case, it makes more sense for inputs/outputs/etc because they have more functions associated with them, but in this case the callback can be retrieved simply through the enumeration exports. Makes it a bit easier and a little less awkward for this situation. Also, changed the exports and names to be a bit more consistent, labelling them both as either "modal" or "modeless", and changed the UI function calls to obs_exec_ui and obs_create_ui to imply modal/modeless functionality a bit more.
-
由 jp9000 提交于
I realized that I had intended modeless UI to be usable by plugins, but it had been pointed out to me that modeless really needs to return a pointer/handle to the user interface object that was created.
-
- 01 2月, 2014 1 次提交
-
-
由 jp9000 提交于
The ui_enum function gets a const struct obs_ui_info **, which basically means it expects static data to be used. I originally had it the other way around, but yea, it's probably not a good idea, so I'm going to revert back to the original code instead, which doesn't rely on the data being static.
-