1. 07 2月, 2017 1 次提交
    • J
      libobs: Implement audio monitoring · d2934eca
      jp9000 提交于
      Adds functions to turn on audio monitoring to allow the user to hear
      playback of an audio source over the user's speaker.  It can be set to
      turn off monitoring and only output to stream, or it can be set to
      output only to monitoring, or it can be set to both.
      
      On windows, audio monitoring uses WASAPI.  Windows also is capable of
      syncing the audio to the video according to when the video frame itself
      was played.
      
      On mac, it uses AudioQueue.
      
      On linux, it's not currently implemented and won't do anything (to be
      implemented).
      d2934eca
  2. 25 1月, 2017 1 次提交
  3. 24 12月, 2016 1 次提交
  4. 08 12月, 2016 2 次提交
    • J
      libobs: Use reference counting for encoder packets · 7d6e6eee
      jp9000 提交于
      Prevents reallocation of encoded packet data.
      
      Deprecates:
      obs_duplicate_encoder_packet
      obs_free_encoder_packet
      
      Replaces those functions with:
      obs_encoder_packet_ref
      obs_encoder_packet_release
      7d6e6eee
    • J
      libobs: Fix deprecated macro · b29d8a44
      jp9000 提交于
      There's no need to have two separate macros to declare something as
      deprecated.
      b29d8a44
  5. 23 8月, 2016 1 次提交
    • J
      libobs: Add obs_get_active_fps function · 95ce5560
      jp9000 提交于
      Allows getting the current active framerate that the core is rendering
      with.  This takes in to account any rendering lag or stalls that may be
      occurring.
      95ce5560
  6. 06 8月, 2016 1 次提交
  7. 29 6月, 2016 1 次提交
    • J
      libobs: Add ability to use scale filters on scene items · d4983383
      jp9000 提交于
      Allows the ability to use scale filters such as point, bicubic, lanczos
      on specific scene items, disabled by default.  When using one of the
      latter two options, if the item's scale is under half of the source's
      original size, it uses the bilinear low resolution downscale shader
      instead.
      d4983383
  8. 23 4月, 2016 1 次提交
    • J
      libobs: Allow filter processing function to return false · ff99ba78
      jp9000 提交于
      (Note: this commit also modifies the obs-filters and test-input modules)
      
      Changes the obs_source_process_filter_begin return type so that it
      returns true/false to indicate that filter processing should or should
      not continue (for example if the filter is bypassed or if there's some
      other sort of issue that causes the filtering to fail)
      ff99ba78
  9. 14 4月, 2016 1 次提交
  10. 11 4月, 2016 1 次提交
    • J
      libobs: Add ability to create private services · 59207785
      jp9000 提交于
      This is a band-aid solution to be able to create temporary services
      without logging them and keep them out of enumeration functions.
      
      This is a band-aid solution -- 'master obs context lists' should not be
      kept by the core.  Logging of object creation/destruction should also be
      controlled by the front-end instead of the core.
      59207785
  11. 04 4月, 2016 1 次提交
    • J
      libobs: Add obs_obj_invalid function · 822ffb85
      jp9000 提交于
      Determines whether an obs object was created successfully.  If a plugin
      that's used for a saved object is removed (third party plugins), its
      data will become invalid, but the objects can often still be created for
      the sake of preserving user settings, but sometimes these objects can
      cause problems if they're actually used (such as using them for
      transitions).
      822ffb85
  12. 31 3月, 2016 2 次提交
  13. 27 3月, 2016 1 次提交
  14. 22 3月, 2016 2 次提交
    • J
      libobs: Add deinterlacing API functions · 07c644c5
      jp9000 提交于
      Adds deinterlacing API functions.  Both standard and 2x variants are
      supported.  Deinterlacing is set via obs_source_set_deinterlace_mode and
      obs_source_set_deinterlace_field_order.
      
      This was implemented in to the core itself because deinterlacing should
      happen before effect filters are processed, but after async filters are
      processed.  If this were added as a filter, there is the possibility
      that a different filter is processed before deinterlacing, which could
      mess with the result.  It was also a bit easier to implement this way
      due to the fact that that deinterlacing may need to have access to the
      previous async frame.
      
      Effects were split in to separate files to reduce load time (especially
      for yadif shaders which take a significant amount of time to compile).
      07c644c5
    • J
      libobs: Allow filters to specify technique · 310f390e
      John Bradley 提交于
      310f390e
  15. 12 3月, 2016 1 次提交
    • J
      libobs: Change email · 772f70ec
      jp9000 提交于
      Kindly ignore this commit, this is to prove that this is also my email.
      772f70ec
  16. 05 3月, 2016 1 次提交
    • J
      (API Change) libobs: Don't use signal for obs_load_sources · aa2bea37
      jp9000 提交于
      (Note: This commit also changes the UI)
      
      Changed:
      -------------------
      void obs_load_sources(obs_data_array_t *sources_list);
      
      To:
      -------------------
      void obs_load_sources(obs_data_array_t *sources_list,
      		obs_source_load_cb callback, void *private_data);
      
      Signals should really never be required to use to make some function
      work properly.  The "source_load" signal was required for the
      obs_load_sources function, but it's meant more for loading private data
      in the settings, not for general loading of sources.
      
      This changes it so that a callback is explicitly required to load the
      sources.
      aa2bea37
  17. 27 2月, 2016 2 次提交
  18. 27 1月, 2016 12 次提交
    • J
      (API Change) libobs: Add 'type' to obs_scene_duplicate · a61933dd
      jp9000 提交于
      (Note: This commit also modifies the UI)
      
      Allows the ability to duplicate sources fully copied, and/or have the
      scene and its duplicates be private sources
      a61933dd
    • J
      libobs: Add obs_scene_create_private function · 6824910f
      jp9000 提交于
      Creates a scene marked as a private source
      6824910f
    • J
      libobs: Add obs_source_duplicate function · 9661ba81
      jp9000 提交于
      Allows full duplication of sources (with exception of sources that are
      marked with the OBS_SOURCE_DO_NOT_DUPLICATE output capability flag)
      9661ba81
    • J
      libobs: Add obs_is_source_configurable function · 56dc6054
      jp9000 提交于
      Mostly only used for transitions with the intention of automatically
      creating transitions which don't require configuration, returns whether
      the source has any properties or not (whether it's configurable)
      56dc6054
    • J
      libobs: Add *_create_private functions · 3371ff59
      jp9000 提交于
      Allows creation of private/unlisted sources/outputs/services/encoders
      3371ff59
    • J
      libobs: Do not use signals with audio capture/controls · 669da7ba
      jp9000 提交于
      (Note: This commit also modifies UI)
      
      Instead of using signals, use designated callback lists for audio
      capture and audio control helpers.  Signals aren't suitable here due to
      the fact that signals aren't meant for things that happen every frame or
      things that happen every time audio/video is received.  Also prevents
      audio from being allocated every time these functions are called due to
      the calldata structure.
      669da7ba
    • J
      libobs: Implement transition sources · 6839ff76
      jp9000 提交于
      Transition sources are implemented by registering a source type as
      OBS_SOURCE_TYPE_TRANSITION.  They're automatically marked as video
      composite sources, and video_render/audio_render callbacks must be set
      when registering the source.  get_width and get_height callbacks are
      unused for these types of sources, as transitions automatically handle
      width/height behind the scenes with the transition settings.
      
      In the video_render callback, the helper function
      obs_transition_video_render is used to assist in automatically
      processing and rendering the audio.  A render callback is passed to the
      function, which in turn passes to/from textures that are automatically
      rendered in the back-end.
      
      Similarly, in the audio_render callback, the helper function
      obs_transition_audio_render is used to assist in automatically
      processing and rendering the audio.  Two mix callbacks are used to
      handle how the source/destination sources are mixed together.  To ensure
      the best possible quality, audio processing is per-sample.
      
      Transitions can be set to automatically resize, or they can be set to
      have a fixed size.  Sources within transitions can be made to scale to
      the transition size (with or without aspect ratio), or to not scale
      unless they're bigger than the transition.  They can have a specific
      alignment within the transition, or they just default to top-left.
      These features are implemented for the purpose of extending transitions
      to also act as "switch" sources later, where you can switch to/from two
      different sources using the transition animation.
      
      Planned (but not yet implemented and lower priority) features:
      
      - "Switch" transitions which allow the ability to switch back and forth
        between two sources with a transitioning animation without discarding
        the references
      
      - Easing options to allow the option to transition with a bezier or
        custom curve
      
      - Manual transitioning to allow the front-end/user to manually control
        the transition offset
      6839ff76
    • J
      libobs: Add function to enumerate all source types · 84251055
      jp9000 提交于
      84251055
    • J
      (API Change) libobs: Remove source_type param from functions · b0104fce
      jp9000 提交于
      (Note: test and UI are also modified by this commit)
      
      API Changed (removed "enum obs_source_type type" parameter):
      -------------------------
      obs_source_get_display_name
      obs_source_create
      obs_get_source_output_flags
      obs_get_source_defaults
      obs_get_source_properties
      
      Removes the "type" parameter from these functions.  The "type" parameter
      really doesn't serve much of a purpose being a parameter in any of these
      cases, the type is just to indicate what it's used for.
      b0104fce
    • J
      libobs: Implement new audio subsystem · c1dd156d
      jp9000 提交于
      The new audio subsystem fixes two issues:
      
      - First Primary issue it fixes is the ability for parent sources to
        intercept the audio of child sources, and do custom processing on
        them.  The main reason for this was the ability to do custom
        cross-fading in transitions, but it's also useful for things such as
        side-chain effects, applying audio effects to entire scenes, applying
        scene-specific audio filters on sub-sources, and other such
        possibilities.
      
      - The secondary issue that needed fixing was audio buffering.
        Previously, audio buffering was always a fixed buffer size, so it
        would always have exactly a certain number of milliseconds of audio
        buffering (and thus output delay).  Instead, it now dynamically
        increases audio buffering only as necessary, minimizing output delay,
        and removing the need for users to have to worry about an audio
        buffering setting.
      
      The new design makes it so that audio from the leaves of the scene graph
      flow to the root nodes, and can be intercepted by parent sources.  Each
      audio source handles its own buffering, and each audio tick a specific
      number of audio frames are popped from the front of the circular buffer
      on each audio source.  Composite sources (such as scenes) can access the
      audio for child sources and do custom processing or mixing on that
      audio.  Composite sources use the audio_render callback of sources to do
      synchronous or deferred audio processing per audio tick.  Things like
      scenes now mix audio from their sub-sources.
      c1dd156d
    • J
      libobs: Remove "presentation volume" and "base volume" (skip) · a5c9350b
      jp9000 提交于
      (Note: This commit breaks libobs compilation.  Skip if bisecting)
      
      These variables are considered obsolete and will no longer be needed.
      a5c9350b
    • J
      libobs: Store circular audio buffer on source itself (skip) · bc0b85cb
      jp9000 提交于
      (Note: This commit breaks libobs compilation.  Skip if bisecting)
      
      Removes audio lines and stores the circular buffer for the audio on the
      source itself.
      bc0b85cb
  19. 26 1月, 2016 1 次提交
  20. 23 1月, 2016 1 次提交
  21. 22 12月, 2015 4 次提交
    • J
      libobs: Make scene item visibility activate/deactivate · 5be855e8
      jp9000 提交于
      Before if a source was set to invisible it would still be considered
      active.  This changes it so that the source is deactivated when the
      source is invisible to reduce needless resource usage or capturing.
      5be855e8
    • J
      (API Change) libobs: Rename funcs relating to active child sources · c8f4fbe4
      jp9000 提交于
      Renames:
      ----------------------------------------
      obs_source_add_child
      obs_source_remove_child
      obs_source_enum_sources
      obs_source_enum_tree
      obs_source_info::enum_sources
      
      To:
      ----------------------------------------
      obs_source_add_active_child
      obs_source_remove_active_child
      obs_source_enum_active_sources
      obs_source_enum_active_tree
      obs_source_info::enum_active_sources
      
      These functions/callbacks had misleading names: they originally implied
      any child sources, when they actually meant active child sources that
      are being used to render video or audio.  It's important that the
      function names represent their actual purpose.
      c8f4fbe4
    • P
      libobs: Add obs_save_sources_filtered (skip) · ec86bdaa
      Palana 提交于
      (Note: This commit breaks UI compilation.  Skip if bisecting)
      
      Adds a means of saving specific sources that the front-end chooses,
      rather than being forced to use the now-removed "user list".
      ec86bdaa
    • J
      (API Change) libobs: Remove "User sources list" (skip) · 70fec7ae
      jp9000 提交于
      (Note: This commit breaks UI compilation.  Skip if bisecting)
      
      API Removed:
      ------------------------
      obs_add_source
      
      API Changed:
      ------------------------
      obs_source_remove: Now just marks/signals a source for removal
      
      The concept of "user sources" is flawed: it was something that the
      front-end was forced to deal with if it wanted to automate source
      saving/loading, and often it had to code around it.  That's not how
      saving/loading should work, a front-end should be allowed to manage
      lists of sources in the way it explicitly chooses, and it should be able
      to choose which sources it wants to save/load.
      70fec7ae
  22. 12 12月, 2015 1 次提交