1. 26 3月, 2015 20 次提交
    • J
      libobs: Fix potential bug destroying filters · f109be30
      jp9000 提交于
      When OBS is shutting down, if for some reason the filter is destroyed
      before the parent source is destroyed, it would try to remove itself
      from the source, but it would decrement the reference and try to destroy
      itself again while already in the process of destroying itself.
      
      So, the solution was simply to make sure that if it's removing itself
      from the source that it doesn't decrement its own reference.
      f109be30
    • J
      libobs: Skip filter if internal data not present · 18afe823
      jp9000 提交于
      If the filter's binary was recently removed, the data will be invalid,
      so make sure that it properly handles that situation by skipping the
      filter.
      18afe823
    • J
      libobs: Add API to mute/unmute sources · e31fea66
      jp9000 提交于
      e31fea66
    • J
      libobs: Add ability to disable sources/filters · f04ef236
      jp9000 提交于
      f04ef236
    • J
      libobs: Always enumerate filter list in reverse · 98a6c8f0
      jp9000 提交于
      The "last" filter that's rendered is technically at filter index 0, so
      enumeration needs to be from the last index in the list to the first
      index in the list.
      98a6c8f0
    • J
      libobs: Lock mutex when changing filter order · 64943f3f
      jp9000 提交于
      Refactors the function a bit to ensure that the filter mutex is locked
      when changing the filter order.
      64943f3f
    • J
      libobs: Add "reorder_filters" source signal · dedc454c
      jp9000 提交于
      Signals when the filter order has been changed for a source.
      dedc454c
    • J
      libobs: Fix bug when changing filter order · 4aa8f2d1
      jp9000 提交于
      The 'idx' variable is the incorrect variable to be using here, the
      variable that was supposed to be used was 'i'.
      4aa8f2d1
    • J
      libobs: Insert new filters at index 0 · 86a0f370
      jp9000 提交于
      Technically, the "last" filter rendered is the filter at index 0, so
      inserting a new filter at that point makes the most sense.
      86a0f370
    • J
      libobs: Turn blending off for filter renders · c0cc81d2
      jp9000 提交于
      When rendering a filter to a texture, the target is empty and unused, so
      there's no reason for blending to be on when rendering the filter to a
      render target.
      c0cc81d2
    • J
      (API Change) Fix filter rendering design flaw · 44e484ad
      jp9000 提交于
      obs_source_process_filter tried to do everything in a single function,
      but the problem is that effect parameters would not properly be
      accounted for due to the way it internally draws, therefore it was
      necessary to split the functions in to two, you first call
      obs_source_process_filter_begin, then you set your effect parameters,
      then you finally call obs_source_process_filter_end.  This ensures that
      when the filter is drawn, that the effect parameters are set.
      44e484ad
    • J
      libobs: Fix rendering at end of the filter chain · 44f103de
      jp9000 提交于
      When the filter chain finally reaches the source and the last filter in
      the chain is set to not render directly (meaning it has to render to
      texture), it would not render the source with any effect due to the fact
      that it expects a filter to be present.
      44f103de
    • J
      libobs: Add filter_remove callback for sources · 7878fda4
      jp9000 提交于
      Adds a source callback function that is used when a filter is removed
      from a source.  This ensures that any data that might be associated with
      that source can be cleaned up if necessary.
      7878fda4
    • J
      libobs: Make filter mutex recursive · cd7d045f
      jp9000 提交于
      cd7d045f
    • J
      libobs: Add obs_source_skip_video_filter function · c2775eaa
      jp9000 提交于
      This allows a filter to skip its step and move on to the next target in
      the chain without affecting performance.
      c2775eaa
    • J
      libobs: Always clear render target filter · f4af2fca
      jp9000 提交于
      This fixes a bug where the previous contents of a filter's render target
      texture might become visible if using alpha.
      f4af2fca
    • J
      libobs: Use 'can_bypass' func for filter bypassing · dfde8d4a
      jp9000 提交于
      There are a few more conditions which need to be checked to ensure
      whether we can actually bypass or not; in this particular case we are
      using the YUV texture shaders, plus the image can also be flipped, so we
      can't really use the bypass optimization in those situations.
      dfde8d4a
    • J
      libobs: Add API to get base source dimensions · b9eef3c4
      jp9000 提交于
      These functions are primarily for use with filters, filters need to be
      able to get the width/height of a target source without it necessarily
      getting the post-filtered dimensions.
      b9eef3c4
    • J
      libobs: Do not clear frame cache if 0,0 dimension · 506e30da
      jp9000 提交于
      Previously I had it set so that it would set the async_width and
      async_height variables to 0,0 if a null frame occurs, but the problem
      with this is that it was inadvertently cause the frame cache to clear
      when it starts receiving textures again because it detects it as a size
      change.
      
      So instead of changing async_width and async_height to 0 when a null
      frame occurs, change it so that if the source is set to an inactive
      state, make obs_source_get_width/_get_height return 0 for their
      dimensions instead.
      506e30da
    • J
      libobs: Use reference counting with source frames · 26206f6a
      jp9000 提交于
      When a frame is processed by a filter, it comes directly from the
      source's video frame cache.  However, if a filter is using or processing
      those frames for whatever reason, there would be no guarantee that the
      frames would persist during processing, and frames could eventually be
      deallocated unexpected, for example when the resolution or format
      changes.
      
      So the solution is to implement simple reference counting for the frames
      so that the frames will exist until they have been released by any
      source or filter that's using them.
      26206f6a
  2. 24 3月, 2015 11 次提交
  3. 23 3月, 2015 9 次提交