Overview
Request 5546 (accepted)
- Switch to https:// instead of git:// since no longer available.
- 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
- Created by boombatower about 3 years ago
- In state accepted
-
Package maintainers:
boombatower,
darix, and
frispete
obs-studio.changes
Changed
-------------------------------------------------------------------
+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:
obs-studio.spec
Changed
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
_service
Changed
<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>
_servicedata
Changed
<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>
obs-studio-27.2.3.tar.xz/.github/workflows/main.yml -> obs-studio-27.2.4.tar.xz/.github/workflows/main.yml
Changed
- '**.md'
branches:
- master
+ - 'release/**'
env:
MACOS_CEF_BUILD_VERSION: '4638'
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
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
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
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
- name: Install xmllint
run: |
+ sudo apt-get -qq update
sudo apt-get install --no-install-recommends -y libxml2-utils
- name: Register Annotations
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
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
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
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);
obs-studio-27.2.3.tar.xz/UI/properties-view.cpp -> obs-studio-27.2.4.tar.xz/UI/properties-view.cpp
Changed
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);
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);
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();
obs-studio-27.2.3.tar.xz/UI/properties-view.hpp -> obs-studio-27.2.4.tar.xz/UI/properties-view.hpp
Changed
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;
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; }
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
{
if (SourceMixerHidden(source))
return;
+ if (!obs_source_active(source))
+ return;
if (!obs_source_audio_active(source))
return;
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)
{
}
} 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);
}
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
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);
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
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;
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;
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);
obs-studio-27.2.3.tar.xz/UI/window-projector.cpp -> obs-studio-27.2.4.tar.xz/UI/window-projector.cpp
Changed
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);
}
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
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");
obs-studio-27.2.3.tar.xz/libobs/obs-config.h -> obs-studio-27.2.4.tar.xz/libobs/obs-config.h
Changed
*
* 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)
obs-studio-27.2.3.tar.xz/libobs/obs-encoder.c -> obs-studio-27.2.4.tar.xz/libobs/obs-encoder.c
Changed
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,
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
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)
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
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;
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));
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
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);
}
}
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
}
if (hw_ctx) {
+ d->hw_device_ctx = hw_ctx;
d->decoder->hw_device_ctx = av_buffer_ref(hw_ctx);
d->hw = true;
}
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);
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
#endif
struct ffmpeg_decode {
+ AVBufferRef *hw_device_ctx;
AVCodecContext *decoder;
AVCodec *codec;
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
// 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) {
No build results available
No rpmlint results available
Request History
boombatower created request about 3 years ago
- Switch to https:// instead of git:// since no longer available.
- 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
boombatower accepted request about 3 years ago
ok