Projects
Multimedia
obs-studio
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 70
View file
obs-studio.changes
Changed
@@ -1,4 +1,35 @@ ------------------------------------------------------------------- +Tue Oct 15 14:33:53 UTC 2019 - jimmy@boombatower.com + +- Update to version 24.0.3: + * obs-browser: Remove "monitor by default" flag + * Revert "libobs/audio-monitoring: Don't init until used" + * libobs-d3d11: Fix code styling + * libobs: Update version to 24.0.3 + * libobs-d3d11: Fix calling convention of loaded func + * obs-browser: Only disable NetworkService on macOS + * libobs-d3d11: Use unordered_map for duplicator collection + * win-capture: Fix extra duplicator refs + * UI: Fix issue where multiview doesn't update + * libobs: Update version to 24.0.2 + * libobs-d3d11: Don't set GPU priority on Intel adapters + * libobs/audio-monitoring: Add error logging + * libobs/audio-monitoring: Don't init until used + * obs-browser: Use older chromium network implementation + * libobs-d3d11: Set maximum GPU priority + * Exclude build dir from clang format + * UI, libobs: Fix compiler warnings + * Revert "UI: Remove FFZ from twitch integration" + * UI: Remove FFZ from twitch integration + * libobs-d3d11: Disable NV12 format support for WARP + * obs-ffmpeg: Remove unbuffered mode from media source + * obs-transitions: Fix stingers sometimes getting cut off + * obs-browser: Update version to 2.7.12 + * obs-ffmpeg: Fix deadlock with nvenc lookahead + * UI: Fix path calculation for disk space check + * obs-ffmpeg: Do not enable hardware decoding by default + +------------------------------------------------------------------- Sun Sep 22 21:04:42 UTC 2019 - jimmy@boombatower.com - Update to version 24.0.1:
View file
obs-studio.spec
Changed
@@ -1,5 +1,5 @@ Name: obs-studio -Version: 24.0.1 +Version: 24.0.3 Release: 0 Summary: A recording/broadcasting program Group: Productivity/Multimedia/Video/Editors and Convertors
View file
_service
Changed
@@ -1,7 +1,7 @@ <services> <service name="tar_scm" mode="disabled"> <param name="versionformat">@PARENT_TAG@</param> - <param name="revision">refs/tags/24.0.1</param> + <param name="revision">refs/tags/24.0.3</param> <param name="url">git://github.com/jp9000/obs-studio.git</param> <param name="scm">git</param> <param name="changesgenerate">enable</param>
View file
_servicedata
Changed
@@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">git://github.com/jp9000/obs-studio.git</param> - <param name="changesrevision">94570478b7d1f8c097a0bf8d8dabfb5613e4ab92</param> + <param name="changesrevision">d88a5a5a60bcdcbdde6d5dc54dc352ae8d431070</param> </service> </servicedata>
View file
obs-studio-24.0.1.tar.xz/UI/obs-app.cpp -> obs-studio-24.0.3.tar.xz/UI/obs-app.cpp
Changed
@@ -1911,6 +1911,18 @@ NULL); } + if (!!LookupPrivilegeValue(NULL, SE_INC_BASE_PRIORITY_NAME, &val)) { + tp.PrivilegeCount = 1; + tp.Privileges[0].Luid = val; + tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; + + if (!AdjustTokenPrivileges(token, false, &tp, sizeof(tp), NULL, + NULL)) { + blog(LOG_INFO, "Could not set privilege to " + "increase GPU priority"); + } + } + CloseHandle(token); } #endif
View file
obs-studio-24.0.1.tar.xz/UI/window-basic-main.cpp -> obs-studio-24.0.3.tar.xz/UI/window-basic-main.cpp
Changed
@@ -392,6 +392,12 @@ SLOT(PreviewDisabledMenu(const QPoint &))); connect(ui->enablePreviewButton, SIGNAL(clicked()), this, SLOT(TogglePreview())); + + connect(ui->scenes->model(), + SIGNAL(rowsMoved(QModelIndex, int, int, QModelIndex, int)), + this, + SLOT(ScenesReordered(const QModelIndex &, int, int, + const QModelIndex &, int))); } static void SaveAudioDevice(const char *name, int channel, obs_data_t *parent, @@ -7548,6 +7554,29 @@ #define MBYTES_LEFT_STOP_REC 50ULL #define MAX_BYTES_LEFT (MBYTES_LEFT_STOP_REC * MBYTE) +const char *OBSBasic::GetCurrentOutputPath() +{ + const char *path = nullptr; + const char *mode = config_get_string(Config(), "Output", "Mode"); + + if (strcmp(mode, "Advanced") == 0) { + const char *advanced_mode = + config_get_string(Config(), "AdvOut", "RecType"); + + if (strcmp(advanced_mode, "FFmpeg") == 0) { + path = config_get_string(Config(), "AdvOut", + "FFFilePath"); + } else { + path = config_get_string(Config(), "AdvOut", + "RecFilePath"); + } + } else { + path = config_get_string(Config(), "SimpleOutput", "FilePath"); + } + + return path; +} + void OBSBasic::DiskSpaceMessage() { blog(LOG_ERROR, "Recording stopped because of low disk space"); @@ -7558,12 +7587,11 @@ bool OBSBasic::LowDiskSpace() { - const char *mode = config_get_string(Config(), "Output", "Mode"); - const char *path = - strcmp(mode, "Advanced") - ? config_get_string(Config(), "SimpleOutput", - "FilePath") - : config_get_string(Config(), "AdvOut", "RecFilePath"); + const char *path; + + path = GetCurrentOutputPath(); + if (!path) + return false; uint64_t num_bytes = os_get_free_disk_space(path); @@ -7582,3 +7610,15 @@ DiskSpaceMessage(); } } + +void OBSBasic::ScenesReordered(const QModelIndex &parent, int start, int end, + const QModelIndex &destination, int row) +{ + UNUSED_PARAMETER(parent); + UNUSED_PARAMETER(start); + UNUSED_PARAMETER(end); + UNUSED_PARAMETER(destination); + UNUSED_PARAMETER(row); + + OBSProjector::UpdateMultiviewProjectors(); +}
View file
obs-studio-24.0.1.tar.xz/UI/window-basic-main.hpp -> obs-studio-24.0.3.tar.xz/UI/window-basic-main.hpp
Changed
@@ -560,6 +560,9 @@ void CheckDiskSpaceRemaining(); + void ScenesReordered(const QModelIndex &parent, int start, int end, + const QModelIndex &destination, int row); + private: /* OBS Callbacks */ static void SceneReordered(void *data, calldata_t *params); @@ -681,6 +684,8 @@ static OBSBasic *Get(); + const char *GetCurrentOutputPath(); + protected: virtual void closeEvent(QCloseEvent *event) override; virtual void changeEvent(QEvent *event) override;
View file
obs-studio-24.0.1.tar.xz/UI/window-basic-preview.cpp -> obs-studio-24.0.3.tar.xz/UI/window-basic-preview.cpp
Changed
@@ -650,13 +650,15 @@ std::lock_guard<std::mutex> lock(selectMutex); if (altDown || ctrlDown || shiftDown) { - for (int i = 0; i < selectedItems.size(); i++) { + for (size_t i = 0; i < selectedItems.size(); + i++) { obs_sceneitem_select(selectedItems[i], true); } } - for (int i = 0; i < hoveredPreviewItems.size(); i++) { + for (size_t i = 0; i < hoveredPreviewItems.size(); + i++) { bool select = true; obs_sceneitem_t *item = hoveredPreviewItems[i]; @@ -1677,7 +1679,7 @@ bool hovered = false; { std::lock_guard<std::mutex> lock(prev->selectMutex); - for (int i = 0; i < prev->hoveredPreviewItems.size(); i++) { + for (size_t i = 0; i < prev->hoveredPreviewItems.size(); i++) { if (prev->hoveredPreviewItems[i] == item) { hovered = true; break;
View file
obs-studio-24.0.1.tar.xz/UI/window-basic-stats.cpp -> obs-studio-24.0.3.tar.xz/UI/window-basic-stats.cpp
Changed
@@ -297,13 +297,7 @@ /* ------------------ */ - const char *mode = config_get_string(main->Config(), "Output", "Mode"); - const char *path = strcmp(mode, "Advanced") - ? config_get_string(main->Config(), - "SimpleOutput", - "FilePath") - : config_get_string(main->Config(), "AdvOut", - "RecFilePath"); + const char *path = main->GetCurrentOutputPath(); #define MBYTE (1024ULL * 1024ULL) #define GBYTE (1024ULL * 1024ULL * 1024ULL)
View file
obs-studio-24.0.1.tar.xz/formatcode.sh -> obs-studio-24.0.3.tar.xz/formatcode.sh
Changed
@@ -27,5 +27,5 @@ CLANG_FORMAT=clang-format fi -find . -type d \( -path ./deps -o -path ./cmake -o -path ./plugins/decklink/win -o -path ./plugins/decklink/mac -o -path ./plugins/decklink/linux \) -prune -type f -o -name '*.h' -or -name '*.hpp' -or -name '*.m' -or -name '*.mm' -or -name '*.c' -or -name '*.cpp' \ -| xargs -I{} -P ${NPROC} ${CLANG_FORMAT} -i -style=file -fallback-style=none {} \ No newline at end of file +find . -type d \( -path ./deps -o -path ./cmake -o -path ./plugins/decklink/win -o -path ./plugins/decklink/mac -o -path ./plugins/decklink/linux -o -path ./build \) -prune -type f -o -name '*.h' -or -name '*.hpp' -or -name '*.m' -or -name '*.mm' -or -name '*.c' -or -name '*.cpp' \ +| xargs -I{} -P ${NPROC} ${CLANG_FORMAT} -i -style=file -fallback-style=none {}
View file
obs-studio-24.0.1.tar.xz/libobs-d3d11/CMakeLists.txt -> obs-studio-24.0.3.tar.xz/libobs-d3d11/CMakeLists.txt
Changed
@@ -4,6 +4,20 @@ add_definitions(-DLIBOBS_EXPORTS) +if(NOT DEFINED GPU_PRIORITY_VAL OR "${GPU_PRIORITY_VAL}" STREQUAL "" OR + "${GPU_PRIORITY_VAL}" STREQUAL "0") + set(USE_GPU_PRIORITY FALSE) + set(GPU_PRIORITY_VAL "0") +else() + set(USE_GPU_PRIORITY TRUE) +endif() + +configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/d3d11-config.h.in" + "${CMAKE_CURRENT_BINARY_DIR}/d3d11-config.h") + +include_directories(${CMAKE_CURRENT_BINARY_DIR}) + set(libobs-d3d11_SOURCES d3d11-indexbuffer.cpp d3d11-samplerstate.cpp @@ -18,6 +32,7 @@ d3d11-zstencilbuffer.cpp) set(libobs-d3d11_HEADERS + ${CMAKE_CURRENT_BINARY_DIR}/d3d11-config.h d3d11-shaderprocessor.hpp d3d11-subsystem.hpp)
View file
obs-studio-24.0.3.tar.xz/libobs-d3d11/d3d11-config.h.in
Added
@@ -0,0 +1,20 @@ +#pragma once + +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef ON +#define ON 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif + +#ifndef OFF +#define OFF 0 +#endif + +#define USE_GPU_PRIORITY @USE_GPU_PRIORITY@ +#define GPU_PRIORITY_VAL @GPU_PRIORITY_VAL@
View file
obs-studio-24.0.1.tar.xz/libobs-d3d11/d3d11-duplicator.cpp -> obs-studio-24.0.3.tar.xz/libobs-d3d11/d3d11-duplicator.cpp
Changed
@@ -16,7 +16,7 @@ ******************************************************************************/ #include "d3d11-subsystem.hpp" -#include <map> +#include <unordered_map> static inline bool get_monitor(gs_device_t *device, int monitor_idx, IDXGIOutput **dxgiOutput) @@ -122,11 +122,11 @@ return true; } -static std::map<int, gs_duplicator *> instances; +static std::unordered_map<int, gs_duplicator *> instances; void reset_duplicators(void) { - for (auto &pair : instances) { + for (std::pair<const int, gs_duplicator *> &pair : instances) { pair.second->updated = false; } } @@ -136,7 +136,7 @@ { gs_duplicator *duplicator = nullptr; - auto it = instances.find(monitor_idx); + const auto it = instances.find(monitor_idx); if (it != instances.end()) { duplicator = it->second; duplicator->refs++;
View file
obs-studio-24.0.1.tar.xz/libobs-d3d11/d3d11-subsystem.cpp -> obs-studio-24.0.3.tar.xz/libobs-d3d11/d3d11-subsystem.cpp
Changed
@@ -21,8 +21,10 @@ #include <util/dstr.h> #include <util/util.hpp> #include <graphics/matrix3.h> +#include <winternl.h> #include <d3d9.h> #include "d3d11-subsystem.hpp" +#include "d3d11-config.h" struct UnsupportedHWError : HRError { inline UnsupportedHWError(const char *str, HRESULT hr) @@ -351,6 +353,63 @@ return false; } +#if USE_GPU_PRIORITY +static bool set_priority(ID3D11Device *device) +{ + typedef enum _D3DKMT_SCHEDULINGPRIORITYCLASS { + D3DKMT_SCHEDULINGPRIORITYCLASS_IDLE, + D3DKMT_SCHEDULINGPRIORITYCLASS_BELOW_NORMAL, + D3DKMT_SCHEDULINGPRIORITYCLASS_NORMAL, + D3DKMT_SCHEDULINGPRIORITYCLASS_ABOVE_NORMAL, + D3DKMT_SCHEDULINGPRIORITYCLASS_HIGH, + D3DKMT_SCHEDULINGPRIORITYCLASS_REALTIME + } D3DKMT_SCHEDULINGPRIORITYCLASS; + + ComQIPtr<IDXGIDevice> dxgiDevice(device); + if (!dxgiDevice) { + blog(LOG_DEBUG, "%s: Failed to get IDXGIDevice", __FUNCTION__); + return false; + } + + HMODULE gdi32 = GetModuleHandleW(L"GDI32"); + if (!gdi32) { + blog(LOG_DEBUG, "%s: Failed to get GDI32", __FUNCTION__); + return false; + } + + NTSTATUS(WINAPI * d3dkmt_spspc)(HANDLE, D3DKMT_SCHEDULINGPRIORITYCLASS); + d3dkmt_spspc = (decltype(d3dkmt_spspc))GetProcAddress( + gdi32, "D3DKMTSetProcessSchedulingPriorityClass"); + if (!d3dkmt_spspc) { + blog(LOG_DEBUG, "%s: Failed to get d3dkmt_spspc", __FUNCTION__); + return false; + } + + NTSTATUS status = d3dkmt_spspc(GetCurrentProcess(), + D3DKMT_SCHEDULINGPRIORITYCLASS_REALTIME); + if (status != 0) { + blog(LOG_DEBUG, "%s: Failed to set process priority class: %d", + __FUNCTION__, (int)status); + return false; + } + + HRESULT hr = dxgiDevice->SetGPUThreadPriority(GPU_PRIORITY_VAL); + if (FAILED(hr)) { + blog(LOG_DEBUG, "%s: SetGPUThreadPriority failed", + __FUNCTION__); + return false; + } + + blog(LOG_INFO, "D3D11 GPU priority setup success"); + return true; +} + +static bool is_intel(const wstring &name) +{ + return wstrstri(name.c_str(), L"intel") != nullptr; +} +#endif + void gs_device::InitDevice(uint32_t adapterIdx) { wstring adapterName; @@ -385,11 +444,24 @@ blog(LOG_INFO, "D3D11 loaded successfully, feature level used: %x", (unsigned int)levelUsed); + /* adjust gpu thread priority */ +#if USE_GPU_PRIORITY + if (!is_intel(adapterName) && !set_priority(device)) { + blog(LOG_INFO, "D3D11 GPU priority setup " + "failed (not admin?)"); + } +#endif + /* ---------------------------------------- */ /* check for nv12 texture output support */ nv12Supported = false; + /* WARP NV12 support is suspected to be buggy on older Windows */ + if (desc.VendorId == 0x1414 && desc.DeviceId == 0x8c) { + return; + } + /* Intel CopyResource is very slow with NV12 */ if (desc.VendorId == 0x8086) { return;
View file
obs-studio-24.0.1.tar.xz/libobs/audio-monitoring/win32/wasapi-output.c -> obs-studio-24.0.3.tar.xz/libobs/audio-monitoring/win32/wasapi-output.c
Changed
@@ -10,6 +10,14 @@ EXTERN_C const GUID DECLSPEC_SELECTANY name = { \ l, w1, w2, {b1, b2, b3, b4, b5, b6, b7, b8}} +#define do_log(level, format, ...) \ + blog(level, "[audio monitoring: '%s'] " format, \ + obs_source_get_name(monitor->source), ##__VA_ARGS__) + +#define warn(format, ...) do_log(LOG_WARNING, format, ##__VA_ARGS__) +#define info(format, ...) do_log(LOG_INFO, format, ##__VA_ARGS__) +#define debug(format, ...) do_log(LOG_DEBUG, format, ##__VA_ARGS__) + ACTUALLY_DEFINE_GUID(CLSID_MMDeviceEnumerator, 0xBCDE0395, 0xE52F, 0x467C, 0x8E, 0x3D, 0xC4, 0x57, 0x92, 0x91, 0x69, 0x2E); ACTUALLY_DEFINE_GUID(IID_IMMDeviceEnumerator, 0xA95664D2, 0x9614, 0x4F35, 0xA7, @@ -256,6 +264,7 @@ const char *id = obs->audio.monitoring_device_id; if (!id) { + warn("%s: No device ID set", __FUNCTION__); return false; } @@ -277,6 +286,8 @@ hr = CoCreateInstance(&CLSID_MMDeviceEnumerator, NULL, CLSCTX_ALL, &IID_IMMDeviceEnumerator, (void **)&immde); if (FAILED(hr)) { + warn("%s: Failed to create IMMDeviceEnumerator: %08lX", + __FUNCTION__, hr); return false; } @@ -291,6 +302,7 @@ } if (FAILED(hr)) { + warn("%s: Failed to get device: %08lX", __FUNCTION__, hr); goto fail; } @@ -301,11 +313,13 @@ &IID_IAudioClient, CLSCTX_ALL, NULL, (void **)&monitor->client); if (FAILED(hr)) { + warn("%s: Failed to activate device: %08lX", __FUNCTION__, hr); goto fail; } hr = monitor->client->lpVtbl->GetMixFormat(monitor->client, &wfex); if (FAILED(hr)) { + warn("%s: Failed to get mix format: %08lX", __FUNCTION__, hr); goto fail; } @@ -313,6 +327,7 @@ AUDCLNT_SHAREMODE_SHARED, 0, 10000000, 0, wfex, NULL); if (FAILED(hr)) { + warn("%s: Failed to initialize: %08lX", __FUNCTION__, hr); goto fail; } @@ -346,6 +361,7 @@ hr = monitor->client->lpVtbl->GetBufferSize(monitor->client, &frames); if (FAILED(hr)) { + warn("%s: Failed to get buffer size: %08lX", __FUNCTION__, hr); goto fail; } @@ -353,15 +369,19 @@ &IID_IAudioRenderClient, (void **)&monitor->render); if (FAILED(hr)) { + warn("%s: Failed to get IAudioRenderClient: %08lX", + __FUNCTION__, hr); goto fail; } if (pthread_mutex_init(&monitor->playback_mutex, NULL) != 0) { + warn("%s: Failed to initialize mutex", __FUNCTION__); goto fail; } hr = monitor->client->lpVtbl->Start(monitor->client); if (FAILED(hr)) { + warn("%s: Failed to start audio: %08lX", __FUNCTION__, hr); goto fail; }
View file
obs-studio-24.0.1.tar.xz/libobs/obs-config.h -> obs-studio-24.0.3.tar.xz/libobs/obs-config.h
Changed
@@ -41,7 +41,7 @@ * * Reset to zero each major or minor version */ -#define LIBOBS_API_PATCH_VER 1 +#define LIBOBS_API_PATCH_VER 3 #define MAKE_SEMANTIC_VERSION(major, minor, patch) \ ((major << 24) | (minor << 16) | patch)
View file
obs-studio-24.0.1.tar.xz/libobs/obs.c -> obs-studio-24.0.3.tar.xz/libobs/obs.c
Changed
@@ -139,6 +139,8 @@ if (!video->convert_textures[2]) return false; break; + default: + break; } #ifdef _WIN32 } @@ -190,6 +192,8 @@ if (!video->copy_surfaces[i][2]) return false; break; + default: + break; } return true;
View file
obs-studio-24.0.1.tar.xz/plugins/obs-browser/README.md -> obs-studio-24.0.3.tar.xz/plugins/obs-browser/README.md
Changed
@@ -17,9 +17,9 @@ /** * onVisibilityChange gets callbacks when the visibility of the browser source changes in OBS * - * @param {bool} visiblity - True -> visible, False -> hidden + * @param {bool} visibility - True -> visible, False -> hidden */ -window.obsstudio.onVisibilityChange = function(visiblity) { +window.obsstudio.onVisibilityChange = function(visibility) { }; ``` @@ -132,7 +132,7 @@ * Open cef.sln from the 'build' subdirectory #### Building -* Build atleast libcef_dll_wrapper (as Release), the rest is optional and are just clients to test with +* Build at least libcef_dll_wrapper (as Release), the rest is optional and are just clients to test with ### Building OBS and obs-browser #### Follow the OBS build instructions
View file
obs-studio-24.0.1.tar.xz/plugins/obs-browser/browser-app.cpp -> obs-studio-24.0.3.tar.xz/plugins/obs-browser/browser-app.cpp
Changed
@@ -83,6 +83,26 @@ command_line->AppendSwitch("enable-system-flash"); + if (command_line->HasSwitch("disable-features")) { + // Don't override existing, as this can break OSR + std::string disableFeatures = + command_line->GetSwitchValue("disable-features"); + disableFeatures += ",HardwareMediaKeyHandling" +#ifdef __APPLE__ + ",NetworkService" +#endif + ; + command_line->AppendSwitchWithValue("disable-features", + disableFeatures); + } else { + command_line->AppendSwitchWithValue("disable-features", + "HardwareMediaKeyHandling" +#ifdef __APPLE__ + ",NetworkService" +#endif + ); + } + command_line->AppendSwitchWithValue("autoplay-policy", "no-user-gesture-required"); }
View file
obs-studio-24.0.1.tar.xz/plugins/obs-browser/browser-version.h -> obs-studio-24.0.3.tar.xz/plugins/obs-browser/browser-version.h
Changed
@@ -2,7 +2,7 @@ #define OBS_BROWSER_VERSION_MAJOR 2 #define OBS_BROWSER_VERSION_MINOR 7 -#define OBS_BROWSER_VERSION_PATCH 11 +#define OBS_BROWSER_VERSION_PATCH 15 #ifndef MAKE_SEMANTIC_VERSION #define MAKE_SEMANTIC_VERSION(major, minor, patch) \
View file
obs-studio-24.0.1.tar.xz/plugins/obs-browser/obs-browser-plugin.cpp -> obs-studio-24.0.3.tar.xz/plugins/obs-browser/obs-browser-plugin.cpp
Changed
@@ -324,8 +324,7 @@ OBS_SOURCE_AUDIO | #endif OBS_SOURCE_CUSTOM_DRAW | OBS_SOURCE_INTERACTION | - OBS_SOURCE_DO_NOT_DUPLICATE | - OBS_SOURCE_MONITOR_BY_DEFAULT; + OBS_SOURCE_DO_NOT_DUPLICATE; info.get_properties = browser_source_get_properties; info.get_defaults = browser_source_get_defaults;
View file
obs-studio-24.0.1.tar.xz/plugins/obs-browser/obs-browser-source-audio.cpp -> obs-studio-24.0.3.tar.xz/plugins/obs-browser/obs-browser-source-audio.cpp
Changed
@@ -25,15 +25,16 @@ } } -static inline void mix_audio(float *p_out, float *p_in, size_t pos, +static inline void mix_audio(float *__restrict p_out, + const float *__restrict p_in, size_t pos, size_t count) { - register float *out = p_out; - register float *in = p_in + pos; - register float *end = in + count; + float *__restrict out = p_out; + const float *__restrict in = p_in + pos; + const float *__restrict end = in + count; while (in < end) - *(out++) += *(in++); + *out++ += *in++; } bool BrowserSource::AudioMix(uint64_t *ts_out,
View file
obs-studio-24.0.1.tar.xz/plugins/obs-ffmpeg/jim-nvenc.c -> obs-studio-24.0.3.tar.xz/plugins/obs-ffmpeg/jim-nvenc.c
Changed
@@ -449,6 +449,8 @@ if (lookahead && nv_get_cap(enc, NV_ENC_CAPS_SUPPORT_LOOKAHEAD)) { config->rcParams.lookaheadDepth = 8; config->rcParams.enableLookahead = 1; + } else { + lookahead = false; } /* psycho aq */ @@ -461,7 +463,8 @@ /* rate control */ enc->can_change_bitrate = - nv_get_cap(enc, NV_ENC_CAPS_SUPPORT_DYN_BITRATE_CHANGE); + nv_get_cap(enc, NV_ENC_CAPS_SUPPORT_DYN_BITRATE_CHANGE) && + !lookahead; config->rcParams.rateControlMode = twopass ? NV_ENC_PARAMS_RC_VBR_HQ : NV_ENC_PARAMS_RC_VBR;
View file
obs-studio-24.0.1.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-source.c -> obs-studio-24.0.3.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-source.c
Changed
@@ -93,9 +93,6 @@ obs_data_set_default_bool(settings, "looping", false); obs_data_set_default_bool(settings, "clear_on_media_end", true); obs_data_set_default_bool(settings, "restart_on_activate", true); -#if defined(_WIN32) - obs_data_set_default_bool(settings, "hw_decode", true); -#endif obs_data_set_default_int(settings, "buffering_mb", 2); obs_data_set_default_int(settings, "speed_percent", 100); } @@ -321,16 +318,12 @@ s->is_looping = obs_data_get_bool(settings, "looping"); s->close_when_inactive = obs_data_get_bool(settings, "close_when_inactive"); - - obs_source_set_async_unbuffered(s->source, true); } else { input = (char *)obs_data_get_string(settings, "input"); input_format = (char *)obs_data_get_string(settings, "input_format"); s->is_looping = false; s->close_when_inactive = true; - - obs_source_set_async_unbuffered(s->source, false); } s->input = input ? bstrdup(input) : NULL;
View file
obs-studio-24.0.1.tar.xz/plugins/obs-transitions/transition-stinger.c -> obs-studio-24.0.3.tar.xz/plugins/obs-transitions/transition-stinger.c
Changed
@@ -225,7 +225,8 @@ proc_handler_call(ph, "get_duration", &cd); proc_handler_call(ph, "get_nb_frames", &cd); - s->duration_ns = (uint64_t)calldata_int(&cd, "duration"); + s->duration_ns = + (uint64_t)calldata_int(&cd, "duration") + 500000000ULL; s->duration_frames = (uint64_t)calldata_int(&cd, "num_frames"); if (s->transition_point_is_frame)
View file
obs-studio-24.0.1.tar.xz/plugins/win-capture/duplicator-monitor-capture.c -> obs-studio-24.0.3.tar.xz/plugins/win-capture/duplicator-monitor-capture.c
Changed
@@ -52,7 +52,7 @@ obs_enter_graphics(); gs_duplicator_destroy(capture->duplicator); - capture->duplicator = gs_duplicator_create(capture->monitor); + capture->duplicator = NULL; capture->width = 0; capture->height = 0; capture->x = 0;
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.