Projects
Multimedia
obs-studio
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 95
View file
obs-studio.changes
Changed
@@ -1,4 +1,24 @@ ------------------------------------------------------------------- +Tue Mar 29 13:23:40 UTC 2022 - Jimmy Berry <jimmy@boombatower.com> + +- Switch to https:// instead of git:// since no longer available. + +------------------------------------------------------------------- +Tue Mar 29 13:07:43 UTC 2022 - jimmy@boombatower.com + +- Update to version 27.2.4: + * libobs: Update version to 27.2.4 + * UI: Add missing previousIcon in Rachni theme + * CI: Enable legacy CI for PRs to release branches + * CI: Fix CEF zip extraction path on Windows + * CI: Fix Qt XML Validator workflow + * obs-libfdk: Set bitstream to ADTS for mpegts output + * win-waspai: Tighten version check for RTWQ + * mac-capture: Add vbcable to whitelist for loopback devices + * UI: Fix handling of remove signal with projectors + * UI: Fix deferred source properties not updating + +------------------------------------------------------------------- Thu Mar 03 03:34:02 UTC 2022 - jimmy@boombatower.com - Update to version 27.2.3:
View file
obs-studio.spec
Changed
@@ -1,5 +1,5 @@ Name: obs-studio -Version: 27.2.3 +Version: 27.2.4 Release: 0 Summary: A recording/broadcasting program Group: Productivity/Multimedia/Video/Editors and Convertors
View file
_service
Changed
@@ -1,8 +1,8 @@ <services> <service name="tar_scm" mode="disabled"> <param name="versionformat">@PARENT_TAG@</param> - <param name="revision">refs/tags/27.2.3</param> - <param name="url">git://github.com/jp9000/obs-studio.git</param> + <param name="revision">refs/tags/27.2.4</param> + <param name="url">https://github.com/obsproject/obs-studio.git</param> <param name="scm">git</param> <param name="changesgenerate">enable</param> </service>
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">b65ee7e7fbca05e6c4bfd55b7ff721150b3c0735</param> + <param name="url">https://github.com/obsproject/obs-studio.git</param> + <param name="changesrevision">aab14ba29a759037e42610f127ba844f17dbd416</param> </service> </servicedata>
View file
obs-studio-27.2.3.tar.xz/.github/workflows/main.yml -> obs-studio-27.2.4.tar.xz/.github/workflows/main.yml
Changed
@@ -14,6 +14,7 @@ - '**.md' branches: - master + - 'release/**' env: MACOS_CEF_BUILD_VERSION: '4638' @@ -211,7 +212,7 @@ if [ -d ./OBS.app/Contents/Resources/data/obs-scripting ]; then mv ./OBS.app/Contents/Resources/data/obs-scripting/obslua.so ./OBS.app/Contents/MacOS/ mv ./OBS.app/Contents/Resources/data/obs-scripting/_obspython.so ./OBS.app/Contents/MacOS/ - mv ./OBS.app/Contents/Resources/data/obs-scripting/obspython.py ./OBS.app/Contents/MacOS/ + mv ./OBS.app/Contents/Resources/data/obs-scripting/obspython.py ./OBS.app/Contents/Resources/ rm -rf ./OBS.app/Contents/Resources/data/obs-scripting/ fi @@ -581,7 +582,7 @@ if: steps.cef-cache.outputs.cache-hit != 'true' run: | curl -kL https://cdn-fastly.obsproject.com/downloads/cef_binary_${{ env.WINDOWS_CEF_BUILD_VERSION }}_windows_x64.zip -f --retry 5 -o cef.zip - 7z x cef.zip -o"${{ github.workspace }}/cmbuild" + 7z x cef.zip -o"${{ github.workspace }}/cmbuild/cef_binary_${{ env.WINDOWS_CEF_BUILD_VERSION }}_windows_x64" - name: 'Configure' run: | mkdir ./build @@ -690,7 +691,7 @@ if: steps.cef-cache.outputs.cache-hit != 'true' run: | curl -kL https://cdn-fastly.obsproject.com/downloads/cef_binary_${{ env.WINDOWS_CEF_BUILD_VERSION }}_windows_x86.zip -f --retry 5 -o cef.zip - 7z x cef.zip -o"${{ github.workspace }}/cmbuild" + 7z x cef.zip -o"${{ github.workspace }}/cmbuild/cef_binary_${{ env.WINDOWS_CEF_BUILD_VERSION }}_windows_x86" - name: 'Configure' run: | mkdir ./build
View file
obs-studio-27.2.3.tar.xz/.github/workflows/qt-xml.yml -> obs-studio-27.2.4.tar.xz/.github/workflows/qt-xml.yml
Changed
@@ -19,6 +19,7 @@ - name: Install xmllint run: | + sudo apt-get -qq update sudo apt-get install --no-install-recommends -y libxml2-utils - name: Register Annotations
View file
obs-studio-27.2.3.tar.xz/CI/full-build-macos.sh -> obs-studio-27.2.4.tar.xz/CI/full-build-macos.sh
Changed
@@ -419,7 +419,7 @@ if [ -d ./OBS.app/Contents/Resources/data/obs-scripting ]; then /bin/mv ./OBS.app/Contents/Resources/data/obs-scripting/obslua.so ./OBS.app/Contents/MacOS/ /bin/mv ./OBS.app/Contents/Resources/data/obs-scripting/_obspython.so ./OBS.app/Contents/MacOS/ - /bin/mv ./OBS.app/Contents/Resources/data/obs-scripting/obspython.py ./OBS.app/Contents/MacOS/ + /bin/mv ./OBS.app/Contents/Resources/data/obs-scripting/obspython.py ./OBS.app/Contents/Resources/ /bin/rm -rf ./OBS.app/Contents/Resources/data/obs-scripting/ fi # dylibbundler will only copy actually linked files into bundle, but not symlinks
View file
obs-studio-27.2.3.tar.xz/UI/data/themes/Rachni.qss -> obs-studio-27.2.4.tar.xz/UI/data/themes/Rachni.qss
Changed
@@ -1464,6 +1464,10 @@ qproperty-icon: url(./Dark/media/media_next.svg); } +* [themeID="previousIcon"] { + qproperty-icon: url(./Dark/media/media_previous.svg); +} + /* YouTube Integration */ OBSYoutubeActions { qproperty-thumbPlaceholder: url(./Dark/sources/image.svg);
View file
obs-studio-27.2.3.tar.xz/UI/properties-view.cpp -> obs-studio-27.2.4.tar.xz/UI/properties-view.cpp
Changed
@@ -180,14 +180,15 @@ OBSPropertiesView::OBSPropertiesView(OBSData settings_, obs_object_t *obj, PropertiesReloadCallback reloadCallback, PropertiesUpdateCallback callback_, - PropertiesVisualUpdateCb cb_, int minSize_) + PropertiesVisualUpdateCb visUpdateCb_, + int minSize_) : VScrollArea(nullptr), properties(nullptr, obs_properties_destroy), settings(settings_), weakObj(obs_object_get_weak_object(obj)), reloadCallback(reloadCallback), callback(callback_), - cb(cb_), + visUpdateCb(visUpdateCb_), minSize(minSize_) { setFrameShape(QFrame::NoFrame); @@ -198,14 +199,15 @@ OBSPropertiesView::OBSPropertiesView(OBSData settings_, void *obj, PropertiesReloadCallback reloadCallback, PropertiesUpdateCallback callback_, - PropertiesVisualUpdateCb cb_, int minSize_) + PropertiesVisualUpdateCb visUpdateCb_, + int minSize_) : VScrollArea(nullptr), properties(nullptr, obs_properties_destroy), settings(settings_), rawObj(obj), reloadCallback(reloadCallback), callback(callback_), - cb(cb_), + visUpdateCb(visUpdateCb_), minSize(minSize_) { setFrameShape(QFrame::NoFrame); @@ -2028,11 +2030,11 @@ blog(LOG_DEBUG, "No update timer or no callback!"); } - if (view->cb && !view->deferUpdate) { + if (view->visUpdateCb && !view->deferUpdate) { OBSObject strongObj = view->GetObject(); void *obj = strongObj ? strongObj.Get() : view->rawObj; if (obj) - view->cb(obj, view->settings); + view->visUpdateCb(obj, view->settings); } view->SignalChanged();
View file
obs-studio-27.2.3.tar.xz/UI/properties-view.hpp -> obs-studio-27.2.4.tar.xz/UI/properties-view.hpp
Changed
@@ -102,7 +102,7 @@ std::string type; PropertiesReloadCallback reloadCallback; PropertiesUpdateCallback callback = nullptr; - PropertiesVisualUpdateCb cb = nullptr; + PropertiesVisualUpdateCb visUpdateCb = nullptr; int minSize; std::vector<std::unique_ptr<WidgetInfo>> children; std::string lastFocused; @@ -188,7 +188,10 @@ inline void UpdateSettings() { - callback(OBSGetStrongRef(weakObj), nullptr, settings); + if (callback) + callback(OBSGetStrongRef(weakObj), nullptr, settings); + else if (visUpdateCb) + visUpdateCb(OBSGetStrongRef(weakObj), settings); } inline bool DeferUpdate() const { return deferUpdate; }
View file
obs-studio-27.2.3.tar.xz/UI/window-basic-main.cpp -> obs-studio-27.2.4.tar.xz/UI/window-basic-main.cpp
Changed
@@ -3531,6 +3531,8 @@ { if (SourceMixerHidden(source)) return; + if (!obs_source_active(source)) + return; if (!obs_source_audio_active(source)) return; @@ -4412,6 +4414,8 @@ return obs_reset_audio(&ai); } +extern char *get_new_source_name(const char *name, const char *format); + void OBSBasic::ResetAudioDevice(const char *sourceId, const char *deviceId, const char *deviceDesc, int channel) { @@ -4435,10 +4439,11 @@ } } else if (!disable) { + BPtr<char> name = get_new_source_name(deviceDesc, "%s (%d)"); + settings = obs_data_create(); obs_data_set_string(settings, "device_id", deviceId); - source = obs_source_create(sourceId, deviceDesc, settings, - nullptr); + source = obs_source_create(sourceId, name, settings, nullptr); obs_set_output_source(channel, source); }
View file
obs-studio-27.2.3.tar.xz/UI/window-basic-properties.cpp -> obs-studio-27.2.4.tar.xz/UI/window-basic-properties.cpp
Changed
@@ -81,20 +81,10 @@ OBSDataAutoRelease nd_settings = obs_source_get_settings(source); obs_data_apply(oldSettings, nd_settings); - auto handle_memory = [](void *vp, obs_data_t *old_settings, - obs_data_t *new_settings) { - obs_source_t *source = reinterpret_cast<obs_source_t *>(vp); - - obs_source_update(source, new_settings); - - UNUSED_PARAMETER(old_settings); - UNUSED_PARAMETER(vp); - }; - view = new OBSPropertiesView( nd_settings.Get(), source, (PropertiesReloadCallback)obs_source_properties, - (PropertiesUpdateCallback)handle_memory, + (PropertiesUpdateCallback) nullptr, // No special handling required for undo/redo (PropertiesVisualUpdateCb)obs_source_update); view->setMinimumHeight(150);
View file
obs-studio-27.2.3.tar.xz/UI/window-basic-source-select.cpp -> obs-studio-27.2.4.tar.xz/UI/window-basic-source-select.cpp
Changed
@@ -130,7 +130,7 @@ obs_sceneitem_set_visible(sceneitem, data->visible); } -static char *get_new_source_name(const char *name) +char *get_new_source_name(const char *name, const char *format) { struct dstr new_name = {0}; int inc = 0; @@ -143,7 +143,7 @@ if (!existing_source) break; - dstr_printf(&new_name, "%s %d", name, ++inc + 1); + dstr_printf(&new_name, format, name, ++inc + 1); } return new_name.array; @@ -160,8 +160,8 @@ if (duplicate) { OBSSource from = source; - char *new_name = - get_new_source_name(obs_source_get_name(source)); + char *new_name = get_new_source_name( + obs_source_get_name(source), "%s %d"); source = obs_source_duplicate(from, new_name, false); obs_source_release(source); bfree(new_name);
View file
obs-studio-27.2.3.tar.xz/UI/window-projector.cpp -> obs-studio-27.2.4.tar.xz/UI/window-projector.cpp
Changed
@@ -626,11 +626,7 @@ void OBSProjector::OBSSourceRemoved(void *data, calldata_t *params) { OBSProjector *window = reinterpret_cast<OBSProjector *>(data); - - OBSBasic *main = reinterpret_cast<OBSBasic *>(App()->GetMainWindow()); - main->DeleteProjector(window); - allProjectors.removeAll(window); - + QMetaObject::invokeMethod(window, "EscapeTriggered"); UNUSED_PARAMETER(params); }
View file
obs-studio-27.2.3.tar.xz/deps/obs-scripting/obs-scripting-python.c -> obs-studio-27.2.4.tar.xz/deps/obs-scripting/obs-scripting-python.c
Changed
@@ -1676,10 +1676,24 @@ bfree(absolute_script_path); #if __APPLE__ - char *exec_path = os_get_executable_path_ptr(""); - if (exec_path) - add_to_python_path(exec_path); - bfree(exec_path); + char *absolute_exec_path = os_get_executable_path_ptr(""); + + if (absolute_exec_path != NULL) { + add_to_python_path(absolute_exec_path); + + struct dstr resources_path; + dstr_init_move_array(&resources_path, absolute_exec_path); + dstr_cat(&resources_path, "../Resources"); + + char *absolute_resources_path = os_get_abs_path_ptr(resources_path.array); + if (absolute_resources_path != NULL) { + add_to_python_path(absolute_resources_path); + bfree(absolute_resources_path); + } + + dstr_free(&resources_path); + bfree(absolute_exec_path); + } #endif py_obspython = PyImport_ImportModule("obspython");
View file
obs-studio-27.2.3.tar.xz/libobs/obs-config.h -> obs-studio-27.2.4.tar.xz/libobs/obs-config.h
Changed
@@ -41,7 +41,7 @@ * * Reset to zero each major or minor version */ -#define LIBOBS_API_PATCH_VER 3 +#define LIBOBS_API_PATCH_VER 4 #define MAKE_SEMANTIC_VERSION(major, minor, patch) \ ((major << 24) | (minor << 16) | patch)
View file
obs-studio-27.2.3.tar.xz/libobs/obs-encoder.c -> obs-studio-27.2.4.tar.xz/libobs/obs-encoder.c
Changed
@@ -1086,13 +1086,15 @@ struct audio_data *data, size_t size, size_t offset_size) { + if (offset_size >= size) + return; + size -= offset_size; /* push in to the circular buffer */ - if (size) - for (size_t i = 0; i < encoder->planes; i++) - circlebuf_push_back(&encoder->audio_input_buffer[i], - data->data[i] + offset_size, size); + for (size_t i = 0; i < encoder->planes; i++) + circlebuf_push_back(&encoder->audio_input_buffer[i], + data->data[i] + offset_size, size); } static inline size_t calc_offset_size(struct obs_encoder *encoder,
View file
obs-studio-27.2.3.tar.xz/plugins/mac-capture/audio-device-enum.c -> obs-studio-27.2.4.tar.xz/plugins/mac-capture/audio-device-enum.c
Changed
@@ -15,7 +15,8 @@ astrstri(device, "ishowu") == NULL && astrstri(device, "blackhole") == NULL && astrstri(device, "loopback") == NULL && - astrstri(device, "groundcontrol") == NULL; + astrstri(device, "groundcontrol") == NULL && + astrstri(device, "vbcable") == NULL; } static inline bool enum_success(OSStatus stat, const char *msg)
View file
obs-studio-27.2.3.tar.xz/plugins/obs-libfdk/obs-libfdk.c -> obs-studio-27.2.4.tar.xz/plugins/obs-libfdk/obs-libfdk.c
Changed
@@ -96,6 +96,8 @@ int bitrate = (int)obs_data_get_int(settings, "bitrate") * 1000; int afterburner = obs_data_get_bool(settings, "afterburner") ? 1 : 0; audio_t *audio = obs_encoder_audio(encoder); + bool set_to_ADTS = obs_data_get_bool(settings, "set_to_ADTS"); + int transmux = set_to_ADTS ? 2 : 0; int mode = 0; AACENC_ERROR err; @@ -159,7 +161,9 @@ aacEncoder_SetParam(enc->fdkhandle, AACENC_BITRATEMODE, 0)); CHECK_LIBFDK( aacEncoder_SetParam(enc->fdkhandle, AACENC_BITRATE, bitrate)); - CHECK_LIBFDK(aacEncoder_SetParam(enc->fdkhandle, AACENC_TRANSMUX, 0)); + + CHECK_LIBFDK( + aacEncoder_SetParam(enc->fdkhandle, AACENC_TRANSMUX, transmux)); CHECK_LIBFDK(aacEncoder_SetParam(enc->fdkhandle, AACENC_AFTERBURNER, afterburner));
View file
obs-studio-27.2.3.tar.xz/plugins/rtmp-services/rtmp-custom.c -> obs-studio-27.2.4.tar.xz/plugins/rtmp-services/rtmp-custom.c
Changed
@@ -122,6 +122,7 @@ strncmp(service->server, RTMP_PROTOCOL, strlen(RTMP_PROTOCOL)) != 0) { obs_data_set_bool(video_settings, "repeat_headers", true); + obs_data_set_bool(audio_settings, "set_to_ADTS", true); } }
View file
obs-studio-27.2.3.tar.xz/plugins/win-dshow/ffmpeg-decode.c -> obs-studio-27.2.4.tar.xz/plugins/win-dshow/ffmpeg-decode.c
Changed
@@ -61,6 +61,7 @@ } if (hw_ctx) { + d->hw_device_ctx = hw_ctx; d->decoder->hw_device_ctx = av_buffer_ref(hw_ctx); d->hw = true; } @@ -117,6 +118,9 @@ if (decode->frame) av_frame_free(&decode->frame); + if (decode->hw_device_ctx) + av_buffer_unref(&decode->hw_device_ctx); + if (decode->packet_buffer) bfree(decode->packet_buffer);
View file
obs-studio-27.2.3.tar.xz/plugins/win-dshow/ffmpeg-decode.h -> obs-studio-27.2.4.tar.xz/plugins/win-dshow/ffmpeg-decode.h
Changed
@@ -37,6 +37,7 @@ #endif struct ffmpeg_decode { + AVBufferRef *hw_device_ctx; AVCodecContext *decoder; AVCodec *codec;
View file
obs-studio-27.2.3.tar.xz/plugins/win-wasapi/win-wasapi.cpp -> obs-studio-27.2.4.tar.xz/plugins/win-wasapi/win-wasapi.cpp
Changed
@@ -328,7 +328,14 @@ // while RTWQ was introduced in Win 8.1, it silently fails // to capture Desktop Audio for some reason. Disable for now. - if (get_win_ver_int() >= _WIN32_WINNT_WIN10) + struct win_version_info win1703 = {}; + win1703.major = 10; + win1703.minor = 0; + win1703.build = 15063; + win1703.revis = 0; + struct win_version_info ver; + get_win_ver(&ver); + if (win_version_compare(&ver, &win1703) >= 0) rtwq_supported = rtwq_module != NULL; if (rtwq_supported) {
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
.