1. 26 3月, 2015 35 次提交
    • J
      UI: Add user interface for filters · ceba24c7
      jp9000 提交于
      ceba24c7
    • J
      UI: Add QListWidget subclass to emit focus change · ff363bc7
      jp9000 提交于
      The FocusList subclass of QListWidget emits a GotFocus signal when it
      gets focus -- used for the filters window to know when a specific filter
      list gets focus.
      ff363bc7
    • J
      UI: Add list item widget w/ visibility checkbox · 642aa745
      jp9000 提交于
      This is used to allow the user to temporarily disable sources/filters.
      
      For each item in the list box, it displays a visibility checkbox (with
      eye icon) that the user can click to disable/re-enable sources or
      filters.
      
      I did not end up using the Qt::ItemIsUserCheckable flag with the list
      items for a few reasons:
      
      - We could not style the checkbox indicator without qss screwing up
        other parts of the list widget style on certain operating systems
      
      - We could not get the icon to properly invert on active selection like
        the text does on mac/linux, which made it look strange
      
      - Clicking the checkbox too fast would cause it to signal a double-click
        on the icon, opening the properties for a source in the source list
      642aa745
    • J
      UI: Add mute checkbox to volume control · 2e053c84
      jp9000 提交于
      2e053c84
    • J
      UI: Add 'mute' checkbox style hint · 399eb6d3
      jp9000 提交于
      399eb6d3
    • J
      UI: Add 'visibility' checkbox · 53a98ecb
      jp9000 提交于
      This checkbox gives an 'eye' icon that indicates whether something is
      visible or not.  The color of the icon is influenced by the current
      style's foreground color.
      53a98ecb
    • J
      UI: Don't include properties-view.hpp in header · 606d72b1
      jp9000 提交于
      Replace header include with forward to reduce needless header includes
      and thus reduce compile time.
      606d72b1
    • J
      UI: Emit DisplayResized() viewport signal · bf6e8382
      jp9000 提交于
      This allows knowing when the graphics viewport itself changes in size
      (in case the window with the graphics viewport does not change size)
      bf6e8382
    • J
      libobs: Reorder filters based upon their type · 74d886c2
      jp9000 提交于
      If a filter is an async filter move above/below other async filters,
      and similarly for effect filters move above/below other effect filters.
      74d886c2
    • J
      libobs: Mark audio filters as async · b33d9599
      jp9000 提交于
      Async filters and effect filters are really two different classes of
      filters, so it's important that audio filters be marked as async.
      b33d9599
    • J
      libobs: Filter async video before rendering · 2b4fdb19
      jp9000 提交于
      Filtering the video before it's output to the texture means that it
      happens after all the processing on the timestamps and such of the video
      data.  This way, the video filter does not have to worry about what's
      currently buffered, and it won't affect timing.
      2b4fdb19
    • J
      libobs: Simplify comment · a7381666
      jp9000 提交于
      These are basically just capabilities of a source, that and too much
      text on one line.
      a7381666
    • J
      libobs: Add obs_get_source_output_flags function · c16f1a74
      jp9000 提交于
      Gets the output flags by its source type.
      c16f1a74
    • J
      libobs: Add missing function definition · 1a70ae01
      jp9000 提交于
      obs_get_source_defaults was missing the definition for the function.
      1a70ae01
    • J
      libobs: Add API to hide/show scene items · 0d8ae565
      jp9000 提交于
      0d8ae565
    • 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 5 次提交