1. 13 2月, 2014 2 次提交
  2. 12 2月, 2014 2 次提交
    • J
      Make some admends to obs-source.h documentation · 05b936e5
      jp9000 提交于
      05b936e5
    • J
      Revamp API and start using doxygen · 8e81d8be
      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.
      8e81d8be
  3. 11 2月, 2014 6 次提交
  4. 10 2月, 2014 4 次提交
  5. 09 2月, 2014 7 次提交
    • J
      Fix __attribute__ usage · 8aa2b01e
      jp9000 提交于
      Requires two sets of parentheses, not one.  ...I think
      8aa2b01e
    • J
      Fix FORCE_INLINE macro · 29fb9cc9
      jp9000 提交于
      Accidentally put the code within a _MSC_VER #ifdef, causing the macro to
      not be found on non-VC compilers
      29fb9cc9
    • J
      Fix UTF-8 signature detection · 20fd2c82
      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
      20fd2c82
    • J
      Use force inlining of YUV conversion functions · 4be4dd73
      jp9000 提交于
      Force inling of the 444->420 conversion functions because their CPU
      usage goes up pretty heavily without it when compiling without
      optimizations
      4be4dd73
    • J
      Fix texture_setimage · e4921074
      jp9000 提交于
      Was mapping the data without unmapping the data, causing the data to
      become locked
      e4921074
    • J
      Implement output, improve video/audio subsystems · 6c92cf58
      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)
      6c92cf58
    • Z
      4461281a
  6. 08 2月, 2014 1 次提交
  7. 07 2月, 2014 2 次提交
    • J
      Add planar audio support, improve test output · 3d6d4322
      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.
      3d6d4322
    • Z
      Changed version checks... I got most of them wrong. · 9a2b6629
      Zachary Lund 提交于
      9a2b6629
  8. 06 2月, 2014 9 次提交
  9. 03 2月, 2014 7 次提交