1. 09 8月, 2014 4 次提交
    • J
      (API Change) Rename allow_direct_render enum · 4d1272e6
      jp9000 提交于
      For the sake of consistency, changed allow_direct_render to
      obs_allow_direct_render
      4d1272e6
    • J
      (API Change) Rename order_movement · d2b4f826
      jp9000 提交于
      Prefix with obs_ for the sake of consistency
      
      Renamed enums:
      - order_movement (now obs_order_movement)
      
      Affected functions:
      - obs_source_filter_setorder
      - obs_sceneitem_setorder
      d2b4f826
    • J
      (API Change) Rename 'source_frame' + related · 4122a5b9
      jp9000 提交于
      For the sake of naming consistency with the rest of obs.h, prefix this
      structure and associated functions with obs_.
      
      Renamed structures:
      - struct source_frame (now obs_source_frame)
      
      Renamed functions:
      - source_frame_init (now obs_source_frame_init)
      - source_frame_free (now obs_source_frame_free)
      - source_frame_create (now obs_source_frame_create)
      - source_frame_destroy (now obs_source_frame_destroy)
      
      Affected functions:
      - obs_source_output_video
      - obs_source_get_frame
      - obs_source_release_frame
      4122a5b9
    • J
      (API Change) Rename obs_source_get(/release)frame · 7b402245
      jp9000 提交于
      Renamed functions:
      - obs_source_getframe (rename to obs_source_get_frame)
      - obs_source_releaseframe (rename to obs_source_release_frame)
      
      For the sake of consistency and helping to get rid of the "squishy
      function name" issue
      7b402245
  2. 30 7月, 2014 1 次提交
  3. 29 7月, 2014 2 次提交
  4. 15 7月, 2014 2 次提交
  5. 13 7月, 2014 2 次提交
  6. 30 6月, 2014 1 次提交
  7. 29 6月, 2014 1 次提交
    • J
      Use uint8_t* instead of void* for texture data · 7b12133a
      jp9000 提交于
      NOTE: In texture_setimage, I had to move variables to the top of the
      scope because microsoft's C compiler will give the legacy C90 error of:
      'illegal use of this type as an expression'.
      
      To sum it up, microsoft's C compiler is still utter garbage.
      7b12133a
  8. 26 6月, 2014 2 次提交
    • J
      Remove 'effect' param from effect param funcs · dbb9124b
      jp9000 提交于
      Similar to the shader functions, the effect parameter functions take
      the effect as a parameter.  However, the effect parameter is pretty
      pointless, because the effect parameter.. parameter stores the effect
      pointer interally.
      dbb9124b
    • J
      Remove 'locale' parameter from all callbacks · 0b4a259e
      jp9000 提交于
      The locale parameter was a mistake, because it puts extra needless
      burden upon the module developer to have to handle this variable for
      each and every single callback function.  The parameter is being removed
      in favor of a single centralized module callback function that
      specifically updates locale information for a module only when needed.
      0b4a259e
  9. 06 6月, 2014 1 次提交
  10. 03 6月, 2014 1 次提交
    • J
      libobs: Add level/magnitude/peak volume levels · 5cd64ce7
      jp9000 提交于
      This replaces the older code which simply queried the max volume level
      value for any given audio.
      
      I'm still not 100% sure on if this is how I want to approach the
      problem, particularly, whether this should be done in obs_source or in
      audio_line, but it can always be moved later if needed.
      
      This uses the calculations by the awesome Bill Hamilton that OBS1 used
      for its volume levels.  It calculates the current max (level),
      magnitude, and current peak.  This data then can be used to create
      awesome volume meter controls later on.
      
      NOTE: Will probably need optimization, does one float at a time right
      now.
      
      Also, change some of the naming conventions.  I actually need to change
      a lot of the naming conventions in general so that all words are
      separated by underscores.  Kind of a bad practice there on my part.
      5cd64ce7
  11. 02 6月, 2014 1 次提交
  12. 30 5月, 2014 3 次提交
    • J
      libobs: Allow deferred source udpate on create · 1343d6bd
      jp9000 提交于
      This allows sources to optionally defer update on creation in order to
      prevent updates from being called from threads other than the video
      thread.
      1343d6bd
    • J
      libobs: Init source info before calling 'create' · 75d25b4e
      jp9000 提交于
      When a source's private data is being created by a module, it wasn't
      able to call most source functions because most functions rely on the
      obs_source_info part of the context to be set.  This fixes that issue.
      
      It was strange that this wasn't already the case because the other
      context types already did the same thing.
      75d25b4e
    • J
      libobs: Add planar 4:2:0 async texture support · 9595a78e
      jp9000 提交于
      This uses the reverse planar YUV 4:2:0 conversion shader to output a YUV
      texture without having to convert it via CPU.  Again, this will reduce
      video upload bandwidth usage to 37.5% of the original rate.  I suspect
      this will be particularly useful for when an FFmpeg or libav input
      plugin for playing videos is made.
      
      NOTE: There's an issue with certain texture sizes right now I haven't
      been able to identify, if the full size of texture data divided by the
      base texture width is an uneven number, the V chroma plane seems like it
      can potentially shift, though I only had this happen with 160x90
      resolution C920.  Almost all resolutions tend to be even.  Needs further
      testing with more devices that support planar YUV 4:2:0 output.
      9595a78e
  13. 25 5月, 2014 1 次提交
  14. 20 5月, 2014 1 次提交
  15. 05 5月, 2014 2 次提交
    • J
      obs-source.c: Fix a few potential concerns · 2ab48dd5
      jp9000 提交于
      First, if the private data of the source fails to be created, then do
      not destroy the source.  If the source is destroyed, all the user's data
      associated with that source is lost, which could end up being a
      potential problem.  Instead, let it linger as a 'dead' source until the
      user chooses to fix the problem (though this should never really happen,
      the source module functions should be programmed to handle this
      scenario)
      
      Secondly, rename new_frame_ready to ready_async_frame, and fix a
      potential memory leak with it.
      2ab48dd5
    • P
      Fix an issue with async (video) source destruction · 4682cfb6
      Palana 提交于
      obs_source_output_video can cause cached frames to be freed twice if
      called with a partially destroyed source, among other undesirable
      effects; freeing the source private data right after the destroy signal
      has been processed ensures proper behavior
      4682cfb6
  16. 04 5月, 2014 1 次提交
    • J
      Add (temporary terrible) volume controls · 52746c25
      jp9000 提交于
       - Add volume control
      
         These volume controls are basically nothing more than sliders.  They
         look terrible and hopefully will be as temporary as they are
         terrible.
      
       - Allow saving of specific non-user sources via obs_load_source and
         obs_save_source functions.
      
       - Save data of desktop/mic audio sources (sync data, volume data, etc),
         and load the data on startup.
      
       - Make it so that a scene is created by default if first time using the
         application.  On certain operating systems where supported, a default
         capture will be created.  Desktop capture on mac, particularly.  Not
         sure what to do about windows because monitor capture on windows 7 is
         completely terrible and is bad to start users off with.
      52746c25
  17. 29 4月, 2014 2 次提交
  18. 27 4月, 2014 1 次提交
    • J
      Add preliminary saving/loading of scene/sources · 65455c27
      jp9000 提交于
      This saves scenes/sources from json on exit, and properly loads it back
      up when starting up the program again, as well as the currently active
      scene.
      
      I had to add a 'load' and 'save' callback to the source interface
      structure because I realizes that certain sources (such as scenes)
      operate different with their saved data; scenes for example would have
      to keep track of their settings information constantly, and that was
      somewhat unacceptable to make it functional.
      
      The optional 'load' callback will be called only after having loaded
      setttings specifically from file/imported data, and the 'save' function
      will be called only specifically when data actually needs to be saved.
      
      I also had to adjust the obs_scene code so that it's a regular input
      source type now, and I also modified it so that it doesn't have some
      strange custom creation code anymore.  The obs_scene_create function is
      now simply just a wrapper for obs_source_create.  You could even create
      a scene with obs_source_create manually as well.
      65455c27
  19. 25 4月, 2014 3 次提交
  20. 20 4月, 2014 1 次提交
    • J
      libobs: Add services API, reduce repeated code · 4a6d19f2
      jp9000 提交于
      Add API for streaming services.  The services API simplifies the
      creation of custom service features and user interface.
      
      Custom streaming services later on will be able to do things such as:
      
       - Be able to use service-specific APIs via modules, allowing a more
         direct means of communicating with the service and requesting or
         setting service-specific information
      
       - Get URL/stream key via other means of authentication such as OAuth,
         or be able to build custom URLs for services that require that sort
         of thing.
      
       - Query information (such as viewer count, chat, follower
         notifications, and other information)
      
       - Set channel information (such as current game, current channel title,
         activating commercials)
      
      Also, I reduce some repeated code that was used for all libobs objects.
      This includes the name of the object, the private data, settings, as
      well as the signal and procedure handlers.
      
      I also switched to using linked lists for the global object lists,
      rather than using an array of pointers (you could say it was..
      pointless.)  ..Anyway, the linked list info is also stored in the shared
      context data structure.
      4a6d19f2
  21. 13 4月, 2014 1 次提交
    • J
      Fix drawing bug with async video sources · 2451b80e
      jp9000 提交于
      Before, async video sources would flicker because they were only being
      drawn when they were updated.  So when updated, they'd draw that frame,
      then it would stop drawing it until it updated again.  This fixes that
      issue and they should now draw properly.
      
      Also, fix a few other minor bugs and issues relating to async video,
      and make it so that non-async video filters can be properly applied to
      them.
      
      For the purposes of testing, change the 'test-random' source to an async
      video source that updates every quarter of a second with a new random
      face.
      
      Also fix a bug where non-async video sources wouldn't have filter
      effects applied properly.
      2451b80e
  22. 08 4月, 2014 1 次提交
    • J
      Implement RTMP module (still needs drop code) · 92522d18
      jp9000 提交于
       - Implement the RTMP output module.  This time around, we just use a
         simple FLV muxer, then just write to the stream with RTMP_Write.
         Easy and effective.
      
       - Fix the FLV muxer, the muxer now outputs proper FLV packets.
      
       - Output API:
         * When using encoders, automatically interleave encoded packets
           before sending it to the output.
      
         * Pair encoders and have them automatically wait for the other to
           start to ensure sync.
      
         * Change 'obs_output_signal_start_fail' to 'obs_output_signal_stop'
           because it was a bit confusing, and doing this makes a lot more
           sense for outputs that need to stop suddenly (disconnections/etc).
      
       - Encoder API:
         * Remove some unnecessary encoder functions from the actual API and
           make them internal.  Most of the encoder functions are handled
           automatically by outputs anyway, so there's no real need to expose
           them and end up inadvertently confusing plugin writers.
      
         * Have audio encoders wait for the video encoder to get a frame, then
           start at the exact data point that the first video frame starts to
           ensure the most accrate sync of video/audio possible.
      
         * Add a required 'frame_size' callback for audio encoders that
           returns the expected number of frames desired to encode with.  This
           way, the libobs encoder API can handle the circular buffering
           internally automatically for the encoder modules, so encoder
           writers don't have to do it themselves.
      
       - Fix a few bugs in the serializer interface.  It was passing the wrong
         variable for the data in a few cases.
      
       - If a source has video, make obs_source_update defer the actual update
         callback until the tick function is called to prevent threading
         issues.
      92522d18
  23. 04 4月, 2014 1 次提交
    • J
      Improve properties API · 1bca7e0a
      jp9000 提交于
      Improve the properties API so that it can actually respond somewhat to
      user input.  Maybe later this might be further improved or replaced with
      something script-based.
      
      When creating a property, you can now add a callback to that property
      that notifies when the property has been changed in the user interface.
      Return true if you want the properties to be refreshed, or false if not.
      Though now that I think about it I doubt there would ever be a case
      where you would have this callback and *not* refresh the properties.
      
      Regardless, this allows functions to change the values of properties or
      settings, or enable/disable/hide other property controls from view
      dynamically.
      1bca7e0a
  24. 23 3月, 2014 1 次提交
    • J
      Add source properties window (very preliminary) · d9251f9e
      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
      d9251f9e
  25. 17 3月, 2014 2 次提交
    • J
      Use atomic functions where appropriate · 154e0c59
      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
      154e0c59
    • J
      Set defaults automatically · 3ed647b8
      jp9000 提交于
      Automatically query defaults for sources/outputs/encoders and set them
      before calling create
      3ed647b8
  26. 11 3月, 2014 1 次提交
    • J
      Ensure names are valid · 5288467a
      jp9000 提交于
      Ensure that a source has a valid name.  Duplicates aren't a big deal
      internally, but sources without a name are probably something that
      should be avoided.  Made is so that if a source is programmatically
      created without a name, it's assigned an index based name.
      
      In the main basic-mode window, made it check to make sure the name was
      valid as well.
      5288467a