1. 27 1月, 2016 7 次提交
    • 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
  2. 26 1月, 2016 1 次提交
  3. 23 1月, 2016 1 次提交
  4. 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
  5. 12 12月, 2015 1 次提交
  6. 21 10月, 2015 2 次提交
  7. 19 10月, 2015 1 次提交
    • J
      (API Change) libobs: Use single func for base effects · 6ad8df8a
      jp9000 提交于
      API removed:
      --------------------
      gs_effect_t *obs_get_default_effect(void);
      gs_effect_t *obs_get_default_rect_effect(void);
      gs_effect_t *obs_get_opaque_effect(void);
      gs_effect_t *obs_get_solid_effect(void);
      gs_effect_t *obs_get_bicubic_effect(void);
      gs_effect_t *obs_get_lanczos_effect(void);
      gs_effect_t *obs_get_bilinear_lowres_effect(void);
      
      API added:
      --------------------
      gs_effect_t *obs_get_base_effect(enum obs_base_effect effect);
      
      Summary:
      --------------------
      Combines multiple near-identical functions into a single function with
      an enum parameter.
      6ad8df8a
  8. 17 9月, 2015 1 次提交
  9. 11 9月, 2015 1 次提交
    • J
      libobs: Add encoded output delay support · 05388655
      jp9000 提交于
      This feature allows a user to delay an output (as long as the output
      itself supports it).  Needless to say this intended for live streams,
      where users may want to delay their streams to prevent stream sniping,
      cheating, and other such things.
      
      The design this time was a bit more elaborate, but still simple in
      design:  the user can now schedule stops/starts without having to wait
      for the stream itself to stop before being able to take any action.
      Optionally, they can also forcibly stop stream (and delay) in case
      something happens which they might not want to be streamed.
      
      Additionally, a new option was added to preserve stream cutoff point on
      disconnections/reconnections, so that if you get disconnected while
      streaming, when it reconnects, it will reconnect right at the point
      where it left off.  This will probably be quite useful for a number of
      applications in addition to regular delay, such as setting the delay to
      1 second and then using this feature to minimize, for example, a
      critical stream such as a tournament stream from getting any of its
      stream data cut off.  However, using this feature will of course cause
      the stream data to buffer and increase delay (and memory usage) while
      it's in the process of reconnecting.
      05388655
  10. 29 8月, 2015 1 次提交
  11. 20 8月, 2015 2 次提交
    • J
      libobs: Add API func to get module config path · 0d30d122
      jp9000 提交于
      Allows the ability to get a module-specific configuration file/path
      0d30d122
    • J
      (API Change) libobs: Add global module config path · 2bd8ab7c
      jp9000 提交于
      API Changed:
      ---------------------------
      From:
      - bool obs_startup(const char *locale, profiler_name_store_t *store);
      
      To:
      - bool obs_startup(const char *locale, const char *module_config_path,
      		profiler_name_store_t *store);
      
      Summary:
      ---------------------------
      This allows plugin modules to store plugin-specific configuration data
      (rather than only allowing objects to store configuration data).  This
      will be useful for things like caching data, for example looking up and
      storing ingests from remote (rather than storing locally), or caching
      font data (so it doesn't have to build a font cache each time), among
      other things.
      
      Also adds a module-specific directory for the UI
      2bd8ab7c
  12. 12 8月, 2015 1 次提交
    • P
      (API Change) libobs: Add profile_name_store_t parameter to obs_startup · 44b5afbd
      Palana 提交于
      Due to all the threads in libobs it wouldn't be safe to make that
      parameter reconfigurable after libobs is initialized without adding
      even more synchronization. On the other hand, adding a function to set
      the name store before calling obs_startup would solve the problem of
      passing a name store into libobs, but it can lead to more complicated
      semantics for obs_get_profiler_name_store (e.g., should it always return
      the current name store even if libobs isn't initialized until someone
      calls set_name_store(NULL)? should obs_shutdown call
      set_name_store(NULL)? Passing it as obs_startup parameter avoids
      these (and hopefully other) potential misunderstandings
      44b5afbd
  13. 05 8月, 2015 3 次提交
    • J
      libobs: Remove windowless context #error · 6dfb5957
      jp9000 提交于
      6dfb5957
    • J
      (API Change) libobs: Remove main window funcs/vars · b89ea47b
      jp9000 提交于
      (Non-compiling commit: windowless-context branch)
      
      API Changed:
      ---------------------
      Removed functions:
      - obs_add_draw_callback
      - obs_remove_draw_callback
      - obs_resize
      - obs_preview_set_enabled
      - obs_preview_enabled
      
      Removed member variables from struct obs_video_info:
      - window_width
      - window_height
      - window
      
      Summary:
      ---------------------
      Changes the core libobs API to not be dependent upon a main window/view.
      If you wish to draw to a window/view, use an obs_display object to
      handle it.
      
      This allows the use of libobs without requiring a window to be present
      on the system.  This is also prunes code that had to be needlessly
      duplicated to handle the "main" window.
      b89ea47b
    • J
      libobs: Add windowless context #error · 358eb562
      jp9000 提交于
      Intentionally breaks compilation when trying to compile the specific
      merged commits within the windowless-context branch.  This is meant to
      be used in conjunction with a merge commit so that bisecting will never
      see any non-compiling commits.
      358eb562
  14. 10 7月, 2015 1 次提交
    • J
      libobs: Add API to get encoder sample rate · 9f96e691
      jp9000 提交于
      In case the encoder has to use a different sample rate (due to the
      sample rate being unsupported), we need an API function for the encoder
      to get the sample rate that the encoder is actually running at.
      9f96e691
  15. 28 6月, 2015 2 次提交
  16. 12 5月, 2015 3 次提交
  17. 07 5月, 2015 4 次提交
  18. 18 4月, 2015 1 次提交
    • J
      libobs: Add preferred video format encoder funcs · 1ee277ed
      jp9000 提交于
      Allows the ability to hint at encoders what format should be used.
      
      This is particularly useful if libobs is currently operating in planar
      4:4:4, but you want to force an encoder used for streaming to convert to
      NV12 to prevent streaming issues.
      1ee277ed
  19. 10 4月, 2015 3 次提交