1. 16 2月, 2014 1 次提交
  2. 15 2月, 2014 3 次提交
  3. 14 2月, 2014 1 次提交
    • J
      Rename obs_viewport to obs_view · 4bc282f5
      jp9000 提交于
      I felt like the name could cause a bit of confusion with typical
      graphics viewports, so I just changed it to view instead.
      4bc282f5
  4. 13 2月, 2014 3 次提交
    • J
      Revamp rendering system to allow custom rendering · 515f44be
      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.
      515f44be
    • J
      Add a bit more documentation · 88519f08
      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.
      88519f08
    • J
      Move enum obs_source_type to obs-source.h · 526f8d4b
      jp9000 提交于
      526f8d4b
  5. 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
  6. 11 2月, 2014 4 次提交
  7. 10 2月, 2014 2 次提交
  8. 09 2月, 2014 6 次提交
    • 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
  9. 07 2月, 2014 1 次提交
    • 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
  10. 06 2月, 2014 2 次提交
    • J
      Improve naming scheme of libobs core structures · 89cfbdc0
      jp9000 提交于
      89cfbdc0
    • J
      Implement output scaling/conversion/downloading · ab4ab957
      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.
      ab4ab957
  11. 03 2月, 2014 10 次提交
  12. 02 2月, 2014 4 次提交
    • J
      Add property list callbacks · 458325fc
      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.
      458325fc
    • J
      Implement properties definition interface · 0d17d131
      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.
      0d17d131
    • J
      Simplify/improve UI exporting a bit more · 6f51567c
      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.
      6f51567c
    • J
      Add support for modeless UI creation · b31d52d6
      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.
      b31d52d6
  13. 01 2月, 2014 1 次提交
    • J
      Don't rely on static data · 00a480f7
      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.
      00a480f7