0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 13:08:50 +02:00
Commit Graph

2946 Commits

Author SHA1 Message Date
Palana
a26afbb9ae libobs: Prevent out of bound reads in obs_register_*
Previously adding new required functions would cause libobs to read out
of bounds in plugins not built with the new additions
2015-08-13 16:12:56 +02:00
Palana
5eb330276c libobs: Reformat required function error message 2015-08-13 15:24:41 +02:00
Palana
13b2469d61 libobs/util: Extend profiler csv export data
The id and parent_id fields should now allow better recovery of the
actual call trees, though they aren't compatible between different data
dumps in a single profiler session anymore; for that reason the new
fields name_id and parent_name_id are introduced, they hold the old id
and parent_id values respectively
2015-08-13 11:57:42 +02:00
Palana
5727dc2a3b coreaudio-encoder: Add explicit initialization
Microsoft's C++ compiler doesn't initialize all members properly without
this
2015-08-12 19:15:21 +02:00
Palana
7ad7142bd3 coreaudio-encoder: Replace darray with std::vector
The single darray solution was potentially unsafe since you're not
allowed to modify the (encode) buffer between calls to
complex_input_data_proc which is potentially violated if the darray
had to be resized due to capacity being < 2 * in_bytes_required
2015-08-12 19:03:41 +02:00
Palana
13681e9b1c coreaudio-encoder: Fix registering non-existing functions 2015-08-12 15:47:38 +02:00
Palana
b07b742fd3 UI: Save profiler data on exit 2015-08-12 15:30:30 +02:00
Palana
91ea844333 libobs/util: Add compressed profiler snapshot saving 2015-08-12 15:30:30 +02:00
Palana
5dd030882d cmake: Add zlib support 2015-08-12 15:30:30 +02:00
Palana
c6140b4756 libobs/media-io: Profile audio/video_thread 2015-08-12 15:30:29 +02:00
Palana
cf6b75e067 libobs: Add profiler calls 2015-08-12 15:30:29 +02:00
Palana
44b5afbd07 (API Change) libobs: Add profile_name_store_t parameter to obs_startup
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
2015-08-12 15:30:29 +02:00
Palana
8d3db084e8 UI: Profile initialization 2015-08-12 15:30:28 +02:00
Palana
7c5d93b92a UI: Add basic profiler integration 2015-08-12 15:30:28 +02:00
Palana
d9cf5c668b libobs/util: Add profiler 2015-08-12 15:30:28 +02:00
Palana
2de89bee8c UI: Refactor OBSInit call 2015-08-12 15:30:28 +02:00
Palana
7187c1b6d4 libobs: Move video_sleep call 2015-08-12 15:30:27 +02:00
jp9000
81649eab0d cmake: Add FFmpeg/x264 include header path suffix
This allows people to use the base directory of cross-compiled
dependencies (typically our dependencies.zip file), rather than always
having to specify the actual include directory.
2015-08-12 04:21:26 -07:00
Palana
a56109b6e6 test: Make OSX test application compatible w/ windowless contexts 2015-08-11 15:43:53 +02:00
Haden F
a14d242369 rtmp-services: Fix YouTube name capitalization
Closes jp9000/obs-studio#462
2015-08-10 18:20:41 -07:00
Palana
40b7a4c918 UI: Make bitrate map sample rate aware 2015-08-10 16:35:05 +02:00
Palana
979f00fd2d UI: Ignore disabled audio encoder bitrates 2015-08-10 16:35:04 +02:00
Palana
fcfe891dcf coreaudio-encoder: Update bitrate property on sample rate modification 2015-08-10 16:35:04 +02:00
Palana
eb5745a363 coreaudio-encoder: Add output sample rate setting/property 2015-08-10 16:35:04 +02:00
Palana
5172328ad9 coreaudio-encoder: Add AudioFormat property enumeration helpers 2015-08-10 16:35:04 +02:00
Palana
966b4d97e0 coreaudio-encoder: Make bitrate enumeration samplerate-aware 2015-08-10 16:35:04 +02:00
Palana
15a32530f0 coreaudio-encoder: Undef 'local' macro 2015-08-10 16:27:53 +02:00
Palana
f786f89e35 coreaudio-encoder: Remove unused (obsolete) functions 2015-08-10 16:27:53 +02:00
Palana
6ad48ddb20 coreaudio-encoder: Update default bitrate matching/logging 2015-08-10 16:27:53 +02:00
Palana
27761f9b7a coreaudio-encoder: Update bitrate property enumeration/logging 2015-08-10 16:27:53 +02:00
Palana
c55643c488 coreaudio-encoder: Refactor get_default_converter helper 2015-08-10 16:27:52 +02:00
Palana
ecbe5988cd coreaudio-encoder: Make initialization logging less verbose 2015-08-10 16:27:52 +02:00
Palana
9b1095feb5 coreaudio-encoder: Add bitrate enumeration helper with better logging 2015-08-10 16:27:52 +02:00
Palana
5d2fa5685c coreaudio-encoder: Add more logging helpers 2015-08-10 15:55:34 +02:00
Palana
d6b0a60327 coreaudio-encoder: Move to C++ 2015-08-10 15:54:31 +02:00
Palana
02a09fdee3 coreaudio-encoder: Fix whitespace/indentation 2015-08-10 15:54:31 +02:00
jp9000
f3b76a72c7 UI: Recalculate main preview scale on video reset
Fixes a minor bug introduced by the windowless graphics context merge.
When setting a new base resolution, it would not recalculate the preview
size, and the preview would display the wrong size until the main window
was resized by the user.  This patch makes it so that it calls the
recalculation function when the base resolution is changed to prevent
that from happening.
2015-08-08 01:00:20 -07:00
jp9000
0685279892 libobs: Update version to 0.11.3 2015-08-07 21:28:47 -07:00
jp9000
96dc5f796e win-capture: Add more d3d9 exceptions for win 10
Adds exceptions for D3D9 version 10.0.10240.16412.
2015-08-07 21:27:35 -07:00
jp9000
bf09943001 (API Change) Merge branch 'windowless-context'
API Changed (obs.h):
-----------------------------------------
- Removed member variables from struct obs_video_info:
  - window_width
  - window_height
  - window

- Removed functions:
  - obs_add_draw_callback
  - obs_remove_draw_callback
  - obs_resize
  - obs_preview_set_enabled
  - obs_preview_enabled

API Changed (graphics/graphics.h)
-----------------------------------------
- Changed third parameter of gs_create from
     const struct gs_init_data *data
  to
     uint32_t adapter

Summary
-----------------------------------------
Changing to a windowless context allows the ability to use libobs
without needing to have it depend on an open window/view, and removes
superfluous functionality that's already provided by the obs_display
functions.

Biggest benefits of windowless context:
- Make it so all window/view related code uses obs_display (which is a
  major refactor/prune)
- Allows core functions to not have to be dependent upon an existing
  window/view
- Allow the ability to make a fully CLI front end that doesn't depend on
  a window
- Allows the ability to a hypothetical CLI from a remote

Because of the API changes, multiple modules are affected by this commit
to prevent creating broken commits: libobs, libobs-opengl, libobs-d3d11,
and the UI.

In the libobs back-end, all preview/window API functions that are not
related to obs_display have been removed, and to draw on a window/view
you must now always create an obs_display (rather than having "main"
display functions and then "secondary" display functions that use
obs_display).

For the technicalities of the graphics back-end, the gs_init function
now only takes in an adapter parameter instead of window/format/etc
information.  To draw on a window/view you must now always create a swap
chain for it (note that obs_display wraps this functionality).

As for the UI, the UI has been refactored so that all dialogs/windows
that have a preview do not have to manually create OBSDisplay objects;
the OBSQTDisplay class now automatically handles all the code related to
displays.  The main window preview now also relies on that same
functionality/code.
2015-08-05 01:39:02 -07:00
jp9000
1722425f22 UI: Move obs startup/shutdown to obs-app.cpp
Now that we aren't dependent upon a window for our context, we can
safely move the obs context creation/destruction to obs-app.cpp, and use
the OBSContext helper class to automatically shut down obs.
2015-08-05 01:07:22 -07:00
jp9000
04e4ca1d53 libobs-opengl: Remove windowless context #error 2015-08-05 01:07:21 -07:00
jp9000
09a18b6f6d libobs-opengl: Use windowless context (X11)
(Non-compiling commit: windowless-context branch)

In the land of X11, life is suffering.

Suffering aside, X11 is capable of a hardware-accelerated windowless
context by using a GLXPbuffer in conjunction with glXMakeContextCurrent.
2015-08-05 01:07:20 -07:00
jp9000
e5e168e930 libobs-opengl: Use windowless context (windows)
(Non-compiling commit: windowless-context branch)

On windows, you can just create a hidden window as the "main" opengl
window to get the equivalent of a windowless context.  You might be able
to do it without a window, but honestly it's more trouble than it's
worth.
2015-08-05 01:07:19 -07:00
jp9000
ce1014c417 libobs-opengl: Use windowless context (cocoa)
(Non-compiling commit: windowless-context branch)

On cocoa, windowless contexts appear to be no problem.  You just don't
set a view or just clear the view.
2015-08-05 01:07:18 -07:00
jp9000
a496f64de4 libobs-opengl: Implement windowless context
(Non-compiling commit: windowless-context branch)
2015-08-05 01:07:17 -07:00
jp9000
eb459e2adc libobs-d3d11: Remove windowless context #error 2015-08-05 01:07:16 -07:00
jp9000
2b62c33c16 libobs-d3d11: Use windowless context
(Non-compiling commit: windowless-context branch)
2015-08-05 01:07:15 -07:00
jp9000
6e75c1877f UI: Remove windowless context #error 2015-08-05 01:07:14 -07:00
jp9000
e93ca4cd10 UI: Prune obs_display code from secondary windows
(Non-compiling commit: windowless-context branch)

Now that all obs_display related code has been moved to OBSQTDisplay,
we can prune a whole bunch of boilerplate code that had to be repeated
for the displays of each window.

Affects:
- Properties
- Filters
- Interact
- Projector
2015-08-05 01:07:13 -07:00