295 Commits

Author SHA1 Message Date
PatTheMav
8d0131c519 obs-scripting: Fix macro redefinition warning
In Python 3.9+, `PyCFunction_New` and `PyCFunction_NewEx` are themselves
macros around `PyMethod_New`. To fix the warning, both macros need to
be untouched for those Python versions, instead the actual function
`PyMethod_New` needs to be imported and aliased.

This commit:

- Adds the import of the `PyCMethod_New` symbol
- Adds the function definition for `Import_PyCMethod_New`
- Adds the `PyCMethod_New` function alias
2022-05-14 16:10:11 -07:00
PatTheMav
a0923c9b6e obs-scripting: Fix loading of scripting libraries with runtime lookup
macOS uses runtime lookup for symbols in obs-scripting. While this guard
fixes a compiler warning, it also leads to the `_PyCMethod_New` symbol
being undefined.

In turn any library linking with obs-scripting will then fail to load
because of that undefined symbol. Removing this guard fixes that issue.
2022-05-14 16:10:11 -07:00
PatTheMav
4c1687901e obs-scripting: Fix compiler warnings 2022-05-04 12:09:04 -04:00
Jim
952988d9ec
Merge pull request #6231 from mvji/prores_pix_fmt
Add support for GPU conversion of YUV422P10LE, YUV444P12LE, YUVA444P12LE
2022-05-04 02:01:27 -07:00
tytan652
c98617849a obs-scripting: Fix compiler warnings
* obs-scripting: Fix unused 'varargs' warning

* obs-scripting: Fix PyEval deprecation warnings
Remove PyEval_InitThreads() and PyEval_ThreadsInitialized() call for
Python 3.7 and later as Python calls it automatically now.

This removes deprecation warnings when using Python 3.9 or later.

https://docs.python.org/3/c-api/init.html#c.PyEval_InitThreads
2022-05-04 01:37:10 -07:00
tytan652
865a358a52 media-playback: Fix unused-parameter warning 2022-05-04 01:37:10 -07:00
mvji
93490da4c2 obs-ffmpeg: Use YVYU for FFmpeg pix fmt YVYU422
This commit also modifies deps/media-playback and libobs.
2022-04-19 19:39:22 +02:00
mvji
5f35e73d8b deps/media-playback: Use YUV422 for planar 422 pix fmt
Instead of UYVY422
2022-04-19 19:39:05 +02:00
mvji
ae94c35152 obs-ffmpeg: Add support for YUV422P10LE, YUV444P12LE, YUVA444P12LE
This commit also modifies deps/media-playback
2022-04-19 19:38:28 +02:00
jpark37
05b673381f deps/media-playback: Add P010 to closest_format
Used by HDR media playback with hardware decode.
2022-04-18 05:23:13 -07:00
wangshaohui
d2fb302e5c deps/media-playback: Use avcodec_free_context to free AVCodecContext 2022-04-16 16:23:58 -07:00
jpark37
59dbc3eb81 libobs: Rename Rec. 2020 to Rec. 2100
Rec. 2020 is really an SDR spec, but I think HDR10 made it okay to slap
PQ on it, call it an HDR spec. Rec. 2100 came along after and formally
allowed the use of PQ/HLG, so we should use 2100 instead.
2022-04-10 00:13:52 -07:00
jpark37
6ed2edde71 deps/media-playback: Fix AVColorSpace usages
More completeness and consistency.
2022-04-09 21:20:10 -07:00
jpark37
007ed2c355 deps/media-playback: Add more accurate TRC hints
Allows us to tell the difference between HDR and high-precision SDR.
2022-04-08 17:19:23 -07:00
jpark37
848e128435 libobs,plugins: Replace video matrix function
video_format_get_parameters_for_format provides a more accurate matrix
than video_format_get_parameters.
2022-04-07 19:28:51 -07:00
wangshaohui
db8145e8a2 obs-ffmpeg, win-dshow, deps/media-playback: Use recommended API for AVCodecContext 2022-04-07 01:59:30 -07:00
jpark37
4ae3956010 deps/media-playback: Add I010/P010 support 2022-04-03 00:03:34 -07:00
mvji
c62dc7ffee obs-ffmpeg : use I422 for YUV422P input format
Avoid conversion to UYVY422 for 422P video input files (like dnxhd or xdcam422)
2022-03-26 21:05:45 -07:00
PatTheMav
aae3a6a466 cmake: Fix diverging prefix padding for OBS status outputs
Status output related to OBS configuration is prefixed with the string
"OBS" and added padding for enabled and disabled features. This padding
was not aligned between platforms.

By moving the padding and prefix decoration into its own function,
both elements are controlled in a single place. CMake scripts were
changed to use this new function `obs_status` instead of using CMake's
`message` function directly.
2022-03-26 09:44:23 -04:00
Matt Gajownik
70924da18d CI: Don't ignore deps directory when formatting
Also add a .clang-format ignore file to the libff dependency.
2022-03-25 19:41:03 +11:00
jp9000
5e2c757cd1 libobs/util: Remove deprecation visibility from swig 2022-03-24 22:32:19 -07:00
jp9000
601187d0f6 deps/obs-scripting: Fix code formatting
Somehow this was incorrectly formatted at some point.
2022-03-24 22:30:52 -07:00
Richard Stanway
85addc3dac UI, file-updater, rtmp-services: Enable curl ALPN support
In the years since this code was added, ALPN is now widely supported,
and NPN is being removed entirely in the latest version of nginx. It's
time to start using ALPN!
2022-03-24 17:10:01 -07:00
derrod
178ec005bd obs-scripting: Add Resources to python path on macOS
Also changes indentation of this block back to tabs to be consistent
with the rest of the file

Co-authored-by: PatTheMav <patthemav+github@gmail.com>
2022-03-23 14:56:55 +01:00
PatTheMav
dbdf5c7f7a
obs-scripting: Update CMakeLists.txt for scripting modules 2022-03-16 23:11:08 +01:00
PatTheMav
dba1041034
deps: Update CMakeLists.txt for dependencies 2022-03-16 23:11:07 +01:00
jpark37
d528f6cafa deps/media-playback: New AVPacket pattern
FFmpeg has deprecated stack-allocated AVPacket objects, so make a pool
and use the new pattern instead.
2022-03-08 12:39:04 -08:00
jp9000
6d3b1998ef obs-scripting: Make callback "removed" variable atomic
Makes the callback variable "removed" atomic, and on script unload,
first sets all callbacks to removed before actually unloading the script
out of a safety precaution. (See note at the bottom for further details)

This minimizes the possibility of a race condition where the script
callback could be called while those callbacks were being removed.

Big note for this change, this change should eventually be replaced with
a reference counting ownership method where script callbacks can hold a
reference and share ownership of the script if it's still alive while
the script callback is being called. That way the script callbacks can
safely execute. May require a fair amount of reworking of the script
object.
2022-03-01 03:04:37 -08:00
Jim
03d9bda387 libobs: Deprecate obs object addref functions
Deprecates:
obs_source_addref()
obs_output_addref()
obs_encoder_addref()
obs_service_addref()
obs_scene_addref()

These functions should be considered unsafe and not used. Instead, use:
obs_source_get_ref()
obs_output_get_ref()
obs_encoder_get_ref()
obs_service_get_ref()
obs_scene_get_ref()

These functions return a pointer to the incremented object only if the
object is still valid, otherwise they will return null, indicating that
the object is no longer valid or is unsafe to use.

The reason why this is being done is because certain third party plugins
seem to be using addref, and are somehow managing to call addref on
sources that have already been fully released. For the sake of safety,
almost all usage of these functions within OBS have also been replaced
as well.
2022-01-25 05:20:03 -08:00
pkv
50aec9c2a0 media-playback: Fix rist demuxing
We currently pass a 'buffer_size' option to avformat in bytes.
Unfortunately, avformat/librist.c admits an option with the same name but in milliseconds.
The default values set in the UI (2 MB) go beyond the range admitted in ms (0-30 000)
so avformat issues errors.
This fix disables the option when rist protocol is detected.

Signed-off-by: pkv <pkv@obsproject.com>
2022-01-14 20:50:14 -08:00
Ryan Foster
ce734366bc obs-ffmpeg: Respect AVFormatContext and AVOutputFormat constness
AVFormatContext::oformat was made const on April 27, 2021 [1]. If we
respect the constness of AVOutputFormat and do not cast results from
FFmpeg functions to non-const, we cannot modify the results after the
fact. Our choices are either to cast them to non-const (and presumably
have them implicitly casted back to const on later function calls), or
only try to modify the results in versions of FFmpeg where these are not
expected to be const.

Instead of relying on casts, we can set the encoder values in the
ffmpeg_cfg struct, which are later passed to new_stream.

Also modifies deps/media-playback. Removes compiler warnings.
Some avformat functions return const AV(In/Out)putFormat per [1], so
ifdef as needed.

[1]: 56450a0ee4
     lavf 59.0.100 avformat.h
     avformat: Constify the API wrt AV(In|Out)putFormat

     Also constify AVProbeData.
2021-11-23 12:10:25 -05:00
jpark37
6393c3f4cd ipc-util: Fix potential ready_event hang
There is an expectation that ready_event will signal/wake 1:1, so the
stray teardown signal may get lost. Add new stop_event for safety.
2021-11-21 01:38:36 -08:00
jp9000
6534bf5834 obs-x264: Move options parser to its own lib 2021-10-25 12:24:16 -07:00
Scratch
a78558b46a obs-scripting: add transition duration functions 2021-10-15 16:50:59 -07:00
Eric Lindvall
ef34a5f765 deps/media-playback: Handle discontinuities to fix video stalls
If there is a PTS discontinuity in the playback stream that causes the PTS to
reset, it is likely that new audio frames will come in while there are still
video frames waiting to be dequeued. This will cause the audio frames to be
played while the video frames wait for the PTS to get back up to where they
were before the discontinuity.
2021-09-11 22:28:53 -07:00
jpark37
bc7ecd4527 deps/obs-scripting: Fix pthread mutex leaks 2021-08-23 22:30:55 -07:00
jp9000
1d44ace7d0 deps/media-playback: Fix trailing whitespace 2021-08-15 10:59:03 -07:00
wangshaohui
decd3c2678 deps/media-playback: Fix bug about audio without best_effort_timestamp 2021-08-15 06:11:03 -07:00
jpark37
976d76dfbd deps/media-playback: Less accurate sleep
Avoid busy-wait for media sources by not caring about sleep precision.

Reduces CPU usage in status bar from 1.1% to 0.8% on my machine.
2021-08-15 00:12:14 -07:00
jpark37
c021338ceb libobs,deps/media-playback: Avoid bitfields
Use unused padding of obs_source_frame/obs_source_frame2 instead.
2021-06-11 07:02:37 -07:00
jpark37
ce6f233e2d deps/media-playback: Plumb linear alpha flag 2021-06-04 19:04:08 -07:00
Eric Lindvall
3c76fc4ddb obs-ffmpeg: Enable macOS hardware decoding for media source
Reverts  c7395b05ece4b9e204aa90984c8e29bd3eb739d9
2021-03-30 03:45:06 -07:00
Georges Basile Stavracas Neto
b26073c5b2 deps-glad: Add DMA-BUF EGL extensions
Import the DMA-BUF importing extensions from GLAD.
2021-02-13 19:42:01 -03:00
Georges Basile Stavracas Neto
59744e95c3 deps/glad: Make X11 required as well
To keep consistency with the EGL line
2021-02-01 19:03:14 -03:00
Georges Basile Stavracas Neto
7801b3301a deps-glad: Add EGL
The code is generated by https://glad.dav1d.de/
2021-02-01 19:03:14 -03:00
jpark37
5753c25cba libcaption: Fix static keyword placement 2021-01-29 23:59:23 -08:00
Kurt Kartaltepe
5efb10a5e2 libobs: Fix leaking obs-internal.h
Removes prior attempt to expose libcaption headers which really shouldnt
have public. This instead moves the obs-internal include out of the
public obs-scene.h and into it's implementation.
2021-01-28 23:59:02 -08:00
Kurt Kartaltepe
bde5d11100 libcaption: Fix header missing in install
libobs directly depends on libcaption headers. So ensure they are
installed with obs' headers.

fixes #3925
2021-01-28 12:55:11 -08:00
PatTheMav
ecdc81ba0f obs-scripting: Add Py 3.8+ C-API changes
Closes obsproject/obs-studio#3689
2021-01-27 11:33:34 -08:00
Ryan Foster
81c2dac75e deps: Update cmake_minimum_required to 2.8.12 2021-01-18 01:37:45 -08:00