1. 20 4月, 2014 1 次提交
    • J
      obs-properties: Add a few features · 7a606941
      jp9000 提交于
      Just wanted the ability to be able to add private data to the properties
      data.  Makes it a little easier to manage data if you get updates from
      controls.
      7a606941
  2. 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
  3. 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
  4. 02 4月, 2014 1 次提交
    • J
      obs-output module: Fill out more functions · 4a652ec8
      jp9000 提交于
       - Add start/stop code to obs-output module
      
       - Use a circular buffer for the buffered encoder packets instead of a
         dynamic array
      
       - Add pthreads.lib as a dependency to obs-output module on windows in
         visual studio project files
      
       - Fix an windows export bug for avc parsing functions on windows.
         Also, rename those functions to be more consistent with each other.
      
       - Make outputs use a single function for encoded data rather than
         multiple functions
      
       - Add the ability to make 'text' properties be passworded
      4a652ec8
  5. 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
  6. 04 3月, 2014 1 次提交
    • J
      Add WASAPI audio capture · 34858825
      jp9000 提交于
       - Add WASAPI audio capture for windows, input and output
      
       - Check for null pointer in os_dlopen
      
       - Add exception-safe 'WinHandle' and 'CoTaskMemPtr' helper classes that
         will automatically call CloseHandle on handles and call CoTaskMemFree
         on certain types of memory returned from windows functions
      
       - Changed the wide <-> MBS/UTF8 conversion functions so that you use
         buffers (like these functions are *supposed* to behave), and changed
         the ones that allocate to a different naming scheme to be safe
      34858825
  7. 03 3月, 2014 2 次提交
    • J
      Split output/input audio capture sources · 9c6da6f5
      jp9000 提交于
       - Split input and output audio captures so that they're different
         sources.  This allows easier handling and enumeration of audio
         devices without having to do some sort of string processing.
      
         This way the user interface code can handle this a bit more easily,
         and so that it doesn't confuse users either.  This should be done for
         all audio capture sources for all operating systems.  You don't have
         to duplicate any code, you just need to create input/output wrapper
         functions to designate the audio as input or output before creation.
      
       - Make it detect soundflower and wavtap devices as mac "output" devices
         (even though they're actually input) for the mac output capture, and
         make it so that users can select a default output capture and
         automatically use soundflower or wavtap.
      
         I'm not entirely happy about having to do this, but because mac is
         designed this way, this is really the only way to handle it that
         makes it easier for users and UI code to deal with.
      
         Note that soundflower and wavtap are still also designated as input
         devices, so will still show up in input device enumeration.
      
       - Remove pragma messages because they were kind polluting the other
         compiler messages and just getting in the way.  In the future we can
         just do a grep for TODO to find them.
      
       - Redo list property again, this time using a safer internal array,
         rather than requiring sketchy array inputs.  Having functions handle
         everything behind the scenes is much safer.
      
       - Remove the reference counter debug log code, as it was included
         unintentionally in a commit.
      9c6da6f5
    • J
      Remove categories from properties · b4ef6cee
      jp9000 提交于
      Categories added an unnecessary complexity to making properties, and
      would very likely almost never be used in most cases, and were more of a
      display feature.  The main issue is that it made property data more
      complex to work with, and I just didn't feel comfortable with that.
      
      Also, added a function to allow you to retrieve a porperty just by its
      name.
      b4ef6cee
  8. 02 3月, 2014 1 次提交
    • J
      Simplify and improve 'list' property · 1eeece5b
      jp9000 提交于
      When a source/output/etc has a property of a 'list' type, there was no
      way to get the names associated with its values.  That, and it only
      supported lists of either text, or enums (0..[value] only).
      
      Now, you can associate translated names with those values, and use
      integer, float, or string values.  Put it all in to one function as well
      to simplify its usage.
      
      I plan on using this to help get enumerations from devices/etc for
      certain types of sources.  For example, if I get the properties of an
      audio source, I'd like to have a list of available devices with it as
      well.
      1eeece5b
  9. 02 2月, 2014 2 次提交
    • 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