Overview
Request 4187 (accepted)
- Update to version 21.0.3:
* libobs: Update to version 21.0.3 (mac update)
* libobs: Log YUV space/range on video reset
* obs-filters: Clear unused parameter warning
* libobs/util: Cache windows CPU frequency
* rtmp-services: Add SermonAudio to services list
* libobs-opengl: Log adapter and driver info
* obs-ffmpeg: Add speed percentage option
* deps/media-playback: Use a struct for media init data
* UI: Remove __FUNCTION__ usage
* UI: Import scene collection with correct filename
* obs-vst: Add layout to QMacCocoaViewContainer (update submodule)
* UI: Link Qt5::MacExtras
* obs-vst: Link Qt5::MacExtras (update submodule)
* libobs/media-io: Change speaker layout to match FFmpeg aac.
* CI: Include style plugins when packaging on OSX
* CI: Comment out OSX _obspython copy (not ready yet)
* deps/obs-scripting: Fix cur. script being NULL for script_tick
* deps/obs-scripting: Allow NULL script with script_log
* UI: Fix grayed out Copy option in sources context menu
* CI: Don't install python for OSX
* cmake: Fix LuaJIT search
* CI: Add rpath info to _obspython
* CI: Move obspython.so so it can be found in a .app
* CI: Update python rpath on osx
* CI: Make sure that lua can find obslua
* CI: Fetch RVM gpg key on osx
* CI: Fix a ruby issue on travis OSX
* CI: Update OSX deps build scripts
- Created by boombatower about 7 years ago
- In state accepted
-
Package maintainers:
boombatower,
darix, and
frispete
obs-studio.changes
Changed
-------------------------------------------------------------------
+Wed Feb 21 20:31:20 UTC 2018 - jimmy@boombatower.com
+
+- Update to version 21.0.3:
+ * libobs: Update to version 21.0.3 (mac update)
+ * libobs: Log YUV space/range on video reset
+ * obs-filters: Clear unused parameter warning
+ * libobs/util: Cache windows CPU frequency
+ * rtmp-services: Add SermonAudio to services list
+ * libobs-opengl: Log adapter and driver info
+ * obs-ffmpeg: Add speed percentage option
+ * deps/media-playback: Use a struct for media init data
+ * UI: Remove __FUNCTION__ usage
+ * UI: Import scene collection with correct filename
+ * obs-vst: Add layout to QMacCocoaViewContainer (update submodule)
+ * UI: Link Qt5::MacExtras
+ * obs-vst: Link Qt5::MacExtras (update submodule)
+ * libobs/media-io: Change speaker layout to match FFmpeg aac.
+ * CI: Include style plugins when packaging on OSX
+ * CI: Comment out OSX _obspython copy (not ready yet)
+ * deps/obs-scripting: Fix cur. script being NULL for script_tick
+ * deps/obs-scripting: Allow NULL script with script_log
+ * UI: Fix grayed out Copy option in sources context menu
+ * CI: Don't install python for OSX
+ * cmake: Fix LuaJIT search
+ * CI: Add rpath info to _obspython
+ * CI: Move obspython.so so it can be found in a .app
+ * CI: Update python rpath on osx
+ * CI: Make sure that lua can find obslua
+ * CI: Fetch RVM gpg key on osx
+ * CI: Fix a ruby issue on travis OSX
+ * CI: Update OSX deps build scripts
+
+-------------------------------------------------------------------
Thu Jan 25 19:16:58 UTC 2018 - jimmy@boombatower.com
- Update to version 21.0.2:
obs-studio.spec
Changed
Name: obs-studio
-Version: 21.0.2
+Version: 21.0.3
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/21.0.2</param>
+ <param name="revision">refs/tags/21.0.3</param>
<param name="url">git://github.com/jp9000/obs-studio.git</param>
<param name="scm">git</param>
<param name="changesgenerate">enable</param>
_servicedata
Changed
<servicedata>
<service name="tar_scm">
<param name="url">git://github.com/jp9000/obs-studio.git</param>
- <param name="changesrevision">6ed55995048951cd36be8b1253de3f251ccb9d80</param>
+ <param name="changesrevision">90692c9791ed33648b40916fa353aa3f2df35f2f</param>
</service>
</servicedata>
obs-studio-21.0.2.tar.xz/CI/before-deploy-osx.sh -> obs-studio-21.0.3.tar.xz/CI/before-deploy-osx.sh
Changed
mv ./rundir/RelWithDebInfo/obs-plugins/CEF.app ./
mv ./rundir/RelWithDebInfo/obs-plugins/obs-browser.so ./
+# Move obslua
+hr "Moving OBS LUA"
+mv ./rundir/RelWithDebInfo/data/obs-scripting/obslua.so ./rundir/RelWithDebInfo/bin/
+
+# Move obspython
+# hr "Moving OBS Python"
+# mv ./rundir/RelWithDebInfo/data/obs-scripting/_obspython.so ./rundir/RelWithDebInfo/bin/
+# mv ./rundir/RelWithDebInfo/data/obs-scripting/obspython.py ./rundir/RelWithDebInfo/bin/
+
# Package everything into a nice .app
hr "Packaging .app"
STABLE=false
obs-studio-21.0.2.tar.xz/CI/before-script-osx.sh -> obs-studio-21.0.3.tar.xz/CI/before-script-osx.sh
Changed
mkdir build
cd build
-cmake -DPYTHON_LIBRARY=/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/libpython3.6.dylib -DPYTHON_INCLUDE_DIR=/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/include/python3.6m -DENABLE_SPARKLE_UPDATER=ON -DCMAKE_OSX_DEPLOYMENT_TARGET=10.10 -DDepsPath=/tmp/obsdeps -DVLCPath=$PWD/../../vlc-master -DBUILD_BROWSER=ON -DCEF_ROOT_DIR=$PWD/../../cef_binary_${CEF_BUILD_VERSION}_macosx64 ..
\ No newline at end of file
+cmake -DENABLE_SPARKLE_UPDATER=ON \
+-DCMAKE_OSX_DEPLOYMENT_TARGET=10.10 \
+-DDepsPath=/tmp/obsdeps \
+-DVLCPath=$PWD/../../vlc-master \
+-DBUILD_BROWSER=ON \
+-DCEF_ROOT_DIR=$PWD/../../cef_binary_${CEF_BUILD_VERSION}_macosx64 ..
\ No newline at end of file
obs-studio-21.0.2.tar.xz/CI/install-dependencies-osx.sh -> obs-studio-21.0.3.tar.xz/CI/install-dependencies-osx.sh
Changed
brew update
#Base OBS Deps and ccache
-brew install qt5 jack speexdsp ccache python3 swig luajit
+brew install qt5 jack speexdsp ccache swig
export PATH=/usr/local/opt/ccache/libexec:$PATH
ccache -s || echo "CCache is not available."
obs-studio-21.0.2.tar.xz/CI/install/osx/build_app.py -> obs-studio-21.0.3.tar.xz/CI/install/osx/build_app.py
Changed
#!/usr/bin/env python
-
+
candidate_paths = "bin obs-plugins data".split()
-
+
plist_path = "../cmake/osxbundle/Info.plist"
icon_path = "../cmake/osxbundle/obs.icns"
run_path = "../cmake/osxbundle/obslaunch.sh"
-
+
#not copied
blacklist = """/usr /System""".split()
-
+
#copied
whitelist = """/usr/local""".split()
-
+
#
#
#
-
-
+
+
from sys import argv
from glob import glob
from subprocess import check_output, call
raise ValueError('Need bool; got %r' % s)
return {'true': True, 'false': False}[s.lower()]
-def add_boolean_argument(parser, name, default=False):
+def add_boolean_argument(parser, name, default=False):
"""Add a boolean argument to an ArgumentParser instance."""
group = parser.add_mutually_exclusive_group()
group.add_argument(
return subprocess.check_output(shlex.split(cmd)).rstrip('\r\n')
LibTarget = namedtuple("LibTarget", ("path", "external", "copy_as"))
-
+
inspect = list()
-
+
inspected = set()
-
+
build_path = args.dir
build_path = build_path.replace("\\ ", " ")
-
+
def add(name, external=False, copy_as=None):
if external and copy_as is None:
copy_as = name.split("/")[-1]
rel_path = path[len(build_path)+1:]
print(repr(path), repr(rel_path))
add(rel_path)
-
+
def add_plugins(path, replace):
for img in glob(path.replace(
"lib/QtCore.framework/Versions/5/QtCore",
continue
out = check_output("{0}otool -L '{1}'".format(args.prefix, path), shell=True,
universal_newlines=True)
-
+
if "QtCore" in path:
add_plugins(path, "platforms")
add_plugins(path, "imageformats")
add_plugins(path, "accessible")
-
-
+ add_plugins(path, "styles")
+
+
for line in out.split("\n")[1:]:
new = line.strip().split(" (")[0]
if '@' in new and "sparkle.framework" in new.lower():
filename = path
rpath = ""
if external:
+ if copy_as == "Python":
+ continue
id_ = "-id '@rpath/%s'"%copy_as
filename = prefix + "bin/" +copy_as
rpath = "-add_rpath @loader_path/ -add_rpath @executable_path/"
print(filename)
rpath = "-add_rpath '@loader_path/{}/'".format(ospath.relpath("bin/", ospath.dirname(filename)))
filename = prefix + filename
-
+
cmd = "{0}install_name_tool {1} {2} {3} '{4}'".format(args.prefix, changes, id_, rpath, filename)
call(cmd, shell=True)
obs-studio-21.0.2.tar.xz/CI/util/build-package-deps-osx.sh -> obs-studio-21.0.3.tar.xz/CI/util/build-package-deps-osx.sh
Changed
#!/usr/bin/env bash
+exists()
+{
+ command -v "$1" >/dev/null 2>&1
+}
+
+if ! exists nasm; then
+ echo "nasm not found. Try brew install nasm"
+ exit
+fi
+
CURDIR=$(pwd)
# the temp directory
mkdir $DEPS_DEST
mkdir $DEPS_DEST/bin
mkdir $DEPS_DEST/include
+mkdir $DEPS_DEST/lib
# OSX COMPAT
export MACOSX_DEPLOYMENT_TARGET=10.9
# x264
git clone git://git.videolan.org/x264.git
cd ./x264
+git checkout origin/stable
mkdir build
cd ./build
../configure --extra-ldflags="-mmacosx-version-min=10.9" --enable-static --prefix="/tmp/obsdeps"
cd ./FFmpeg-n3.2.2
mkdir build
cd ./build
-../configure --extra-ldflags="-mmacosx-version-min=10.9" --enable-shared --disable-static --shlibdir="/tmp/obsdeps/bin" --enable-gpl --disable-doc --enable-libx264 --enable-libopus --enable-libvorbis --enable-libvpx
+../configure --extra-ldflags="-mmacosx-version-min=10.9" --enable-shared --disable-static --shlibdir="/tmp/obsdeps/bin" --enable-gpl --disable-doc --enable-libx264 --enable-libopus --enable-libvorbis --enable-libvpx --disable-outdev=sdl
make -j 12
find . -name \*.dylib -exec cp \{\} $DEPS_DEST/bin/ \;
rsync -avh --include="*/" --include="*.h" --exclude="*" ../* $DEPS_DEST/include/
rsync -avh --include="*/" --include="*.h" --exclude="*" ./* $DEPS_DEST/include/
+#luajit
+curl -L -O https://luajit.org/download/LuaJIT-2.0.5.tar.gz
+tar -xf LuaJIT-2.0.5.tar.gz
+cd LuaJIT-2.0.5
+make PREFIX=/tmp/obsdeps
+make PREFIX=/tmp/obsdeps install
+find /tmp/obsdeps/lib -name libluajit\*.dylib -exec cp \{\} $DEPS_DEST/lib/ \;
+rsync -avh --include="*/" --include="*.h" --exclude="*" src/* $DEPS_DEST/include/
+make PREFIX=/tmp/obsdeps uninstall
+
cd $WORK_DIR
tar -czf osx-deps.tar.gz obsdeps
obs-studio-21.0.2.tar.xz/UI/CMakeLists.txt -> obs-studio-21.0.3.tar.xz/UI/CMakeLists.txt
Changed
find_package(Qt5Widgets ${FIND_MODE})
find_package(FFmpeg REQUIRED COMPONENTS avcodec avutil avformat)
+if(APPLE)
+ find_package(Qt5MacExtras REQUIRED)
+endif(APPLE)
+
if(NOT Qt5Widgets_FOUND)
if (ENABLE_UI)
message(FATAL_ERROR "Failed to find Qt5")
${obs_PLATFORM_LIBRARIES})
if (APPLE)
+ target_link_libraries(obs
+ Qt5::MacExtras)
set_target_properties(obs PROPERTIES LINK_FLAGS "-pagezero_size 10000 -image_base 100000000")
set_property(
TARGET obs
APPEND
PROPERTY INSTALL_RPATH
- "/usr/local/Cellar/python3/3.6.4/Frameworks/Python.framework/Versions/3.6/lib/"
+ "/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/"
"/Library/Frameworks/Python.framework/Versions/3.6/lib/"
"/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/"
)
obs-studio-21.0.2.tar.xz/UI/forms/OBSBasic.ui -> obs-studio-21.0.3.tar.xz/UI/forms/OBSBasic.ui
Changed
<addaction name="actionScaleCanvas"/>
<addaction name="actionScaleOutput"/>
</widget>
- <action name="actionCopySource">
- <property name="enabled">
- <bool>false</bool>
- </property>
+ <action name="actionCopySource">
<property name="text">
<string>Copy</string>
</property>
obs-studio-21.0.2.tar.xz/UI/frontend-plugins/frontend-tools/scripts.cpp -> obs-studio-21.0.3.tar.xz/UI/frontend-plugins/frontend-tools/scripts.cpp
Changed
const char *message)
{
QString qmsg;
- qmsg = QStringLiteral("[%1] %2").arg(
- obs_script_get_file(script),
- message);
+
+ if (script) {
+ qmsg = QStringLiteral("[%1] %2").arg(
+ obs_script_get_file(script),
+ message);
+ } else {
+ qmsg = QStringLiteral("[Unknown Script] %1").arg(message);
+ }
QMetaObject::invokeMethod(scriptLogWindow, "AddLogMsg",
Q_ARG(int, log_level),
obs-studio-21.0.2.tar.xz/UI/window-basic-main-scene-collections.cpp -> obs-studio-21.0.3.tar.xz/UI/window-basic-main-scene-collections.cpp
Changed
{
char path[512];
- QString home = QDir::homePath();
+ QString qhome = QDir::homePath();
int ret = GetConfigPath(path, 512, "obs-studio/basic/scenes/");
if (ret <= 0) {
return;
}
- QString file = QFileDialog::getOpenFileName(
+ QString qfilePath = QFileDialog::getOpenFileName(
this,
QTStr("Basic.MainMenu.SceneCollection.Import"),
- home,
+ qhome,
"JSON Files (*.json)");
- QFileInfo finfo(file);
- QString filename = finfo.fileName();
- QFileInfo destinfo(path + filename);
-
- if (!file.isEmpty() && !file.isNull()) {
- if (!destinfo.exists()) {
- QFile::copy(file, path + filename);
- RefreshSceneCollections();
- } else {
- OBSMessageBox::information(this,
- QTStr("Basic.MainMenu.SceneCollection.Import"),
- QTStr("Basic.MainMenu.SceneCollection.Exists"));
+ QFileInfo finfo(qfilePath);
+ QString qfilename = finfo.fileName();
+ QString qpath = QT_UTF8(path);
+ QFileInfo destinfo(QT_UTF8(path) + qfilename);
+
+ if (!qfilePath.isEmpty() && !qfilePath.isNull()) {
+ string absPath = QT_TO_UTF8(finfo.absoluteFilePath());
+ OBSData scenedata =
+ obs_data_create_from_json_file(absPath.c_str());
+ obs_data_release(scenedata);
+
+ string origName = obs_data_get_string(scenedata, "name");
+ string name = origName;
+ string file;
+ int inc = 1;
+
+ while (SceneCollectionExists(name.c_str())) {
+ name = origName + " (" + to_string(++inc) + ")";
}
+
+ obs_data_set_string(scenedata, "name", name.c_str());
+
+ if (!GetFileSafeName(name.c_str(), file)) {
+ blog(LOG_WARNING, "Failed to create "
+ "safe file name for '%s'",
+ name.c_str());
+ return;
+ }
+
+ string filePath = path + file;
+
+ if (!GetClosestUnusedFileName(filePath, "json")) {
+ blog(LOG_WARNING, "Failed to get "
+ "closest file name for %s",
+ file.c_str());
+ return;
+ }
+
+ obs_data_save_json_safe(scenedata, filePath.c_str(),
+ "tmp", "bak");
+ RefreshSceneCollections();
}
}
obs-studio-21.0.2.tar.xz/UI/window-basic-main.cpp -> obs-studio-21.0.3.tar.xz/UI/window-basic-main.cpp
Changed
QMetaObject::invokeMethod(window, "SelectSceneItem",
Q_ARG(OBSScene, scene), Q_ARG(OBSSceneItem, item),
Q_ARG(bool, true));
-
- window->ui->actionCopySource->setEnabled(true);
}
void OBSBasic::SceneItemDeselected(void *data, calldata_t *params)
Q_ARG(OBSScene, scene), Q_ARG(OBSSceneItem, item),
Q_ARG(bool, false));
- window->ui->actionCopySource->setEnabled(false);
}
void OBSBasic::SourceLoaded(void *data, obs_source_t *source)
popup.addMenu(addSourceMenu);
ui->actionCopyFilters->setEnabled(false);
+ ui->actionCopySource->setEnabled(false);
popup.addSeparator();
popup.addAction(ui->actionCopySource);
SLOT(on_actionSourceProperties_triggered()));
ui->actionCopyFilters->setEnabled(true);
+ ui->actionCopySource->setEnabled(true);
}
popup.exec(QCursor::pos());
obs-studio-21.0.2.tar.xz/cmake/Modules/FindLuajit.cmake -> obs-studio-21.0.3.tar.xz/cmake/Modules/FindLuajit.cmake
Changed
ENDIF()
FIND_PATH(LUAJIT_INCLUDE_DIR
- NAMES lua.h
+ NAMES lua.h lualib.h
HINTS
ENV LuajitPath${_LIB_SUFFIX}
ENV LuajitPath
obs-studio-21.0.2.tar.xz/deps/media-playback/media-playback/decode.c -> obs-studio-21.0.3.tar.xz/deps/media-playback/media-playback/decode.c
Changed
d->stream->time_base,
(AVRational){1, 1000000000});
+ if (d->m->speed != 100) {
+ d->frame_pts = av_rescale_q(d->frame_pts,
+ (AVRational){1, d->m->speed},
+ (AVRational){1, 100});
+ duration = av_rescale_q(duration,
+ (AVRational){1, d->m->speed},
+ (AVRational){1, 100});
+ }
+
d->last_duration = duration;
d->next_pts = d->frame_pts + duration;
}
obs-studio-21.0.2.tar.xz/deps/media-playback/media-playback/media.c -> obs-studio-21.0.3.tar.xz/deps/media-playback/media-playback/media.c
Changed
for (size_t i = 0; i < MAX_AV_PLANES; i++)
audio.data[i] = f->data[i];
- audio.samples_per_sec = f->sample_rate;
+ audio.samples_per_sec = f->sample_rate * m->speed / 100;
audio.speakers = convert_speaker_layout(f->channels);
audio.format = convert_sample_format(f->format);
audio.frames = f->nb_samples;
}
static inline bool mp_media_init_internal(mp_media_t *m,
- const char *path,
- const char *format_name,
- bool hw)
+ const struct mp_media_info *info)
{
if (pthread_mutex_init(&m->mutex, NULL) != 0) {
blog(LOG_WARNING, "MP: Failed to init mutex");
return false;
}
- m->path = path ? bstrdup(path) : NULL;
- m->format_name = format_name ? bstrdup(format_name) : NULL;
- m->hw = hw;
+ m->path = info->path ? bstrdup(info->path) : NULL;
+ m->format_name = info->format ? bstrdup(info->format) : NULL;
+ m->hw = info->hardware_decoding;
if (pthread_create(&m->thread, NULL, mp_media_thread_start, m) != 0) {
blog(LOG_WARNING, "MP: Could not create media thread");
return true;
}
-bool mp_media_init(mp_media_t *media,
- const char *path,
- const char *format,
- int buffering,
- void *opaque,
- mp_video_cb v_cb,
- mp_audio_cb a_cb,
- mp_stop_cb stop_cb,
- mp_video_cb v_preload_cb,
- bool hw_decoding,
- bool is_local_file,
- enum video_range_type force_range)
+bool mp_media_init(mp_media_t *media, const struct mp_media_info *info)
{
memset(media, 0, sizeof(*media));
pthread_mutex_init_value(&media->mutex);
- media->opaque = opaque;
- media->v_cb = v_cb;
- media->a_cb = a_cb;
- media->stop_cb = stop_cb;
- media->v_preload_cb = v_preload_cb;
- media->force_range = force_range;
- media->buffering = buffering;
- media->is_local_file = is_local_file;
+ media->opaque = info->opaque;
+ media->v_cb = info->v_cb;
+ media->a_cb = info->a_cb;
+ media->stop_cb = info->stop_cb;
+ media->v_preload_cb = info->v_preload_cb;
+ media->force_range = info->force_range;
+ media->buffering = info->buffering;
+ media->speed = info->speed;
+ media->is_local_file = info->is_local_file;
+
+ if (!info->is_local_file || media->speed < 1 || media->speed > 200)
+ media->speed = 100;
static bool initialized = false;
if (!initialized) {
if (!base_sys_ts)
base_sys_ts = (int64_t)os_gettime_ns();
- if (!mp_media_init_internal(media, path, format, hw_decoding)) {
+ if (!mp_media_init_internal(media, info)) {
mp_media_free(media);
return false;
}
obs-studio-21.0.2.tar.xz/deps/media-playback/media-playback/media.h -> obs-studio-21.0.3.tar.xz/deps/media-playback/media-playback/media.h
Changed
char *path;
char *format_name;
int buffering;
+ int speed;
enum AVPixelFormat scale_format;
struct SwsContext *swscale;
typedef struct mp_media mp_media_t;
-extern bool mp_media_init(mp_media_t *media,
- const char *path,
- const char *format,
- int buffering,
- void *opaque,
- mp_video_cb v_cb,
- mp_audio_cb a_cb,
- mp_stop_cb stop_cb,
- mp_video_cb v_preload_cb,
- bool hardware_decoding,
- bool is_local_file,
- enum video_range_type force_range);
+struct mp_media_info {
+ void *opaque;
+
+ mp_video_cb v_cb;
+ mp_video_cb v_preload_cb;
+ mp_audio_cb a_cb;
+ mp_stop_cb stop_cb;
+
+ const char *path;
+ const char *format;
+ int buffering;
+ int speed;
+ enum video_range_type force_range;
+ bool hardware_decoding;
+ bool is_local_file;
+};
+
+extern bool mp_media_init(mp_media_t *media, const struct mp_media_info *info);
extern void mp_media_free(mp_media_t *media);
extern void mp_media_play(mp_media_t *media, bool loop);
obs-studio-21.0.2.tar.xz/deps/obs-scripting/obs-scripting-logging.c -> obs-studio-21.0.3.tar.xz/deps/obs-scripting/obs-scripting-logging.c
Changed
const char *lang = "(Unknown)";
size_t start_len;
- switch (script->type) {
- case OBS_SCRIPT_LANG_UNKNOWN: lang = "(Unknown language)"; break;
- case OBS_SCRIPT_LANG_LUA: lang = "Lua"; break;
- case OBS_SCRIPT_LANG_PYTHON: lang = "Python"; break;
+ if (script) {
+ switch (script->type) {
+ case OBS_SCRIPT_LANG_UNKNOWN: lang = "(Unknown language)"; break;
+ case OBS_SCRIPT_LANG_LUA: lang = "Lua"; break;
+ case OBS_SCRIPT_LANG_PYTHON: lang = "Python"; break;
+ }
+
+ start_len = snprintf(msg, sizeof(msg), "[%s: %s] ",
+ lang, script->file.array);
+ } else {
+ start_len = snprintf(msg, sizeof(msg), "[Unknown Script] ");
}
- start_len = snprintf(msg, sizeof(msg), "[%s: %s] ",
- lang, script->file.array);
vsnprintf(msg + start_len, sizeof(msg) - start_len, format, args);
if (callback)
obs-studio-21.0.2.tar.xz/deps/obs-scripting/obs-scripting-lua.c -> obs-studio-21.0.3.tar.xz/deps/obs-scripting/obs-scripting-lua.c
Changed
data = first_tick_script;
while (data) {
lua_State *script = data->script;
+ current_lua_script = data;
pthread_mutex_lock(&data->mutex);
data = data->next_tick;
}
+ current_lua_script = NULL;
pthread_mutex_unlock(&tick_mutex);
/* --------------------------------- */
obs-studio-21.0.2.tar.xz/deps/obs-scripting/obs-scripting-python.c -> obs-studio-21.0.3.tar.xz/deps/obs-scripting/obs-scripting-python.c
Changed
while (endl) {
*endl = 0;
- script_log(&cur_python_script->base, log_level, "%s", start);
+ if (cur_python_script)
+ script_log(&cur_python_script->base, log_level, "%s",
+ start);
+ else
+ script_log(NULL, log_level, "%s", start);
*endl = '\n';
start = endl + 1;
obs-studio-21.0.2.tar.xz/deps/obs-scripting/obspython/CMakeLists.txt -> obs-studio-21.0.3.tar.xz/deps/obs-scripting/obspython/CMakeLists.txt
Changed
set_target_properties(${additional_target} PROPERTIES
PREFIX "")
+ if (APPLE)
+ set_property(
+ TARGET ${additional_target}
+ APPEND
+ PROPERTY INSTALL_RPATH
+ "/usr/local/Cellar/python3/3.6.4_2/Frameworks/Python.framework/Versions/3.6/lib/"
+ "/Library/Frameworks/Python.framework/Versions/3.6/lib/"
+ "/opt/local/Library/Frameworks/Python.framework/Versions/3.6/lib/"
+ )
+ endif()
+
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/obspython.py"
DESTINATION "${OBS_SCRIPT_PLUGIN_DESTINATION}")
install(TARGETS "${additional_target}"
obs-studio-21.0.2.tar.xz/libobs-opengl/gl-subsystem.c -> obs-studio-21.0.3.tar.xz/libobs-opengl/gl-subsystem.c
Changed
if (!device->plat)
goto fail;
+ const char *glVendor = (const char *)glGetString(GL_VENDOR);
+ const char *glRenderer = (const char *)glGetString(GL_RENDERER);
+
+ blog(LOG_INFO, "Loading up OpenGL on adapter %s %s", glVendor,
+ glRenderer);
+
if (!gl_init_extensions(device)) {
errorcode = GS_ERROR_NOT_SUPPORTED;
goto fail;
}
- blog(LOG_INFO, "OpenGL version: %s", glGetString(GL_VERSION));
-
+ const char *glVersion = (const char *)glGetString(GL_VERSION);
+ const char *glShadingLanguage = (const char *)glGetString(
+ GL_SHADING_LANGUAGE_VERSION);
+
+ blog(LOG_INFO, "OpenGL loaded successfully, version %s, shading "
+ "language %s", glVersion, glShadingLanguage);
+
gl_enable(GL_CULL_FACE);
device_leave_context(device);
obs-studio-21.0.2.tar.xz/libobs/media-io/audio-resampler-ffmpeg.c -> obs-studio-21.0.3.tar.xz/libobs/media-io/audio-resampler-ffmpeg.c
Changed
case SPEAKERS_UNKNOWN: return 0;
case SPEAKERS_MONO: return AV_CH_LAYOUT_MONO;
case SPEAKERS_STEREO: return AV_CH_LAYOUT_STEREO;
- case SPEAKERS_2POINT1: return AV_CH_LAYOUT_2_1;
+ case SPEAKERS_2POINT1: return AV_CH_LAYOUT_SURROUND;
case SPEAKERS_4POINT0: return AV_CH_LAYOUT_4POINT0;
case SPEAKERS_4POINT1: return AV_CH_LAYOUT_4POINT1;
- case SPEAKERS_5POINT1: return AV_CH_LAYOUT_5POINT1;
+ case SPEAKERS_5POINT1: return AV_CH_LAYOUT_5POINT1_BACK;
case SPEAKERS_7POINT1: return AV_CH_LAYOUT_7POINT1;
}
obs-studio-21.0.2.tar.xz/libobs/media-io/video-io.h -> obs-studio-21.0.3.tar.xz/libobs/media-io/video-io.h
Changed
return "None";
}
+static inline const char *get_video_colorspace_name(enum video_colorspace cs)
+{
+ switch (cs) {
+ case VIDEO_CS_709: return "709";
+ case VIDEO_CS_601:
+ case VIDEO_CS_DEFAULT:;
+ }
+
+ return "601";
+}
+
+static inline const char *get_video_range_name(enum video_range_type range)
+{
+ switch (range) {
+ case VIDEO_RANGE_FULL: return "Full";
+ case VIDEO_RANGE_PARTIAL:
+ case VIDEO_RANGE_DEFAULT:;
+ }
+
+ return "Partial";
+}
+
enum video_scale_type {
VIDEO_SCALE_DEFAULT,
VIDEO_SCALE_POINT,
obs-studio-21.0.2.tar.xz/libobs/obs-config.h -> obs-studio-21.0.3.tar.xz/libobs/obs-config.h
Changed
*
* Reset to zero each major or minor version
*/
-#define LIBOBS_API_PATCH_VER 2
+#define LIBOBS_API_PATCH_VER 3
#define MAKE_SEMANTIC_VERSION(major, minor, patch) \
((major << 24) | \
obs-studio-21.0.2.tar.xz/libobs/obs.c -> obs-studio-21.0.3.tar.xz/libobs/obs.c
Changed
break;
}
+ bool yuv = format_is_yuv(ovi->output_format);
+ const char *yuv_format = get_video_colorspace_name(ovi->colorspace);
+ const char *yuv_range = get_video_range_name(ovi->range);
+
blog(LOG_INFO, "---------------------------------");
blog(LOG_INFO, "video settings reset:\n"
"\tbase resolution: %dx%d\n"
"\toutput resolution: %dx%d\n"
"\tdownscale filter: %s\n"
"\tfps: %d/%d\n"
- "\tformat: %s",
+ "\tformat: %s\n"
+ "\tYUV mode: %s%s%s",
ovi->base_width, ovi->base_height,
ovi->output_width, ovi->output_height,
scale_type_name,
ovi->fps_num, ovi->fps_den,
- get_video_format_name(ovi->output_format));
+ get_video_format_name(ovi->output_format),
+ yuv ? yuv_format : "None",
+ yuv ? "/" : "",
+ yuv ? yuv_range : "");
return obs_init_video(ovi);
}
obs-studio-21.0.2.tar.xz/libobs/util/platform-windows.c -> obs-studio-21.0.3.tar.xz/libobs/util/platform-windows.c
Changed
static inline uint64_t get_clockfreq(void)
{
- if (!have_clockfreq)
+ if (!have_clockfreq) {
QueryPerformanceFrequency(&clock_freq);
+ have_clockfreq = true;
+ }
+
return clock_freq.QuadPart;
}
obs-studio-21.0.2.tar.xz/plugins/obs-ffmpeg/data/locale/en-US.ini -> obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/data/locale/en-US.ini
Changed
ColorRange.Partial="Partial"
ColorRange.Full="Full"
RestartMedia="Restart Media"
+SpeedPercentage="Speed (perecent)"
Seekable="Seekable"
MediaFileFilter.AllMediaFiles="All Media Files"
obs-studio-21.0.2.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c -> obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c
Changed
case SPEAKERS_UNKNOWN: return 0;
case SPEAKERS_MONO: return AV_CH_LAYOUT_MONO;
case SPEAKERS_STEREO: return AV_CH_LAYOUT_STEREO;
- case SPEAKERS_2POINT1: return AV_CH_LAYOUT_2_1;
+ case SPEAKERS_2POINT1: return AV_CH_LAYOUT_SURROUND;
case SPEAKERS_4POINT0: return AV_CH_LAYOUT_4POINT0;
case SPEAKERS_4POINT1: return AV_CH_LAYOUT_4POINT1;
- case SPEAKERS_5POINT1: return AV_CH_LAYOUT_5POINT1;
+ case SPEAKERS_5POINT1: return AV_CH_LAYOUT_5POINT1_BACK;
case SPEAKERS_7POINT1: return AV_CH_LAYOUT_7POINT1;
}
switch (channel_layout) {
case AV_CH_LAYOUT_MONO: return SPEAKERS_MONO;
case AV_CH_LAYOUT_STEREO: return SPEAKERS_STEREO;
- case AV_CH_LAYOUT_2_1: return SPEAKERS_2POINT1;
+ case AV_CH_LAYOUT_SURROUND: return SPEAKERS_2POINT1;
case AV_CH_LAYOUT_4POINT0: return SPEAKERS_4POINT0;
case AV_CH_LAYOUT_4POINT1: return SPEAKERS_4POINT1;
- case AV_CH_LAYOUT_5POINT1: return SPEAKERS_5POINT1;
+ case AV_CH_LAYOUT_5POINT1_BACK: return SPEAKERS_5POINT1;
case AV_CH_LAYOUT_7POINT1: return SPEAKERS_7POINT1;
}
obs-studio-21.0.2.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-source.c -> obs-studio-21.0.3.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg-source.c
Changed
char *input;
char *input_format;
int buffering_mb;
+ int speed_percent;
bool is_looping;
bool is_local_file;
bool is_hw_decoding;
obs_property_t *buffering = obs_properties_get(props, "buffering_mb");
obs_property_t *close = obs_properties_get(props, "close_when_inactive");
obs_property_t *seekable = obs_properties_get(props, "seekable");
+ obs_property_t *speed = obs_properties_get(props, "speed_percent");
obs_property_set_visible(input, !enabled);
obs_property_set_visible(input_format, !enabled);
obs_property_set_visible(buffering, !enabled);
obs_property_set_visible(close, enabled);
obs_property_set_visible(local_file, enabled);
obs_property_set_visible(looping, enabled);
+ obs_property_set_visible(speed, enabled);
obs_property_set_visible(seekable, !enabled);
return true;
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);
}
static const char *media_filter =
obs_property_set_long_description(prop,
obs_module_text("CloseFileWhenInactive.ToolTip"));
+ obs_properties_add_int_slider(props, "speed_percent",
+ obs_module_text("SpeedPercentage"), 1, 200, 1);
+
prop = obs_properties_add_list(props, "color_range",
obs_module_text("ColorRange"), OBS_COMBO_TYPE_LIST,
OBS_COMBO_FORMAT_INT);
"settings:\n"
"\tinput: %s\n"
"\tinput_format: %s\n"
+ "\tspeed: %d\n"
"\tis_looping: %s\n"
"\tis_hw_decoding: %s\n"
"\tis_clear_on_media_end: %s\n"
"\tclose_when_inactive: %s",
input ? input : "(null)",
input_format ? input_format : "(null)",
+ s->speed_percent,
s->is_looping ? "yes" : "no",
s->is_hw_decoding ? "yes" : "no",
s->is_clear_on_media_end ? "yes" : "no",
static void ffmpeg_source_open(struct ffmpeg_source *s)
{
- if (s->input && *s->input)
- s->media_valid = mp_media_init(&s->media,
- s->input, s->input_format,
- s->buffering_mb * 1024 * 1024,
- s, get_frame, get_audio, media_stopped,
- preload_frame,
- s->is_hw_decoding,
- s->is_local_file || s->seekable,
- s->range);
+ if (s->input && *s->input) {
+ struct mp_media_info info = {
+ .opaque = s,
+ .v_cb = get_frame,
+ .v_preload_cb = preload_frame,
+ .a_cb = get_audio,
+ .stop_cb = media_stopped,
+ .path = s->input,
+ .format = s->input_format,
+ .buffering = s->buffering_mb * 1024 * 1024,
+ .speed = s->speed_percent,
+ .force_range = s->range,
+ .hardware_decoding = s->is_hw_decoding,
+ .is_local_file = s->is_local_file || s->seekable
+ };
+
+ s->media_valid = mp_media_init(&s->media, &info);
+ }
}
static void ffmpeg_source_tick(void *data, float seconds)
s->range = (enum video_range_type)obs_data_get_int(settings,
"color_range");
s->buffering_mb = (int)obs_data_get_int(settings, "buffering_mb");
+ s->speed_percent = (int)obs_data_get_int(settings, "speed_percent");
s->is_local_file = is_local_file;
s->seekable = obs_data_get_bool(settings, "seekable");
+ if (s->speed_percent < 1 || s->speed_percent > 200)
+ s->speed_percent = 100;
+
if (s->media_valid) {
mp_media_free(&s->media);
s->media_valid = false;
obs-studio-21.0.2.tar.xz/plugins/obs-filters/compressor-filter.c -> obs-studio-21.0.3.tar.xz/plugins/obs-filters/compressor-filter.c
Changed
bfree(new_name);
}
+
+ UNUSED_PARAMETER(seconds);
}
static struct obs_audio_data *compressor_filter_audio(void *data,
obs-studio-21.0.2.tar.xz/plugins/obs-vst/CMakeLists.txt -> obs-studio-21.0.3.tar.xz/plugins/obs-vst/CMakeLists.txt
Changed
find_package(Qt5Widgets REQUIRED)
+if(APPLE)
+ find_package(Qt5MacExtras REQUIRED)
+endif(APPLE)
+
option(VST_USE_BUNDLED_HEADERS "Build with Bundled Headers" ON)
if(VST_USE_BUNDLED_HEADERS)
if(APPLE)
target_link_libraries(obs-vst
${COCOA_FRAMEWORK}
- ${FOUNDATION_FRAMEWORK})
+ ${FOUNDATION_FRAMEWORK}
+ Qt5::MacExtras)
endif(APPLE)
install_obs_plugin_with_data(obs-vst data)
obs-studio-21.0.3.tar.xz/plugins/obs-vst/data/locale/el-GR.ini
Added
+OpenPluginInterface="Άνοιγμα διεπαφής Plug-in"
+ClosePluginInterface="Κλείσιμο διεπαφής Plug-in"
+VstPlugin="VST 2.x Plug-in"
+OpenInterfaceWhenActive="Άνοιγμα διεπαφής όταν είναι ενεργό"
obs-studio-21.0.3.tar.xz/plugins/obs-vst/data/locale/nb-NO.ini
Added
+OpenPluginInterface="Åpne utvidelsesgrensesnittet"
+ClosePluginInterface="Lukk utvidelsesgrensesnittet"
+VstPlugin="VST 2.x-utvidelse"
+OpenInterfaceWhenActive="Åpne grensesnittet når den er aktiv"
obs-studio-21.0.3.tar.xz/plugins/obs-vst/data/locale/sk-SK.ini
Added
+OpenPluginInterface="Otvoriť rozhranie Plug-inu"
+ClosePluginInterface="Zavrieť rozhranie Plug-inu"
+VstPlugin="VST 2.x Plug-in"
+OpenInterfaceWhenActive="Otvoriť rozhranie, keď je aktívny"
obs-studio-21.0.2.tar.xz/plugins/obs-vst/data/locale/uk-UA.ini -> obs-studio-21.0.3.tar.xz/plugins/obs-vst/data/locale/uk-UA.ini
Changed
OpenPluginInterface="Відкрити інтерфейс плагіна"
ClosePluginInterface="Закрити інтерфейс плагіна"
VstPlugin="VST 2.x Плагін"
-OpenInterfaceWhenActive="Щоразу відкривати інтерфейс плагина"
+OpenInterfaceWhenActive="Щоразу відкривати інтерфейс плагіна"
obs-studio-21.0.3.tar.xz/plugins/obs-vst/data/locale/vi-VN.ini
Added
+OpenPluginInterface="Mở giao diện bổ trợ"
+ClosePluginInterface="Đóng giao diện bổ trợ"
+VstPlugin="Bổ trợ VST 2.x"
+OpenInterfaceWhenActive="Mở giao diện khi hoạt động"
obs-studio-21.0.2.tar.xz/plugins/obs-vst/mac/EditorWidget-osx.mm -> obs-studio-21.0.3.tar.xz/plugins/obs-vst/mac/EditorWidget-osx.mm
Changed
*****************************************************************************/
#import "../headers/EditorWidget.h"
#import <Cocoa/Cocoa.h>
+#include <QLayout>
#import "../headers/VSTPlugin.h"
void EditorWidget::buildEffectContainer(AEffect *effect) {
- cocoaViewContainer = new QMacCocoaViewContainer(0, this);
+ cocoaViewContainer = new QMacCocoaViewContainer(nullptr, this);
cocoaViewContainer->move(0, 0);
cocoaViewContainer->resize(300, 300);
NSView *view = [[NSView alloc] initWithFrame: NSMakeRect(0, 0,
300, 300)];
+
cocoaViewContainer->setCocoaView(view);
- VstRect* vstRect = 0;
+ cocoaViewContainer->show();
+
+ auto *hblParams =new QHBoxLayout();
+ hblParams->setContentsMargins(0, 0, 0, 0);
+ hblParams->addWidget(cocoaViewContainer);
+
+ VstRect* vstRect = nullptr;
effect->dispatcher (effect, effEditGetRect, 0, 0, &vstRect, 0);
if (vstRect)
{
cocoaViewContainer->resize(vstRect->right - vstRect->left,
vstRect->bottom- vstRect->top);
+
+ this->setGeometry(QRect(0,0,vstRect->right - vstRect->left,
+ vstRect->bottom- vstRect->top));
}
effect->dispatcher (effect, effEditOpen, 0, 0, view, 0);
+
+
+ this->setLayout(hblParams);
}
void EditorWidget::handleResizeRequest(int width, int height) {
obs-studio-21.0.2.tar.xz/plugins/rtmp-services/data/package.json -> obs-studio-21.0.3.tar.xz/plugins/rtmp-services/data/package.json
Changed
{
"url": "https://obsproject.com/obs2_update/rtmp-services",
- "version": 77,
+ "version": 78,
"files": [
{
"name": "services.json",
- "version": 77
+ "version": 78
}
]
}
obs-studio-21.0.2.tar.xz/plugins/rtmp-services/data/services.json -> obs-studio-21.0.3.tar.xz/plugins/rtmp-services/data/services.json
Changed
"max video bitrate": 7000,
"max audio bitrate": 192
}
+ },
+ {
+ "name": "SermonAudio.com",
+ "servers": [
+ {
+ "name": "Primary",
+ "url": "rtmp://stream.sermonaudio.com/"
+ }
+ ],
+ "recommended": {
+ "max video bitrate": 1000,
+ "max audio bitrate": 64
+ }
}
]
}
No build results available
No rpmlint results available
Request History
boombatower created request about 7 years ago
- Update to version 21.0.3:
* libobs: Update to version 21.0.3 (mac update)
* libobs: Log YUV space/range on video reset
* obs-filters: Clear unused parameter warning
* libobs/util: Cache windows CPU frequency
* rtmp-services: Add SermonAudio to services list
* libobs-opengl: Log adapter and driver info
* obs-ffmpeg: Add speed percentage option
* deps/media-playback: Use a struct for media init data
* UI: Remove __FUNCTION__ usage
* UI: Import scene collection with correct filename
* obs-vst: Add layout to QMacCocoaViewContainer (update submodule)
* UI: Link Qt5::MacExtras
* obs-vst: Link Qt5::MacExtras (update submodule)
* libobs/media-io: Change speaker layout to match FFmpeg aac.
* CI: Include style plugins when packaging on OSX
* CI: Comment out OSX _obspython copy (not ready yet)
* deps/obs-scripting: Fix cur. script being NULL for script_tick
* deps/obs-scripting: Allow NULL script with script_log
* UI: Fix grayed out Copy option in sources context menu
* CI: Don't install python for OSX
* cmake: Fix LuaJIT search
* CI: Add rpath info to _obspython
* CI: Move obspython.so so it can be found in a .app
* CI: Update python rpath on osx
* CI: Make sure that lua can find obslua
* CI: Fetch RVM gpg key on osx
* CI: Fix a ruby issue on travis OSX
* CI: Update OSX deps build scripts
boombatower accepted request about 7 years ago
ok