Commit Graph

2497 Commits (94a1dbfc5ffcef17237cfa088bb2d2a82fb0c68e)

Author SHA1 Message Date
John Bradley 54fdd6555e mac-syphon: Fix NSURL selector compatibility 10.8
Use NSURL path.fileSystemRepresentation to be
compatibile with the 10.8 SDK. This appears to be
a convenience selector and should operate the same.
2015-03-25 19:01:47 -05:00
jp9000 96353332f3 win-capture: Fix game capture acquiring issue
If capture starts too quickly, the file mapping will return 2, which
means file not found, and it would then reset the capture and try again.
Sometimes this would result in long intervals where it wouldn't capture.
This fixes the issue by simply making game capture retry if file mapping
returns error number 2.
2015-03-25 14:14:43 -07:00
jp9000 709ad0705e UI: Don't use deferred update on cancel
If properties are set to defer updating, don't call obs_source_update on
dialog rejection.
2015-03-25 14:14:43 -07:00
jp9000 9e39a2c787 UI: Use setGeometry to restore saved dimensions
There was an issue where the position/size would keep changing every
time the program opened/closed, was due to the fact that we were not
calling setGeometry to restore the position/size.
2015-03-25 14:14:42 -07:00
jp9000 75ee8ff528 libobs: Update version number to 0.9.0 2015-03-25 14:14:41 -07:00
jp9000 621158f8e1 libobs: Fix warning
Removed this variable some time back, but didn't test on GCC (which
throws this warning), so I never knew about it until recently.
2015-03-25 14:14:40 -07:00
jp9000 2fdd58d312 UI: Add #pragma once to double slider widget 2015-03-25 14:14:40 -07:00
jp9000 2f6ba39b41 obs-filters: Add color key filter
Masks out a specific color range in RGB color space.  Commonly used with
solid image data or animated video rather than live video.
2015-03-25 14:14:39 -07:00
jp9000 adb392e08a obs-filters: Add chroma key filter
This allows applying a mask based upon the chroma value (U/V) of a
specific color in YUV color space.  Commonly used to mask out
greenscreens and bluescreens in live video.
2015-03-25 14:14:38 -07:00
jp9000 bee5b3a2d2 obs-filters: Add color correction filter
Adds a color correction filter if one wishes to just apply
gamma/constrast/brightness/opacity/color to a source.
2015-03-25 14:12:05 -07:00
jp9000 bd1ede883d obs-filters: Add crop filter
Allows any source to be cropped, though note that this renders to
texture first, so for more optimal results, cropping values should
probably be put in to capture sources that can be cropped as they're
actually rendered by the source.
2015-03-25 14:12:05 -07:00
jp9000 9138766620 obs-filters: Add mask/blend filter
This filter allows the ability to use a texture to modify the video
output of a source, the ability to:
- apply a color-based mask (dark = transparent, light = opaque)
- apply a mask based upon the alpha of an image
- blend an image via subtraction, addition, or multiplication
2015-03-25 14:12:04 -07:00
jp9000 55534d5d8d obs-filters: Add async delay filter
Adds a filter for delaying asynchronous video/audio data, for example
from webcams, video devices, or media playback sources.  Mainly intended
to allow users to sync up their webcams to other devices.
2015-03-25 14:12:03 -07:00
jp9000 3c5cc5cd54 UI: Add visibility checkbox to main sources list
Adds a visibility checkbox to the main sources list so that users can
temporarily disable/re-enable sources.  Only applies to scene items, not
the sources themselves.
2015-03-25 14:12:02 -07:00
jp9000 86ed7f12f3 UI: Allow scenes to use filters 2015-03-25 14:12:01 -07:00
jp9000 118665ec99 UI: Add missing locale text
"Close" and "Interact"
2015-03-25 14:12:00 -07:00
jp9000 ceba24c7e9 UI: Add user interface for filters 2015-03-25 14:12:00 -07:00
jp9000 ff363bc77b UI: Add QListWidget subclass to emit focus change
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.
2015-03-25 14:11:59 -07:00
jp9000 642aa7454f UI: Add list item widget w/ visibility checkbox
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
2015-03-25 14:11:58 -07:00
jp9000 2e053c849b UI: Add mute checkbox to volume control 2015-03-25 10:03:24 -07:00
jp9000 399eb6d330 UI: Add 'mute' checkbox style hint 2015-03-25 10:03:24 -07:00
jp9000 53a98ecbe5 UI: Add 'visibility' checkbox
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.
2015-03-25 10:03:23 -07:00
jp9000 606d72b1fe UI: Don't include properties-view.hpp in header
Replace header include with forward to reduce needless header includes
and thus reduce compile time.
2015-03-25 10:03:22 -07:00
jp9000 bf6e83821c UI: Emit DisplayResized() viewport signal
This allows knowing when the graphics viewport itself changes in size
(in case the window with the graphics viewport does not change size)
2015-03-25 10:03:21 -07:00
jp9000 74d886c2f8 libobs: Reorder filters based upon their type
If a filter is an async filter move above/below other async filters,
and similarly for effect filters move above/below other effect filters.
2015-03-25 10:03:20 -07:00
jp9000 b33d95999f libobs: Mark audio filters as async
Async filters and effect filters are really two different classes of
filters, so it's important that audio filters be marked as async.
2015-03-25 10:03:20 -07:00
jp9000 2b4fdb19ad libobs: Filter async video before rendering
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.
2015-03-25 10:03:19 -07:00
jp9000 a73816665c libobs: Simplify comment
These are basically just capabilities of a source, that and too much
text on one line.
2015-03-25 10:03:18 -07:00
jp9000 c16f1a7430 libobs: Add obs_get_source_output_flags function
Gets the output flags by its source type.
2015-03-25 10:03:17 -07:00
jp9000 1a70ae0105 libobs: Add missing function definition
obs_get_source_defaults was missing the definition for the function.
2015-03-25 10:03:17 -07:00
jp9000 0d8ae565f2 libobs: Add API to hide/show scene items 2015-03-25 10:03:16 -07:00
jp9000 f109be3010 libobs: Fix potential bug destroying filters
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.
2015-03-25 10:03:15 -07:00
jp9000 18afe82304 libobs: Skip filter if internal data not present
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.
2015-03-25 10:03:14 -07:00
jp9000 e31fea66be libobs: Add API to mute/unmute sources 2015-03-25 10:03:13 -07:00
jp9000 f04ef236ac libobs: Add ability to disable sources/filters 2015-03-25 10:03:13 -07:00
jp9000 98a6c8f0d0 libobs: Always enumerate filter list in reverse
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.
2015-03-25 10:03:12 -07:00
jp9000 64943f3fc6 libobs: Lock mutex when changing filter order
Refactors the function a bit to ensure that the filter mutex is locked
when changing the filter order.
2015-03-25 10:03:11 -07:00
jp9000 dedc454caf libobs: Add "reorder_filters" source signal
Signals when the filter order has been changed for a source.
2015-03-25 10:03:10 -07:00
jp9000 4aa8f2d14b libobs: Fix bug when changing filter order
The 'idx' variable is the incorrect variable to be using here, the
variable that was supposed to be used was 'i'.
2015-03-25 10:03:09 -07:00
jp9000 86a0f370c3 libobs: Insert new filters at index 0
Technically, the "last" filter rendered is the filter at index 0, so
inserting a new filter at that point makes the most sense.
2015-03-25 10:03:08 -07:00
jp9000 c0cc81d20f libobs: Turn blending off for filter renders
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.
2015-03-25 10:03:07 -07:00
jp9000 44e484ad34 (API Change) Fix filter rendering design flaw
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.
2015-03-25 10:03:06 -07:00
jp9000 44f103de9c libobs: Fix rendering at end of the filter chain
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.
2015-03-25 10:03:05 -07:00
jp9000 7878fda442 libobs: Add filter_remove callback for sources
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.
2015-03-25 10:03:04 -07:00
jp9000 cd7d045ff3 libobs: Make filter mutex recursive 2015-03-25 10:03:03 -07:00
jp9000 c2775eaa3d libobs: Add obs_source_skip_video_filter function
This allows a filter to skip its step and move on to the next target in
the chain without affecting performance.
2015-03-25 10:03:02 -07:00
jp9000 f4af2fcadc libobs: Always clear render target filter
This fixes a bug where the previous contents of a filter's render target
texture might become visible if using alpha.
2015-03-25 10:03:01 -07:00
jp9000 dfde8d4a63 libobs: Use 'can_bypass' func for filter bypassing
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.
2015-03-25 10:03:00 -07:00
jp9000 b9eef3c4f2 libobs: Add API to get base source dimensions
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.
2015-03-25 10:02:59 -07:00
jp9000 506e30da10 libobs: Do not clear frame cache if 0,0 dimension
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.
2015-03-25 10:02:58 -07:00