- 13 2月, 2014 2 次提交
- 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 6 次提交
-
-
由 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 提交于
-
由 jp9000 提交于
The codecs used for AVI seem to have less of an impact than the MP4 codecs at the moment.
-
由 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 4 次提交
-
-
由 jp9000 提交于
Also, fixed an enum name issue. No clue why visual studio actually compiled that without warnings/errors
-
由 jp9000 提交于
Reduces needless code repetition and still allows for proper memory alignment. Cleans up the code a bit.
-
由 jp9000 提交于
This trick uses FBOs to allow for copying textures without the need for special texture copy functions.
-
由 jp9000 提交于
-
- 09 2月, 2014 7 次提交
-
-
由 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)
-
-
- 08 2月, 2014 1 次提交
-
-
由 Zachary Lund 提交于
-
- 07 2月, 2014 2 次提交
-
-
由 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.
-
由 Zachary Lund 提交于
-
- 06 2月, 2014 9 次提交
-
-
由 Zachary Lund 提交于
-
由 Zachary Lund 提交于
-
由 Zachary Lund 提交于
-
由 Zachary Lund 提交于
-
由 Zachary Lund 提交于
I've branched well off of upstream glloadgen since they don't appear to be very active in between GL versions. 1) Changed how the address finder functions are set to be more sane. 2) Added *all* possible extensions. For the lulz. 3) Fixed a retarded bug in IsVersionGEQ. 4) Slapped myself for not seeing IsVersionGEQ bug earlier. Most important change.
-
由 jp9000 提交于
-
由 jp9000 提交于
-
由 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 7 次提交
-
-
由 Palana 提交于
-
由 Palana 提交于
-
由 Palana 提交于
-
由 jp9000 提交于
-
由 Palana 提交于
The returned ref count was never used and the returned value doesn't actually confer any meaning in a multithreaded environment
-
由 Jim 提交于
Move CPack win32 generator from NSIS to WIX
-
由 jp9000 提交于
Doing this ensures Qt thread safety when adding/removing sources and scenes, because it will defer the function call to the main thread.
-