Commit Graph

2931 Commits (2de89bee8c907338f20f1d1a31e6414edead8ee0)

Author SHA1 Message Date
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
jp9000 f0b903435c UI: Change "main preview" to use OBSQTDisplay
(Non-compiling commit: windowless-context branch)

Gets rid of all functions/data related to setting up the main preview to
be associated with obs_reset_video and instead uses OBSQTDisplay for the
main window display (thus associating it with an obs_display object).
2015-08-05 01:07:12 -07:00
jp9000 3422631152 UI: Refactor OBSQTDisplay for windowless context
(Non-compiling commit: windowless-context branch)

This makes it so that OBSQTDisplay now uses/controls an obs_display
object directly (rather than having the owner have to associate an
OBSDisplay with it).  It was separated before because the main window
for the basic UI would was using the "main preview" stuff before the
windowless context and had to be handled differently, so you couldn't
just associate an obs_display object with OBSQTDisplay, meaning that all
"secondary" previews such as properties/filters/etc had to handle the
obs_display alone, which caused a lot of needlessly duplicated code.

Also adds a DisplayCreated signal to allow owners to be able to add
callbacks and such on creation of the actual obs_display context.
2015-08-05 01:07:11 -07:00
jp9000 6dfb59572f libobs: Remove windowless context #error 2015-08-05 01:07:10 -07:00
jp9000 b89ea47b96 (API Change) libobs: Remove main window funcs/vars
(Non-compiling commit: windowless-context branch)

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

Removed member variables from struct obs_video_info:
- window_width
- window_height
- window

Summary:
---------------------
Changes the core libobs API to not be dependent upon a main window/view.
If you wish to draw to a window/view, use an obs_display object to
handle it.

This allows the use of libobs without requiring a window to be present
on the system.  This is also prunes code that had to be needlessly
duplicated to handle the "main" window.
2015-08-05 01:07:09 -07:00
jp9000 cf9f21e422 (API Change) libobs/graphics: Change gs_create param
(Non-compiling commit: windowless-context branch)

Changes API from:
---------------------
EXPORT int gs_create(graphics_t **graphics, const char *module,
		const struct gs_init_data *data);

To:
---------------------
EXPORT int gs_create(graphics_t **graphics, const char *module,
		uint32_t adapter);

Summary:
---------------------
Changes the gs_create function to use an adapter parameter instead of
requiring a gs_init_data with window/color/etc information.
2015-08-05 01:07:08 -07:00
jp9000 5c9325f3ea UI: Add windowless context #error 2015-08-05 01:07:07 -07:00
jp9000 844123164f libobs-d3d11: Add windowless context #error 2015-08-05 01:07:06 -07:00
jp9000 58b49f68a5 libobs-opengl: Add windowless context #error 2015-08-05 01:07:05 -07:00
jp9000 358eb56228 libobs: Add windowless context #error
Intentionally breaks compilation when trying to compile the specific
merged commits within the windowless-context branch.  This is meant to
be used in conjunction with a merge commit so that bisecting will never
see any non-compiling commits.
2015-08-05 01:07:03 -07:00
jp9000 05eef74891 mac-capture: Don't call CFRelease on null vars
CFRelease is not meant to be used with null variables.  Check the
variables before calling CFRelease.
2015-08-03 00:08:03 -07:00
kc5nra ff0c58e963 deps-libff: Adjust start_pts if invalid pts found
If the first guessed pts is less than the start_pts, it could
lead to a negative PTS being returned.

Change the behavior so that the first frame's pts, if zero, is
set to the start_pts.  If more than one frame is less than the
start_pts, the start_pts is determined invalid and set to 0.

Valid start_pts example:
  start_pts = 500

  first frame (pts = 0)
    pts = 500 (< start_pts)
    pts -= 500 (offset by start_pts)

    ret 0

  second frame (pts = 700)
    pts = 700 (no change, > start_pts)
    pts -= 500 (offset by start_pts)

    ret 200

Invalid start_pts example:
  start_pts = 500

  first frame (pts = 0)
    pts = 500 (< start_pts)
    pts -= 500 (offset by start_pts)

    ret 0
  second frame (pts = 300)
    pts = 300 (< start_pts, start_pts set to 0)
    pts -= 0 (start_pts is now 0)

    ret 300
2015-08-02 15:54:35 -05:00
kc5nra 3b2b7f2f37 libobs: Remove flag check when resetting timestamp
Removes obsolete check when resetting a timestamp as some sources
can register for Audio/Video async yet only output audio frames.
2015-08-02 15:54:10 -05:00
jp9000 927a90cfa7 win-capture: Use get_win_ver (not GetVersionEx) 2015-08-01 14:51:24 -07:00
jp9000 2526910eb9 UI: Use get_win_ver (not GetVersionEx) 2015-08-01 14:51:23 -07:00
jp9000 278fd03a66 libobs-d3d11: Use get_win_ver (not GetVersionEx) 2015-08-01 14:51:23 -07:00