1. 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
  2. 03 3月, 2014 5 次提交
    • J
      CoreAudio: Don't reconnect if no output devices · 2fd57ed7
      jp9000 提交于
      Somehow this code didn't get included with the last commit.
      2fd57ed7
    • J
      CoreAudio: Fail if no output device found · 91644fbf
      jp9000 提交于
      Also, don't have it repeat trying to reconnect if no devices are found
      91644fbf
    • 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
    • J
      Check for duplicate names (function parser) · f91b4ef9
      jp9000 提交于
      f91b4ef9
  3. 02 3月, 2014 2 次提交
    • J
      Fix non-VS compile issues · 9db52da6
      jp9000 提交于
      As usual, microsoft treats all enums as integers, rather than actually
      even checking the enum type.  Worthless compiler.  Just complete
      garbage.
      9db52da6
    • 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
  4. 01 3月, 2014 6 次提交
    • J
      Simplify and extend callback/signalling system · e9342143
      jp9000 提交于
      - Signals and dynamic callbacks now require declarations to be made
        before being used.  What this does is allows us to get information
        about the functions dynamically which can be relayed to the user and
        plugins for future extended usage (this should have big implications
        later for scripting in particular, hopefully).
      
      - Reduced the number of types calldata uses from "everything I could
        think of" to simply integer, float, bool, pointer/object, string.
        Integer data is now stored as long long.  Floats are now stored as
        doubles (check em).
      
      - Use a more consistent naming scheme for lexer error/warning macros.
      
      - Fixed a rather nasty bug where switching to an existing scene would
        cause it to increment sourceSceneRefs, which would mean that it would
        never end up never properly removing the source when the user clicks
        removed (stayed in limbo, obs_source_remove never got called)
      e9342143
    • J
      Give cf_parser functions better naming · e560a426
      jp9000 提交于
      e560a426
    • J
      CoreAudio: Detect default device change · f716de13
      jp9000 提交于
      If the default device changes, set the reconnect interval to 200
      milliseconds so it pretty much immediately tries to reinitialize the
      audio with the newly selected default device.  Otherwise, use 2000
      millisecond intervals, and assume disconnection.
      
      Also, reduced FFmpeg logging to just regular FFmpeg information rather
      than everything FFmpeg logs.
      f716de13
    • J
      Fix a warning and an error · 429195aa
      jp9000 提交于
      Happened because I compiled on windows and it only compiled
      windows-specific code.
      429195aa
    • J
      Be just a bit more consistent. · 94a2d207
      jp9000 提交于
      See, it can sometimes be a bit confusing.  These functions should
      definitely not fail under normal circumstances, and these errors may
      affect the user and/or application in some way.
      94a2d207
    • J
      Be more consistent about log levels · 771eac60
      jp9000 提交于
      LOG_ERROR should be used in places where though recoverable (or at least
      something that can be handled safely), was unexpected, and may affect
      the user/application.
      
      LOG_WARNING should be used in places where it's not entirely unexpected,
      is recoverable, and doesn't really affect the user/application.
      771eac60
  5. 28 2月, 2014 9 次提交
  6. 27 2月, 2014 10 次提交
  7. 24 2月, 2014 7 次提交
    • J
      Fix stereo output bug with ffmpeg test output · a1a1f1a6
      jp9000 提交于
      a1a1f1a6
    • J
      Make ffmpeg test output sync A/V properly · 6c2d067e
      jp9000 提交于
      FFmpeg test output wasn't make any attempt to sync data before.  Should
      be much more accurate now.
      
      Also, added a restart message to audio settings if base audio settings
      are changed.
      6c2d067e
    • J
      Add more checks for NULL pointers · 268e4e78
      jp9000 提交于
      268e4e78
    • J
      Rename scene signals · 096cce9a
      jp9000 提交于
      the signals for scenes could have potentially conflicted with default
      source signals.  "remove" should be used for source removal, for
      example.  Changed the scene signals to "item-add" and "item-remove" for
      its items.
      096cce9a
    • J
      Require restart for audio changes (for now) · 75b66872
      jp9000 提交于
      Resetting audio while libobs is active is a real pain.  I think I'm just
      going to do audio resetting later, or maybe just require restart
      regardless just because having to shut down audio streams/lines while
      there's sources currently active requires recreating all the audio
      lines for each audio source.  Very painful.
      
      Video fortunately is no big deal, so at least there's that.
      75b66872
    • J
      Separate source activation for main/aux views · 60e6316a
      jp9000 提交于
      Split off activate to activate and show callbacks, and split off
      deactivate to deactivate and hide callbacks.  Sources didn't previously
      have a means to know whether it was actually being displayed in the main
      view or just happened to be visible somewhere.  Now, for things like
      transition sources, they have a means of knowing when they have actually
      been "activated" so they can initiate their sequence.
      
      A source is now only considered "active" when it's being displayed by
      the main view.  When a source is shown in the main view, the activate
      callback/signal is triggered.  When it's no longer being displayed by
      the main view, deactivate callback/signal is triggered.
      
      When a source is just generally visible to see by any view, the show
      callback/signal is triggered.  If it's no longer visible by any views,
      then the hide callback/signal is triggered.
      
      Presentation volume will now only be active when a source is active in
      the main view rather than also in auxilary views.
      
      Also fix a potential bug where parents wouldn't properly increment or
      decrement all the activation references of a child source when a child
      was added or removed.
      60e6316a
    • J
      Implement a few more audio options/functions · c232ebde
      jp9000 提交于
      Implement a few audio options in to the user interface as well as a few
      inline audio functions in audio-io.h.
      
      Make it so ffmpeg plugin automatically converts to the desired format.
      
      Use regular interleaved float internally for audio instead of planar
      float.
      c232ebde