Projects
Multimedia
obs-studio
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 55
View file
obs-studio.changes
Changed
@@ -1,4 +1,37 @@ ------------------------------------------------------------------- +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:
View file
obs-studio.spec
Changed
@@ -1,5 +1,5 @@ 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
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/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>
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">6ed55995048951cd36be8b1253de3f251ccb9d80</param> + <param name="changesrevision">90692c9791ed33648b40916fa353aa3f2df35f2f</param> </service> </servicedata>
View file
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
@@ -19,6 +19,15 @@ 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
View file
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
@@ -3,4 +3,9 @@ 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
View 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
@@ -17,7 +17,7 @@ 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."
View file
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
@@ -1,22 +1,22 @@ #!/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 @@ -33,7 +33,7 @@ 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( @@ -58,14 +58,14 @@ 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] @@ -93,7 +93,7 @@ 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", @@ -114,13 +114,14 @@ 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(): @@ -197,6 +198,8 @@ 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/" @@ -214,7 +217,7 @@ 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)
View file
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
@@ -1,5 +1,15 @@ #!/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 @@ -22,6 +32,7 @@ mkdir $DEPS_DEST mkdir $DEPS_DEST/bin mkdir $DEPS_DEST/include +mkdir $DEPS_DEST/lib # OSX COMPAT export MACOSX_DEPLOYMENT_TARGET=10.9 @@ -80,6 +91,7 @@ # 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" @@ -117,12 +129,22 @@ 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
View file
obs-studio-21.0.2.tar.xz/UI/CMakeLists.txt -> obs-studio-21.0.3.tar.xz/UI/CMakeLists.txt
Changed
@@ -37,6 +37,10 @@ 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") @@ -271,12 +275,14 @@ ${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/" )
View file
obs-studio-21.0.2.tar.xz/UI/forms/OBSBasic.ui -> obs-studio-21.0.3.tar.xz/UI/forms/OBSBasic.ui
Changed
@@ -182,10 +182,7 @@ <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>
View file
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
@@ -494,9 +494,14 @@ 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),
View file
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
@@ -372,7 +372,7 @@ { char path[512]; - QString home = QDir::homePath(); + QString qhome = QDir::homePath(); int ret = GetConfigPath(path, 512, "obs-studio/basic/scenes/"); if (ret <= 0) { @@ -380,25 +380,53 @@ 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(); } }
View file
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
@@ -2858,8 +2858,6 @@ 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) @@ -2873,7 +2871,6 @@ 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) @@ -3891,6 +3888,7 @@ popup.addMenu(addSourceMenu); ui->actionCopyFilters->setEnabled(false); + ui->actionCopySource->setEnabled(false); popup.addSeparator(); popup.addAction(ui->actionCopySource); @@ -3969,6 +3967,7 @@ SLOT(on_actionSourceProperties_triggered())); ui->actionCopyFilters->setEnabled(true); + ui->actionCopySource->setEnabled(true); } popup.exec(QCursor::pos());
View file
obs-studio-21.0.2.tar.xz/cmake/Modules/FindLuajit.cmake -> obs-studio-21.0.3.tar.xz/cmake/Modules/FindLuajit.cmake
Changed
@@ -15,7 +15,7 @@ ENDIF() FIND_PATH(LUAJIT_INCLUDE_DIR - NAMES lua.h + NAMES lua.h lualib.h HINTS ENV LuajitPath${_LIB_SUFFIX} ENV LuajitPath
View file
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
@@ -338,6 +338,15 @@ 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; }
View file
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
@@ -271,7 +271,7 @@ 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; @@ -652,9 +652,7 @@ } 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"); @@ -665,9 +663,9 @@ 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"); @@ -678,29 +676,22 @@ 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) { @@ -714,7 +705,7 @@ 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; }
View file
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
@@ -54,6 +54,7 @@ char *path; char *format_name; int buffering; + int speed; enum AVPixelFormat scale_format; struct SwsContext *swscale; @@ -96,18 +97,24 @@ 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);
View file
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
@@ -28,14 +28,19 @@ 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)
View file
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
@@ -1023,6 +1023,7 @@ data = first_tick_script; while (data) { lua_State *script = data->script; + current_lua_script = data; pthread_mutex_lock(&data->mutex); @@ -1033,6 +1034,7 @@ data = data->next_tick; } + current_lua_script = NULL; pthread_mutex_unlock(&tick_mutex); /* --------------------------------- */
View file
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
@@ -1193,7 +1193,11 @@ 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;
View file
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
@@ -45,6 +45,17 @@ 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}"
View file
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
@@ -214,13 +214,24 @@ 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);
View file
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
@@ -63,10 +63,10 @@ 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; }
View file
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
@@ -124,6 +124,28 @@ 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,
View file
obs-studio-21.0.2.tar.xz/libobs/obs-config.h -> obs-studio-21.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 2 +#define LIBOBS_API_PATCH_VER 3 #define MAKE_SEMANTIC_VERSION(major, minor, patch) \ ((major << 24) | \
View file
obs-studio-21.0.2.tar.xz/libobs/obs.c -> obs-studio-21.0.3.tar.xz/libobs/obs.c
Changed
@@ -974,18 +974,26 @@ 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); }
View file
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
@@ -37,8 +37,11 @@ static inline uint64_t get_clockfreq(void) { - if (!have_clockfreq) + if (!have_clockfreq) { QueryPerformanceFrequency(&clock_freq); + have_clockfreq = true; + } + return clock_freq.QuadPart; }
View file
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
@@ -36,6 +36,7 @@ ColorRange.Partial="Partial" ColorRange.Full="Full" RestartMedia="Restart Media" +SpeedPercentage="Speed (perecent)" Seekable="Seekable" MediaFileFilter.AllMediaFiles="All Media Files"
View file
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
@@ -62,10 +62,10 @@ 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; } @@ -78,10 +78,10 @@ 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; }
View file
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
@@ -49,6 +49,7 @@ char *input; char *input_format; int buffering_mb; + int speed_percent; bool is_looping; bool is_local_file; bool is_hw_decoding; @@ -72,12 +73,14 @@ 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; @@ -93,6 +96,7 @@ 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 = @@ -171,6 +175,9 @@ 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); @@ -193,6 +200,7 @@ "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" @@ -200,6 +208,7 @@ "\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", @@ -241,15 +250,24 @@ 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) @@ -320,9 +338,13 @@ 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;
View file
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
@@ -432,6 +432,8 @@ bfree(new_name); } + + UNUSED_PARAMETER(seconds); } static struct obs_audio_data *compressor_filter_audio(void *data,
View file
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
@@ -9,6 +9,10 @@ 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) @@ -71,7 +75,8 @@ 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)
View file
obs-studio-21.0.3.tar.xz/plugins/obs-vst/data/locale/el-GR.ini
Added
@@ -0,0 +1,4 @@ +OpenPluginInterface="Άνοιγμα διεπαφής Plug-in" +ClosePluginInterface="Κλείσιμο διεπαφής Plug-in" +VstPlugin="VST 2.x Plug-in" +OpenInterfaceWhenActive="Άνοιγμα διεπαφής όταν είναι ενεργό"
View file
obs-studio-21.0.3.tar.xz/plugins/obs-vst/data/locale/nb-NO.ini
Added
@@ -0,0 +1,4 @@ +OpenPluginInterface="Åpne utvidelsesgrensesnittet" +ClosePluginInterface="Lukk utvidelsesgrensesnittet" +VstPlugin="VST 2.x-utvidelse" +OpenInterfaceWhenActive="Åpne grensesnittet når den er aktiv"
View file
obs-studio-21.0.3.tar.xz/plugins/obs-vst/data/locale/sk-SK.ini
Added
@@ -0,0 +1,4 @@ +OpenPluginInterface="Otvoriť rozhranie Plug-inu" +ClosePluginInterface="Zavrieť rozhranie Plug-inu" +VstPlugin="VST 2.x Plug-in" +OpenInterfaceWhenActive="Otvoriť rozhranie, keď je aktívny"
View file
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
@@ -1,4 +1,4 @@ OpenPluginInterface="Відкрити інтерфейс плагіна" ClosePluginInterface="Закрити інтерфейс плагіна" VstPlugin="VST 2.x Плагін" -OpenInterfaceWhenActive="Щоразу відкривати інтерфейс плагина" +OpenInterfaceWhenActive="Щоразу відкривати інтерфейс плагіна"
View file
obs-studio-21.0.3.tar.xz/plugins/obs-vst/data/locale/vi-VN.ini
Added
@@ -0,0 +1,4 @@ +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"
View file
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
@@ -16,18 +16,26 @@ *****************************************************************************/ #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) { @@ -38,9 +46,15 @@ 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) {
View file
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
@@ -1,10 +1,10 @@ { "url": "https://obsproject.com/obs2_update/rtmp-services", - "version": 77, + "version": 78, "files": [ { "name": "services.json", - "version": 77 + "version": 78 } ] }
View file
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
@@ -1162,6 +1162,19 @@ "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 + } } ] }
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
.