Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge to have changes for obs 29 #2

Merged
merged 11 commits into from
Dec 16, 2023
5 changes: 4 additions & 1 deletion .github/actions/build-macos-deps/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,11 @@ runs:
if: ${{ steps.deps-cache.outputs.cache-hit == 'true' }}
shell: zsh {0}
run: ./build-deps.zsh --skip-build --skip-unpack --target ${{ inputs.target }} --config ${{ inputs.config }} --${{ inputs.type }}

env:
github_hash: ${{ github.sha }}
- name: Build and Install macOS Dependencies
if: ${{ steps.deps-cache.outputs.cache-hit != 'true' }}
shell: zsh {0}
run: ./build-deps.zsh --target ${{ inputs.target }} --config ${{ inputs.config }} --${{ inputs.type }}
env:
github_hash: ${{ github.sha }}
2 changes: 1 addition & 1 deletion .github/actions/create-single-arch/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ runs:
local -A other_arch=(arm64 x86_64 x86_64 arm64)

local -a fixups=(
lib/**/(*.a|*.dylib)(.)
lib/**/(*.a|*.dylib|ffmpeg|ffprobe)(.)
lib/**/*.framework/Versions/A/*(.)
plugins/**/*.dylib(.)
)
Expand Down
2 changes: 1 addition & 1 deletion .github/actions/create-universal/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ runs:
for file (**/*(.)) {
magic=$(xxd -ps -l 4 ${file})

if [[ ${magic} == "cffaedfe" ]] fixups+=(${file})
if [[ ${magic} == "cffaedfe" || ${magic} == "213c6172" ]] fixups+=(${file})
}

for file (${fixups}) {
Expand Down
33 changes: 24 additions & 9 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ on:
branches:
- streamlabs
tags:
- '20[2-9][0-9]-[0-9][0-9]-[0-9][0-9]'
- '20[2-9][0-9]-[0-9][0-9]-[0-9][0-9]*'
pull_request:
paths-ignore:
- '**.md'
Expand Down Expand Up @@ -81,7 +81,7 @@ jobs:

target='${{ matrix.target }}'
artifact_name="ffmpeg-${target}-${{ github.sha }}"
file_name="${target%%-*}-ffmpeg-$(date +"%Y-%m-%d")-${target##*-}.tar.xz"
file_name="${target%%-*}-ffmpeg-${{ github.sha }}-${target##*-}.tar.xz"

echo "artifactName=${artifact_name}" >> $GITHUB_OUTPUT
echo "artifactFileName=${file_name}" >> $GITHUB_OUTPUT
Expand Down Expand Up @@ -113,6 +113,8 @@ jobs:
type: ${{ matrix.type }}
config: ${{ matrix.config }}
cacheRevision: ${{ env.CACHE_REVISION }}
env:
github_hash: ${{ github.sha }}

- name: Publish Build Artifacts
if: ${{ success() && (github.event_name != 'pull_request' || steps.seekingTesters.outputs.found == 'true') }}
Expand Down Expand Up @@ -183,7 +185,7 @@ jobs:

target='${{ matrix.target }}'
artifact_name="deps-${target}-${{ github.sha }}"
file_name="${target%%-*}-deps-$(date +"%Y-%m-%d")-${target##*-}.tar.xz"
file_name="${target%%-*}-deps-${{ github.sha }}-${target##*-}.tar.xz"

echo "artifactName=${artifact_name}" >> $GITHUB_OUTPUT
echo "artifactFileName=${file_name}" >> $GITHUB_OUTPUT
Expand Down Expand Up @@ -283,7 +285,7 @@ jobs:

target='${{ matrix.target }}'
artifact_name="qt5-${target}-${{ github.sha }}"
file_name="${target%%-*}-deps-qt5-$(date +"%Y-%m-%d")-${target##*-}.tar.xz"
file_name="${target%%-*}-deps-qt5-${{ github.sha }}-${target##*-}.tar.xz"

echo "artifactName=${artifact_name}" >> $GITHUB_OUTPUT
echo "artifactFileName=${file_name}" >> $GITHUB_OUTPUT
Expand Down Expand Up @@ -315,6 +317,8 @@ jobs:
config: ${{ matrix.config }}
qtVersion: 5
cacheRevision: ${{ env.CACHE_REVISION }}
env:
github_hash: ${{ github.sha }}

- name: Publish Build Artifacts
if: ${{ success() && (github.event_name != 'pull_request' || steps.seekingTesters.outputs.found == 'true') }}
Expand Down Expand Up @@ -374,7 +378,7 @@ jobs:

target='macos-universal'
artifact_name="qt6-${target}-${{ github.sha }}"
file_name="${target%%-*}-deps-qt6-$(date +"%Y-%m-%d")-${target##*-}.tar.xz"
file_name="${target%%-*}-deps-qt6-${{ github.sha }}-${target##*-}.tar.xz"

echo "artifactName=${artifact_name}" >> $GITHUB_OUTPUT
echo "artifactFileName=${file_name}" >> $GITHUB_OUTPUT
Expand Down Expand Up @@ -406,6 +410,8 @@ jobs:
config: Release
qtVersion: 6
cacheRevision: ${{ env.CACHE_REVISION }}
env:
github_hash: ${{ github.sha }}

- name: Publish Build Artifacts
if: ${{ success() && (github.event_name != 'pull_request' || steps.seekingTesters.outputs.found == 'true') }}
Expand Down Expand Up @@ -628,6 +634,8 @@ jobs:

make-release:
name: 'Create and upload release'
env:
RELEASE_BUCKET: "obs-studio-deployment"
runs-on: ubuntu-20.04
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
needs: [ffmpeg-package-universal, macos-package-universal, macos-qt5-package-universal, macos-qt6-package, windows-build, windows-qt-package]
Expand All @@ -639,7 +647,6 @@ jobs:
id: metadata
run: |
echo "version=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT
echo "date=$(date +"%Y-%m-%d")" >> $GITHUB_OUTPUT

- name: 'Download build artifacts'
uses: actions/download-artifact@v3
Expand Down Expand Up @@ -711,11 +718,10 @@ jobs:
mv macos-deps-${{ steps.metadata.outputs.version }}-${arch}.tar.xz ${{ github.workspace }}

popd > /dev/null
mv ${{ github.workspace }}/qt5-macos-${arch}-*/*.tar.xz ${{ github.workspace }}/macos-deps-qt5-${{ steps.metadata.outputs.version }}-${arch}.tar.xz
mv ${{ github.workspace }}/qt6-macos-${arch}-*/*.tar.xz ${{ github.workspace }}/macos-deps-qt6-${{ steps.metadata.outputs.version }}-${arch}.tar.xz
done

mv ${{ github.workspace }}/qt5-macos-*/*.tar.xz ${{ github.workspace }}
mv ${{ github.workspace }}/qt6-macos-*/*.tar.xz ${{ github.workspace }}

- name: 'Generate Checksums'
run: |
shopt -s extglob
Expand All @@ -740,3 +746,12 @@ jobs:
${{ github.workspace }}/macos-*-x86_64.tar.xz
${{ github.workspace }}/macos-*-universal.tar.xz
${{ github.workspace }}/linux-*-x86_64.tar.xz

- name: Configure AWS credentials
uses: aws-actions/configure-aws-credentials@v1-node16
with:
aws-access-key-id: ${{secrets.AWS_RELEASE_ACCESS_KEY_ID}}
aws-secret-access-key: ${{secrets.AWS_RELEASE_SECRET_ACCESS_KEY}}
aws-region: us-west-2
- name: Upload to S3
run: aws s3 sync ${{ github.workspace }} s3://${{env.RELEASE_BUCKET}} --acl public-read --exclude "*" --include "windows-*.zip" --include "macos-*.tar.xz"
10 changes: 5 additions & 5 deletions build-deps.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -72,9 +72,9 @@ run_stages() {
package() {
autoload -Uz log_info log_status
if [[ ${PACKAGE_NAME} == 'qt'* ]] {
local filename="${target%%-*}-deps-${PACKAGE_NAME}-${current_date}-${target_config[arch]}.tar.xz"
local filename="${target%%-*}-deps-${PACKAGE_NAME}-${github_hash}-${target_config[arch]}.tar.xz"
} else {
local filename="${target%%-*}-${PACKAGE_NAME}-${current_date}-${target_config[arch]}.tar.xz"
local filename="${target%%-*}-${PACKAGE_NAME}-${github_hash}-${target_config[arch]}.tar.xz"
}

pushd ${PWD}
Expand All @@ -85,9 +85,9 @@ package() {
if [[ ${PACKAGE_NAME} != 'qt'* ]] {
log_status "Cleanup unnecessary files"

rm -rf lib/^(*.dylib|libajantv*|*.a|*.so*|*.lib|*.framework|*.dSYM|cmake)(N)
rm -rf lib/^(*.dylib|libajantv*|*.a|ffmpeg|ffprobe|*.so*|*.lib|*.framework|*.dSYM|cmake)(N)
rm -rf lib/(libpcre*|libpng*)(N)
rm -rf bin/^(*.exe|*.dll|*.pdb|swig)(N)
rm -rf bin/^(*.exe|*.dll|*.pdb|ffmpeg|ffprobe|swig)(N)

if [[ -f bin/swig ]] {
swig_lib=(share/swig/*(/))
Expand All @@ -101,7 +101,7 @@ package() {
if [[ -d man ]] rm -rf man

mkdir -p share/obs-deps
echo "${current_date}" >! share/obs-deps/VERSION
echo "${github_hash}" >! share/obs-deps/VERSION
}

log_status "Create archive ${filename}"
Expand Down
12 changes: 6 additions & 6 deletions deps.ffmpeg/60-mbedtls.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@ autoload -Uz log_debug log_error log_info log_status log_output
## Dependency Information
local name='mbedtls'
local -A versions=(
macos 3.3.0
linux 3.3.0
windows 3.3.0
macos 3.2.1
linux 3.2.1
windows 3.2.1
)
local url='https://github.com/Mbed-TLS/mbedtls.git'
local -A hashes=(
macos 8c89224991adff88d53cd380f42a2baa36f91454
linux 8c89224991adff88d53cd380f42a2baa36f91454
windows 8c89224991adff88d53cd380f42a2baa36f91454
macos 869298bffeea13b205343361b7a7daf2b210e33d
linux 869298bffeea13b205343361b7a7daf2b210e33d
windows 869298bffeea13b205343361b7a7daf2b210e33d
)
local -a patches=(
"macos ${0:a:h}/patches/mbedtls/0001-enable-posix-threading-support.patch \
Expand Down
16 changes: 12 additions & 4 deletions deps.ffmpeg/99-ffmpeg.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,14 @@ autoload -Uz log_debug log_error log_info log_status log_output
local name='FFmpeg'
local version='6.0'
local url='https://github.com/FFmpeg/FFmpeg.git'
local hash='ea3d24bbe3c58b171e55fe2151fc7ffaca3ab3d2'
local hash='a6dc92968a325d331bb6dcf9b3b2248026cd1d6c'
local -a patches=(
"* ${0:a:h}/patches/FFmpeg/0001-FFmpeg-6.0-OBS.patch \
7fcb67d5e68a6ca3102c3a6aaba56750b22850552ccd8704c6636c174968ef56"
"* ${0:a:h}/patches/FFmpeg/0001-flvdec-handle-unknown.patch \
5a5185f54cbcf4672763cce687d1b6ddb662549b69637da826279ce4797f57ef"
"* ${0:a:h}/patches/FFmpeg/0002-libaomenc-presets.patch \
d5f1410efb31fe31e8e905ec3f10ccb7841dd5594cb3591c3b205e77232fd183"
"* ${0:a:h}/patches/FFmpeg/0004-FFmpeg-5.0.1-cuvid.patch \
d44609a43f7f09819c74cdfa6fa90c9a1de61b3673aa95e87a294c259f203717"
)

## Build Steps
Expand Down Expand Up @@ -205,9 +209,13 @@ config() {
--disable-sdl2
--disable-doc
--disable-postproc
--disable-encoder="hevc"
--disable-decoder="hevc"
)

if (( ! shared_libs )) args+=(--pkg-config-flags="--static")
if (( ! shared_libs )) {
args+=(--pkg-config-flags="--static")
}

log_info "Config (%F{3}${target}%f)"
cd "${dir}"
Expand Down
11 changes: 11 additions & 0 deletions deps.ffmpeg/patches/FFmpeg/0001-flvdec-handle-unknown.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
--- ./libavformat/flvdec.c 2021-10-24 22:47:07.000000000 +0200
+++ ./libavformat/flvdec.c 2021-11-08 13:13:47.000000000 +0100
@@ -1077,7 +1077,7 @@
int type;
meta_pos = avio_tell(s->pb);
type = flv_read_metabody(s, next);
- if (type == 0 && dts == 0 || type < 0) {
+ if (type == 0 && dts == 0 || type < 0 || type == TYPE_UNKNOWN) {
if (type < 0 && flv->validate_count &&
flv->validate_index[0].pos > next &&
flv->validate_index[0].pos - 4 < next) {
Original file line number Diff line number Diff line change
@@ -1,14 +1,3 @@
--- ./libavformat/flvdec.c 2021-10-24 22:47:07.000000000 +0200
+++ ./libavformat/flvdec.c 2021-11-08 13:13:47.000000000 +0100
@@ -1077,7 +1077,7 @@
int type;
meta_pos = avio_tell(s->pb);
type = flv_read_metabody(s, next);
- if (type == 0 && dts == 0 || type < 0) {
+ if (type == 0 && dts == 0 || type < 0 || type == TYPE_UNKNOWN) {
if (type < 0 && flv->validate_count &&
flv->validate_index[0].pos > next &&
flv->validate_index[0].pos - 4 < next) {
--- ./libavcodec/libaomenc.c 2021-10-24 22:47:07.000000000 +0200
+++ ./libavcodec/libaomenc.c 2021-11-08 13:15:54.000000000 +0100
@@ -1337,7 +1337,7 @@
Expand Down
29 changes: 29 additions & 0 deletions deps.ffmpeg/patches/FFmpeg/0004-FFmpeg-5.0.1-cuvid.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
diff --git a/libavcodec/cuviddec.c b/libavcodec/cuviddec.c
index f03bbd8..7b8ec3a 100644
--- a/libavcodec/cuviddec.c
+++ b/libavcodec/cuviddec.c
@@ -817,7 +817,7 @@ static av_cold int cuvid_decode_init(AVCodecContext *avctx)
&ctx->resize.width, &ctx->resize.height) != 2) {
av_log(avctx, AV_LOG_ERROR, "Invalid resize expressions\n");
ret = AVERROR(EINVAL);
- goto error;
+ return ret;
}

if (ctx->crop_expr && sscanf(ctx->crop_expr, "%dx%dx%dx%d",
@@ -825,13 +825,13 @@ static av_cold int cuvid_decode_init(AVCodecContext *avctx)
&ctx->crop.left, &ctx->crop.right) != 4) {
av_log(avctx, AV_LOG_ERROR, "Invalid cropping expressions\n");
ret = AVERROR(EINVAL);
- goto error;
+ return ret;
}

ret = cuvid_load_functions(&ctx->cvdl, avctx);
if (ret < 0) {
av_log(avctx, AV_LOG_ERROR, "Failed loading nvcuvid.\n");
- goto error;
+ return ret;
}

ctx->frame_queue = av_fifo_alloc(ctx->nb_surfaces * sizeof(CuvidParsedFrame));
30 changes: 30 additions & 0 deletions deps.qt/patches/Qt6/mac/0002-QTBUG-56064.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
From 9f44553b3d297f7a423c51451c4e18c0e5a25d19 Mon Sep 17 00:00:00 2001
From: Sebastian Beckmann <beckmann.sebastian@outlook.de>
Date: Wed, 29 Mar 2023 04:20:38 +0200
Subject: [PATCH] QComboBox: Disable items marked as disabled in native popups

Fixes: QTBUG-56064
Pick-to: 6.5 6.2 5.15
Change-Id: I00a17a19b4c14c874e16ec863e794218f0570346
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
---
a/qtbase/src/widgets/widgets/qcombobox.cpp | 2 ++
1 file changed, 2 insertions(+)

diff --git a/qtbase/src/widgets/widgets/qcombobox.cpp b/qtbase/src/widgets/widgets/qcombobox.cpp
index 80206b24acb..7c99e8983c6 100644
--- a/qtbase/src/widgets/widgets/qcombobox.cpp
+++ b/qtbase/src/widgets/widgets/qcombobox.cpp
@@ -2501,10 +2501,12 @@ bool QComboBoxPrivate::showNativePopup()
QVariant textVariant = model->data(rowIndex, Qt::EditRole);
item->setText(textVariant.toString());
QVariant iconVariant = model->data(rowIndex, Qt::DecorationRole);
+ const Qt::ItemFlags itemFlags = model->flags(rowIndex);
if (iconVariant.canConvert<QIcon>())
item->setIcon(iconVariant.value<QIcon>());
item->setCheckable(true);
item->setChecked(i == currentIndex);
+ item->setEnabled(itemFlags & Qt::ItemIsEnabled);
if (!currentItem || i == currentIndex)
currentItem = item;

2 changes: 2 additions & 0 deletions deps.qt/qt6.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ local hash="${0:a:h}/checksums"
local -a patches=(
"macos ${0:a:h}/patches/Qt6/mac/0001-QTBUG-106369.patch \
f96ce8408b03e752708c606df10d6473aeed78843a6acb0a90c05f0a9fc913af"
"macos ${0:a:h}/patches/Qt6/mac/0002-QTBUG-56064.patch \
08a2e4f384d21e169d6ddb6e37084bc8b8701bb3e6a675b76843784a88250ad7"
)

local -a qt_components=(
Expand Down
2 changes: 1 addition & 1 deletion deps.windows/30-speexdsp.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ param(
[array] $Patches = @(
@{
PatchFile = "${PSScriptRoot}/patches/speexdsp/0001-Add-CMakeLists.patch"
HashSum = 'a7e625bdf83fea2c0d0a215e7e04a44c0ac0f892217895481723e33e0008ba18'
HashSum = 'e8814dbc5683ce6a3c70553147fbdca92b74aab45ceb06e0040127754fe991c5'
}
)
)
Expand Down
13 changes: 3 additions & 10 deletions deps.windows/patches/speexdsp/0001-Add-CMakeLists.patch
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
--- null 2022-11-22 18:00:00.000000000 -0500
+++ ./CMakeLists.txt 2022-11-22 18:00:00.000000000 -0500
@@ -0,0 +1,90 @@
--- null 2023-03-24 18:30:00.000000000 -0400
+++ ./CMakeLists.txt 2023-03-24 18:30:00.000000000 -0400
@@ -0,0 +1,83 @@
+cmake_minimum_required(VERSION 3.16)
+
+project(speexdsp)
Expand Down Expand Up @@ -79,13 +79,6 @@
+ "include"
+ )
+
+ include(CheckIPOSupported)
+ check_ipo_supported(RESULT HasIPOSupport)
+ if(HasIPOSupport)
+ set_target_properties(speexdsp PROPERTIES
+ INTERPROCEDURAL_OPTIMIZATION ON)
+ endif()
+
+ install(TARGETS speexdsp
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/speex"
Expand Down
1 change: 0 additions & 1 deletion utils.zsh/10-bootstrap.zsh
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ bootstrap() {
typeset -g -a skips=()
typeset -g -i shared_libs=0
typeset -g -i clean_build=0
typeset -g -r current_date=$(date +"%Y-%m-%d")

local -i _verbosity=1

Expand Down
2 changes: 1 addition & 1 deletion utils.zsh/functions/universal_build
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ if [[ -d "build_universal" ]] rm -rf "build_universal"
cp -cpR "build_x86_64" "build_universal"
cd "build_universal"

local -a candidates=(./**/*.(dylib|so|a)(D))
local -a candidates=(./**/(*.dylib|*.so|*.a|ffmpeg|ffprobe)(D))
local c
for c (${candidates}) {
[[ -e ../build_arm64/"${c}" ]] || continue
Expand Down
Loading