Projects
Multimedia
obs-studio
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 75
View file
obs-studio.changes
Changed
@@ -1,4 +1,26 @@ ------------------------------------------------------------------- +Mon Mar 23 16:10:08 UTC 2020 - jimmy@boombatower.com + +- Update to version 25.0.2: + * linux-v4l2: readonly controls cause infinite loop + * libobs: Update version to 25.0.2 (linux hotfix) + * UI: Set correct window title for fullscreen projector + * CI: Update Linux CI from Ubuntu 16.04 to 18.04 + * UI: Make links in updater clickable + * obs-filters: Fix LUT file extension filter on Linux + * win-wasapi: Fix leaking IPropertyStore + * win-wasapi: Fix crash on certain devices + * obs-qsv11: Fix target usage values + * UI: Fix crash on settings update + * libobs: Add move assignment operator for BPtr + * libobs: Fix missing assignment operator return + * libobs: Fix size mismatch warning + * libobs: Handle noexcept warnings + * UI: Make Importer destructor virtual + * UI: Add setting for Mixer add-on choice + * linux-capture: Use RandR monitors for screen information + +------------------------------------------------------------------- Thu Mar 19 19:26:37 UTC 2020 - jimmy@boombatower.com - Update to version 25.0.1:
View file
obs-studio.spec
Changed
@@ -1,5 +1,5 @@ Name: obs-studio -Version: 25.0.1 +Version: 25.0.2 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/25.0.1</param> + <param name="revision">refs/tags/25.0.2</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">b19ea6fe3516a7a8bdf44f50bb95a36f4681330d</param> + <param name="changesrevision">a0e8adbc42df198f95c3778335e4a883e0c2fd09</param> </service> </servicedata>
View file
obs-studio-25.0.1.tar.xz/UI/auth-mixer.cpp -> obs-studio-25.0.2.tar.xz/UI/auth-mixer.cpp
Changed
@@ -177,6 +177,11 @@ return OAuthStreamKey::LoadInternal(); } +static const char *elixr_script = "\ +var elixr = document.createElement('script');\ +elixr.setAttribute('src','https://api.mixrelixr.com/scripts/elixr-emotes-embedded-chat.bundle.js');\ +document.head.appendChild(elixr);"; + void MixerAuth::LoadUI() { if (!cef) @@ -189,6 +194,7 @@ OBSBasic::InitBrowserPanelSafeBlock(); OBSBasic *main = OBSBasic::Get(); + std::string script = ""; std::string url; url += "https://mixer.com/embed/chat/"; url += id; @@ -206,6 +212,15 @@ QCefWidget *browser = cef->create_widget(nullptr, url, panel_cookies); chat->SetWidget(browser); + const int mxAddonChoice = + config_get_int(main->Config(), service(), "AddonChoice"); + if (mxAddonChoice) { + if (mxAddonChoice & 0x1) + script += elixr_script; + } + + browser->setStartupScript(script); + main->addDockWidget(Qt::RightDockWidgetArea, chat.data()); chatMenu.reset(main->AddDockWidget(chat.data()));
View file
obs-studio-25.0.1.tar.xz/UI/data/locale/en-US.ini -> obs-studio-25.0.2.tar.xz/UI/data/locale/en-US.ini
Changed
@@ -687,6 +687,9 @@ Basic.Settings.Stream.TTVAddon.BTTV="BetterTTV" Basic.Settings.Stream.TTVAddon.FFZ="FrankerFaceZ" Basic.Settings.Stream.TTVAddon.Both="BetterTTV and FrankerFaceZ" +Basic.Settings.Stream.MixerAddon="Mixer Chat Add-Ons" +Basic.Settings.Stream.MixerAddon.None="None" +Basic.Settings.Stream.MixerAddon.MEE="MixrElixr Emotes" Basic.Settings.Stream.MissingSettingAlert="Missing Stream Setup" Basic.Settings.Stream.StreamSettingsWarning="Open Settings" Basic.Settings.Stream.MissingUrlAndApiKey="URL and Stream Key are missing.\n\nOpen settings to enter the URL and Stream Key in the 'stream' tab."
View file
obs-studio-25.0.1.tar.xz/UI/forms/OBSBasicSettings.ui -> obs-studio-25.0.2.tar.xz/UI/forms/OBSBasicSettings.ui
Changed
@@ -151,8 +151,8 @@ <rect> <x>0</x> <y>0</y> - <width>806</width> - <height>1254</height> + <width>803</width> + <height>1026</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout_19"> @@ -1140,7 +1140,7 @@ </property> </widget> </item> - <item row="8" column="0"> + <item row="9" column="0"> <widget class="QLabel" name="authUsernameLabel"> <property name="text"> <string>Basic.Settings.Stream.Custom.Username</string> @@ -1150,10 +1150,10 @@ </property> </widget> </item> - <item row="8" column="1"> + <item row="9" column="1"> <widget class="QLineEdit" name="authUsername"/> </item> - <item row="9" column="0"> + <item row="10" column="0"> <widget class="QLabel" name="authPwLabel"> <property name="text"> <string>Basic.Settings.Stream.Custom.Password</string> @@ -1163,7 +1163,7 @@ </property> </widget> </item> - <item row="9" column="1"> + <item row="10" column="1"> <widget class="QWidget" name="authPwWidget" native="true"> <layout class="QHBoxLayout" name="horizontalLayout_25"> <property name="leftMargin"> @@ -1208,6 +1208,19 @@ </property> </widget> </item> + <item row="8" column="0"> + <widget class="QLabel" name="mixerAddonLabel"> + <property name="text"> + <string>Basic.Settings.Stream.MixerAddon</string> + </property> + <property name="buddy"> + <cstring>mixerAddonDropdown</cstring> + </property> + </widget> + </item> + <item row="8" column="1"> + <widget class="QComboBox" name="mixerAddonDropdown"/> + </item> </layout> </widget> </widget> @@ -1244,8 +1257,8 @@ <rect> <x>0</x> <y>0</y> - <width>813</width> - <height>761</height> + <width>603</width> + <height>631</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout_21"> @@ -3753,8 +3766,8 @@ <rect> <x>0</x> <y>0</y> - <width>767</width> - <height>582</height> + <width>555</width> + <height>469</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout_50"> @@ -4609,8 +4622,8 @@ <rect> <x>0</x> <y>0</y> - <width>791</width> - <height>970</height> + <width>596</width> + <height>781</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout_23">
View file
obs-studio-25.0.1.tar.xz/UI/forms/OBSUpdate.ui -> obs-studio-25.0.2.tar.xz/UI/forms/OBSUpdate.ui
Changed
@@ -22,7 +22,7 @@ </widget> </item> <item> - <widget class="QTextEdit" name="text"> + <widget class="QTextBrowser" name="text"> <property name="readOnly"> <bool>true</bool> </property> @@ -33,6 +33,9 @@ </style></head><body style=" font-family:'MS Shell Dlg 2'; font-size:8.25pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-size:8pt;"><br /></p></body></html></string> </property> + <property name="openExternalLinks"> + <bool>true</bool> + </property> </widget> </item> <item>
View file
obs-studio-25.0.1.tar.xz/UI/importers/importers.hpp -> obs-studio-25.0.2.tar.xz/UI/importers/importers.hpp
Changed
@@ -38,6 +38,7 @@ class Importer { public: + virtual ~Importer() {} virtual std::string Prog() { return "Null"; }; virtual int ImportScenes(const std::string &path, std::string &name, json11::Json &res) = 0;
View file
obs-studio-25.0.1.tar.xz/UI/window-basic-settings-stream.cpp -> obs-studio-25.0.2.tar.xz/UI/window-basic-settings-stream.cpp
Changed
@@ -41,6 +41,8 @@ ui->bandwidthTestEnable->setVisible(false); ui->twitchAddonDropdown->setVisible(false); ui->twitchAddonLabel->setVisible(false); + ui->mixerAddonDropdown->setVisible(false); + ui->mixerAddonLabel->setVisible(false); int vertSpacing = ui->topStreamLayout->verticalSpacing(); @@ -67,6 +69,11 @@ ui->twitchAddonDropdown->addItem( QTStr("Basic.Settings.Stream.TTVAddon.Both")); + ui->mixerAddonDropdown->addItem( + QTStr("Basic.Settings.Stream.MixerAddon.None")); + ui->mixerAddonDropdown->addItem( + QTStr("Basic.Settings.Stream.MixerAddon.MEE")); + connect(ui->service, SIGNAL(currentIndexChanged(int)), this, SLOT(UpdateServerList())); connect(ui->service, SIGNAL(currentIndexChanged(int)), this, @@ -112,6 +119,9 @@ idx = config_get_int(main->Config(), "Twitch", "AddonChoice"); ui->twitchAddonDropdown->setCurrentIndex(idx); + + idx = config_get_int(main->Config(), "Mixer", "AddonChoice"); + ui->mixerAddonDropdown->setCurrentIndex(idx); } UpdateServerList(); @@ -189,6 +199,19 @@ if (choiceExists && currentChoice != newChoice) forceAuthReload = true; } + if (!!auth && strcmp(auth->service(), "Mixer") == 0) { + bool choiceExists = config_has_user_value( + main->Config(), "Mixer", "AddonChoice"); + int currentChoice = + config_get_int(main->Config(), "Mixer", "AddonChoice"); + int newChoice = ui->mixerAddonDropdown->currentIndex(); + + config_set_int(main->Config(), "Mixer", "AddonChoice", + newChoice); + + if (choiceExists && currentChoice != newChoice) + forceAuthReload = true; + } obs_data_set_string(settings, "key", QT_TO_UTF8(ui->key->text())); @@ -309,6 +332,8 @@ ui->bandwidthTestEnable->setVisible(false); ui->twitchAddonDropdown->setVisible(false); ui->twitchAddonLabel->setVisible(false); + ui->mixerAddonDropdown->setVisible(false); + ui->mixerAddonLabel->setVisible(false); #ifdef BROWSER_AVAILABLE if (cef) { @@ -467,6 +492,10 @@ ui->twitchAddonLabel->setVisible(true); ui->twitchAddonDropdown->setVisible(true); } + if (strcmp(a->service(), "Mixer") == 0) { + ui->mixerAddonLabel->setVisible(true); + ui->mixerAddonDropdown->setVisible(true); + } } ui->streamStackWidget->setCurrentIndex((int)Section::StreamKey);
View file
obs-studio-25.0.1.tar.xz/UI/window-basic-settings.cpp -> obs-studio-25.0.2.tar.xz/UI/window-basic-settings.cpp
Changed
@@ -371,6 +371,7 @@ HookWidget(ui->key, EDIT_CHANGED, STREAM1_CHANGED); HookWidget(ui->bandwidthTestEnable, CHECK_CHANGED, STREAM1_CHANGED); HookWidget(ui->twitchAddonDropdown, COMBO_CHANGED, STREAM1_CHANGED); + HookWidget(ui->mixerAddonDropdown, COMBO_CHANGED, STREAM1_CHANGED); HookWidget(ui->useAuth, CHECK_CHANGED, STREAM1_CHANGED); HookWidget(ui->authUsername, EDIT_CHANGED, STREAM1_CHANGED); HookWidget(ui->authPw, EDIT_CHANGED, STREAM1_CHANGED); @@ -3536,7 +3537,8 @@ bool audioRestart = (ui->channelSetup->currentIndex() != channelIndex || ui->sampleRate->currentIndex() != sampleRateIndex); bool browserHWAccelChanged = - (ui->browserHWAccel->isChecked() != prevBrowserAccel); + (ui->browserHWAccel && + ui->browserHWAccel->isChecked() != prevBrowserAccel); if (langChanged || audioRestart || browserHWAccelChanged) restart = true;
View file
obs-studio-25.0.1.tar.xz/UI/window-projector.cpp -> obs-studio-25.0.2.tar.xz/UI/window-projector.cpp
Changed
@@ -25,13 +25,14 @@ type = type_; setWindowIcon(QIcon::fromTheme("obs", QIcon(":/res/images/obs.png"))); - UpdateProjectorTitle(QT_UTF8(obs_source_get_name(source))); if (monitor == -1) resize(480, 270); else SetMonitor(monitor); + UpdateProjectorTitle(QT_UTF8(obs_source_get_name(source))); + QAction *action = new QAction(this); action->setShortcut(Qt::Key_Escape); addAction(action);
View file
obs-studio-25.0.1.tar.xz/azure-pipelines.yml -> obs-studio-25.0.2.tar.xz/azure-pipelines.yml
Changed
@@ -14,7 +14,7 @@ jobs: - job: Prebuild pool: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' steps: - bash: | if curl -s "https://api.github.com/repos/$BUILD_REPOSITORY_ID/issues/$SYSTEM_PULLREQUEST_PULLREQUESTNUMBER/labels" | grep '"name": "Seeking Testers"' @@ -116,7 +116,7 @@ variables: prHasCILabel: $[ dependencies.Prebuild.outputs['checkPrLabel.prHasCILabel'] ] pool: - vmImage: 'ubuntu-16.04' + vmImage: 'ubuntu-18.04' steps: - script: git submodule update --init --recursive displayName: 'Checkout Submodules'
View file
obs-studio-25.0.1.tar.xz/libobs/obs-config.h -> obs-studio-25.0.2.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 2 #define MAKE_SEMANTIC_VERSION(major, minor, patch) \ ((major << 24) | (minor << 16) | patch)
View file
obs-studio-25.0.1.tar.xz/libobs/obs-source.c -> obs-studio-25.0.2.tar.xz/libobs/obs-source.c
Changed
@@ -2600,12 +2600,13 @@ const struct obs_source_frame *src, uint32_t plane, uint32_t lines) { - if (dst->linesize[plane] != src->linesize[plane]) + if (dst->linesize[plane] != src->linesize[plane]) { for (uint32_t y = 0; y < lines; y++) copy_frame_data_line(dst, src, plane, y); - else + } else { memcpy(dst->data[plane], src->data[plane], - dst->linesize[plane] * lines); + (size_t)dst->linesize[plane] * (size_t)lines); + } } static void copy_frame_data(struct obs_source_frame *dst,
View file
obs-studio-25.0.1.tar.xz/libobs/obs.hpp -> obs-studio-25.0.2.tar.xz/libobs/obs.hpp
Changed
@@ -236,7 +236,7 @@ } OBSSignal(const OBSSignal &) = delete; - OBSSignal(OBSSignal &&other) + OBSSignal(OBSSignal &&other) noexcept : handler(other.handler), signal(other.signal), callback(other.callback), @@ -249,7 +249,7 @@ } OBSSignal &operator=(const OBSSignal &) = delete; - OBSSignal &operator=(OBSSignal &&other) + OBSSignal &operator=(OBSSignal &&other) noexcept { Disconnect();
View file
obs-studio-25.0.1.tar.xz/libobs/util/util.hpp -> obs-studio-25.0.2.tar.xz/libobs/util/util.hpp
Changed
@@ -20,6 +20,7 @@ #include <string.h> #include <stdarg.h> +#include <utility> #include "bmem.h" #include "config-file.h" @@ -36,7 +37,7 @@ public: inline BPtr(T *p = nullptr) : ptr(p) {} - inline BPtr(BPtr &&other) : ptr(other.ptr) { other.ptr = nullptr; } + inline BPtr(BPtr &&other) { *this = std::move(other); } inline ~BPtr() { bfree(ptr); } inline T *operator=(T *p) @@ -45,6 +46,14 @@ ptr = p; return p; } + + inline BPtr &operator=(BPtr &&other) + { + ptr = other.ptr; + other.ptr = nullptr; + return *this; + } + inline operator T *() { return ptr; } inline T **operator&() { @@ -68,7 +77,7 @@ public: inline ConfigFile() : config(NULL) {} - inline ConfigFile(ConfigFile &&other) : config(other.config) + inline ConfigFile(ConfigFile &&other) noexcept : config(other.config) { other.config = nullptr; } @@ -120,7 +129,7 @@ public: inline TextLookup(lookup_t *lookup = nullptr) : lookup(lookup) {} - inline TextLookup(TextLookup &&other) : lookup(other.lookup) + inline TextLookup(TextLookup &&other) noexcept : lookup(other.lookup) { other.lookup = nullptr; }
View file
obs-studio-25.0.1.tar.xz/libobs/util/windows/CoTaskMemPtr.hpp -> obs-studio-25.0.2.tar.xz/libobs/util/windows/CoTaskMemPtr.hpp
Changed
@@ -39,6 +39,7 @@ { Clear(); ptr = val; + return *this; } inline T **operator&()
View file
obs-studio-25.0.1.tar.xz/plugins/linux-capture/xhelpers.c -> obs-studio-25.0.2.tar.xz/plugins/linux-capture/xhelpers.c
Changed
@@ -104,6 +104,22 @@ return true; } +static bool randr_has_monitors(xcb_connection_t *xcb) +{ + xcb_randr_query_version_cookie_t ver_c; + xcb_randr_query_version_reply_t *ver_r; + + ver_c = xcb_randr_query_version(xcb, XCB_RANDR_MAJOR_VERSION, + XCB_RANDR_MINOR_VERSION); + ver_r = xcb_randr_query_version_reply(xcb, ver_c, 0); + if (!ver_r) + return 0; + + bool ret = ver_r->major_version > 1 || ver_r->minor_version >= 5; + free(ver_r); + return ret; +} + int randr_screen_count(xcb_connection_t *xcb) { if (!xcb) @@ -111,6 +127,19 @@ xcb_screen_t *screen; screen = xcb_setup_roots_iterator(xcb_get_setup(xcb)).data; + if (randr_has_monitors(xcb)) { + xcb_randr_get_monitors_cookie_t mon_c; + xcb_randr_get_monitors_reply_t *mon_r; + + mon_c = xcb_randr_get_monitors(xcb, screen->root, true); + mon_r = xcb_randr_get_monitors_reply(xcb, mon_c, 0); + if (!mon_r) + return 0; + + int count = xcb_randr_get_monitors_monitors_length(mon_r); + free(mon_r); + return count; + } xcb_randr_get_screen_resources_cookie_t res_c; xcb_randr_get_screen_resources_reply_t *res_r; @@ -124,11 +153,58 @@ int randr_screen_geo(xcb_connection_t *xcb, int_fast32_t screen, int_fast32_t *x, int_fast32_t *y, int_fast32_t *w, - int_fast32_t *h, xcb_screen_t **rscreen) + int_fast32_t *h, xcb_screen_t **rscreen, char **name) { xcb_screen_t *xscreen; xscreen = xcb_setup_roots_iterator(xcb_get_setup(xcb)).data; + if (randr_has_monitors(xcb)) { + xcb_randr_get_monitors_cookie_t mon_c; + xcb_randr_get_monitors_reply_t *mon_r; + + mon_c = xcb_randr_get_monitors(xcb, xscreen->root, true); + mon_r = xcb_randr_get_monitors_reply(xcb, mon_c, 0); + if (!mon_r) + return 0; + + int monitors = xcb_randr_get_monitors_monitors_length(mon_r); + if (screen < 0 || screen >= monitors) { + free(mon_r); + goto fail; + } + + xcb_randr_monitor_info_iterator_t mon_i; + mon_i = xcb_randr_get_monitors_monitors_iterator(mon_r); + + int s; + for (s = 0; s < screen; s++) + xcb_randr_monitor_info_next(&mon_i); + + xcb_randr_monitor_info_t *mon = mon_i.data; + + *x = mon->x; + *y = mon->y; + *w = mon->width; + *h = mon->height; + if (rscreen) + *rscreen = xscreen; + + if (mon->name && name) { + xcb_get_atom_name_cookie_t atom_c; + xcb_get_atom_name_reply_t *atom_r; + + atom_c = xcb_get_atom_name(xcb, mon->name); + atom_r = xcb_get_atom_name_reply(xcb, atom_c, 0); + if (atom_r) { + *name = strndup( + xcb_get_atom_name_name(atom_r), + xcb_get_atom_name_name_length(atom_r)); + free(atom_r); + } + } + free(mon_r); + return 0; + } xcb_randr_get_screen_resources_cookie_t res_c; xcb_randr_get_screen_resources_reply_t *res_r;
View file
obs-studio-25.0.1.tar.xz/plugins/linux-capture/xhelpers.h -> obs-studio-25.0.2.tar.xz/plugins/linux-capture/xhelpers.h
Changed
@@ -94,7 +94,7 @@ */ int randr_screen_geo(xcb_connection_t *xcb, int_fast32_t screen, int_fast32_t *x, int_fast32_t *y, int_fast32_t *w, - int_fast32_t *h, xcb_screen_t **rscreen); + int_fast32_t *h, xcb_screen_t **rscreen, char **name); /** * Get screen geometry for a X11 screen
View file
obs-studio-25.0.1.tar.xz/plugins/linux-capture/xshm-input.c -> obs-studio-25.0.2.tar.xz/plugins/linux-capture/xshm-input.c
Changed
@@ -104,7 +104,7 @@ if (data->use_randr) { if (randr_screen_geo(data->xcb, data->screen_id, &data->x_org, &data->y_org, &data->width, &data->height, - &data->xcb_screen) < 0) { + &data->xcb_screen, NULL) < 0) { return -1; } } else if (data->use_xinerama) { @@ -308,21 +308,31 @@ : xcb_setup_roots_length(xcb_get_setup(xcb)); for (int_fast32_t i = 0; i < count; ++i) { + char *name; + char name_tmp[12]; int_fast32_t x, y, w, h; x = y = w = h = 0; + name = NULL; if (randr) - randr_screen_geo(xcb, i, &x, &y, &w, &h, NULL); + randr_screen_geo(xcb, i, &x, &y, &w, &h, NULL, &name); else if (xinerama) xinerama_screen_geo(xcb, i, &x, &y, &w, &h); else x11_screen_geo(xcb, i, &w, &h); + if (name == NULL) { + sprintf(name_tmp, "%" PRIuFAST32, i); + name = name_tmp; + } + dstr_printf(&screen_info, - "Screen %" PRIuFAST32 " (%" PRIuFAST32 - "x%" PRIuFAST32 " @ %" PRIuFAST32 ",%" PRIuFAST32 - ")", - i, w, h, x, y); + "Screen %s (%" PRIuFAST32 "x%" PRIuFAST32 + " @ %" PRIuFAST32 ",%" PRIuFAST32 ")", + name, w, h, x, y); + + if (name != name_tmp) + free(name); if (h > 0 && w > 0) obs_property_list_add_int(screens, screen_info.array,
View file
obs-studio-25.0.1.tar.xz/plugins/linux-v4l2/v4l2-controls.c -> obs-studio-25.0.2.tar.xz/plugins/linux-v4l2/v4l2-controls.c
Changed
@@ -98,6 +98,8 @@ memset(&qctrl, 0, sizeof(qctrl)); qctrl.id = V4L2_CTRL_FLAG_NEXT_CTRL; while (0 == v4l2_ioctl(dev, VIDIOC_QUERYCTRL, &qctrl)) { + qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL; + if (qctrl.flags & V4L2_CTRL_FLAG_DISABLED) { blog(LOG_INFO, "found control %s but it is disabled", qctrl.name); @@ -145,8 +147,6 @@ (char *)qctrl.name, qctrl.default_value); break; } - - qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL; } return 0;
View file
obs-studio-25.0.1.tar.xz/plugins/obs-filters/color-grade-filter.c -> obs-studio-25.0.2.tar.xz/plugins/obs-filters/color-grade-filter.c
Changed
@@ -329,7 +329,7 @@ obs_properties_t *props = obs_properties_create(); struct dstr filter_str = {0}; - dstr_cat(&filter_str, "(*.cube;*.png)"); + dstr_cat(&filter_str, "(*.cube *.png)"); if (s && s->file && *s->file) { dstr_copy(&path, s->file);
View file
obs-studio-25.0.1.tar.xz/plugins/obs-qsv11/QSV_Encoder.h -> obs-studio-25.0.2.tar.xz/plugins/obs-qsv11/QSV_Encoder.h
Changed
@@ -74,17 +74,10 @@ {"AVBR", false}, {"ICQ", true}, {"LA_ICQ", true}, {"LA_CBR", true}, {"LA_VBR", true}, {0, false}}; static const char *const qsv_profile_names[] = {"high", "main", "baseline", 0}; -static const char *const qsv_usage_names[] = {"quality", - "balanced", - "speed", - "veryslow", - "slower", - "slow", - "medium", - "fast", - "faster" - "veryfast", - 0}; +static const char *const qsv_usage_names[] = {"quality", "balanced", "speed", + "veryslow", "slower", "slow", + "medium", "fast", "faster", + "veryfast", 0}; typedef struct qsv_t qsv_t;
View file
obs-studio-25.0.1.tar.xz/plugins/win-wasapi/win-wasapi.cpp -> obs-studio-25.0.2.tar.xz/plugins/win-wasapi/win-wasapi.cpp
Changed
@@ -319,11 +319,15 @@ resSample = store->GetValue(PKEY_AudioEngine_DeviceFormat, &prop); if (!FAILED(resSample)) { - deviceFormatProperties = - (PWAVEFORMATEX)prop.blob.pBlobData; - device_sample = std::to_string( - deviceFormatProperties->nSamplesPerSec); + if (prop.vt != VT_EMPTY && prop.blob.pBlobData) { + deviceFormatProperties = + (PWAVEFORMATEX)prop.blob.pBlobData; + device_sample = std::to_string( + deviceFormatProperties->nSamplesPerSec); + } } + + store->Release(); } InitClient();
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
.