Initial import to Fedora

This commit is contained in:
Neal Gompa 2023-04-18 23:19:10 -04:00
parent 787748d587
commit 9e1adc41be
10 changed files with 2208 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/*.tar.gz

View File

@ -0,0 +1,104 @@
From 04d3a21c6e72cd5574f7333adf548012d912c1ee Mon Sep 17 00:00:00 2001
From: Neal Gompa <neal@gompa.dev>
Date: Sat, 7 Jan 2023 23:15:13 -0500
Subject: [PATCH 1/3] UI: Consistently reference the software H264 encoder
properly
The code here assumes that the only software encoder is the x264-based
H.264 encoder. That may not always remain true. This change adjusts
the encoder string to indicate that it's an H.264 encoder from x264.
---
UI/data/locale/en-US.ini | 4 ++--
UI/window-basic-auto-config-test.cpp | 6 +++---
UI/window-basic-settings-stream.cpp | 2 +-
UI/window-basic-settings.cpp | 7 ++++---
4 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini
index 4c03aa7db..e44d99660 100644
--- a/UI/data/locale/en-US.ini
+++ b/UI/data/locale/en-US.ini
@@ -980,7 +980,7 @@ Basic.Settings.Output.Simple.Warn.Encoder="Warning: Recording with a software en
Basic.Settings.Output.Simple.Warn.Lossless="Warning: Lossless quality generates tremendously large file sizes! Lossless quality can use upward of 7 gigabytes of disk space per minute at high resolutions and framerates. Lossless is not recommended for long recordings unless you have a very large amount of disk space available."
Basic.Settings.Output.Simple.Warn.Lossless.Msg="Are you sure you want to use lossless quality?"
Basic.Settings.Output.Simple.Warn.Lossless.Title="Lossless quality warning!"
-Basic.Settings.Output.Simple.Encoder.Software="Software (x264)"
+Basic.Settings.Output.Simple.Encoder.Software.X264.H264="Software (x264)"
Basic.Settings.Output.Simple.Encoder.Hardware.QSV.H264="Hardware (QSV, H.264)"
Basic.Settings.Output.Simple.Encoder.Hardware.QSV.AV1="Hardware (QSV, AV1)"
Basic.Settings.Output.Simple.Encoder.Hardware.AMD.H264="Hardware (AMD, H.264)"
@@ -991,7 +991,7 @@ Basic.Settings.Output.Simple.Encoder.Hardware.NVENC.AV1="Hardware (NVENC, AV1)"
Basic.Settings.Output.Simple.Encoder.Hardware.NVENC.HEVC="Hardware (NVENC, HEVC)"
Basic.Settings.Output.Simple.Encoder.Hardware.Apple.H264="Hardware (Apple, H.264)"
Basic.Settings.Output.Simple.Encoder.Hardware.Apple.HEVC="Hardware (Apple, HEVC)"
-Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU="Software (x264 low CPU usage preset, increases file size)"
+Basic.Settings.Output.Simple.Encoder.SoftwareLowCPU.X264.H264="Software (x264 low CPU usage preset, increases file size)"
Basic.Settings.Output.Simple.Codec.AAC="AAC"
Basic.Settings.Output.Simple.Codec.AAC.Default="AAC (Default)"
Basic.Settings.Output.Simple.Codec.Opus="Opus"
diff --git a/UI/window-basic-auto-config-test.cpp b/UI/window-basic-auto-config-test.cpp
index 2d89d7347..09979c031 100644
--- a/UI/window-basic-auto-config-test.cpp
+++ b/UI/window-basic-auto-config-test.cpp
@@ -993,7 +993,7 @@ void AutoConfigTestPage::TestRecordingEncoderThread()
}
#define ENCODER_TEXT(x) "Basic.Settings.Output.Simple.Encoder." x
-#define ENCODER_SOFTWARE ENCODER_TEXT("Software")
+#define ENCODER_X264 ENCODER_TEXT("Software.X264.H264")
#define ENCODER_NVENC ENCODER_TEXT("Hardware.NVENC.H264")
#define ENCODER_QSV ENCODER_TEXT("Hardware.QSV.H264")
#define ENCODER_AMD ENCODER_TEXT("Hardware.AMD.H264")
@@ -1033,7 +1033,7 @@ void AutoConfigTestPage::FinalizeResults()
auto encName = [](AutoConfig::Encoder enc) -> QString {
switch (enc) {
case AutoConfig::Encoder::x264:
- return QTStr(ENCODER_SOFTWARE);
+ return QTStr(ENCODER_X264);
case AutoConfig::Encoder::NVENC:
return QTStr(ENCODER_NVENC);
case AutoConfig::Encoder::QSV:
@@ -1046,7 +1046,7 @@ void AutoConfigTestPage::FinalizeResults()
return QTStr(QUALITY_SAME);
}
- return QTStr(ENCODER_SOFTWARE);
+ return QTStr(ENCODER_X264);
};
auto newLabel = [this](const char *str) -> QLabel * {
diff --git a/UI/window-basic-settings-stream.cpp b/UI/window-basic-settings-stream.cpp
index f6e0817a0..b056938e7 100644
--- a/UI/window-basic-settings-stream.cpp
+++ b/UI/window-basic-settings-stream.cpp
@@ -1585,7 +1585,7 @@ void OBSBasicSettings::ResetEncoders(bool streamOnly)
#define ENCODER_STR(str) QTStr("Basic.Settings.Output.Simple.Encoder." str)
- ui->simpleOutStrEncoder->addItem(ENCODER_STR("Software"),
+ ui->simpleOutStrEncoder->addItem(ENCODER_STR("Software.X264.H264"),
QString(SIMPLE_ENCODER_X264));
if (service_supports_encoder(vcodecs, "obs_qsv11"))
ui->simpleOutStrEncoder->addItem(
diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp
index fb170bfc1..48bb4bac6 100644
--- a/UI/window-basic-settings.cpp
+++ b/UI/window-basic-settings.cpp
@@ -5286,10 +5286,11 @@ void OBSBasicSettings::FillSimpleRecordingValues()
ADD_QUALITY("HQ");
ADD_QUALITY("Lossless");
- ui->simpleOutRecEncoder->addItem(ENCODER_STR("Software"),
+ ui->simpleOutRecEncoder->addItem(ENCODER_STR("Software.X264.H264"),
QString(SIMPLE_ENCODER_X264));
- ui->simpleOutRecEncoder->addItem(ENCODER_STR("SoftwareLowCPU"),
- QString(SIMPLE_ENCODER_X264_LOWCPU));
+ ui->simpleOutRecEncoder->addItem(
+ ENCODER_STR("SoftwareLowCPU.X264.H264"),
+ QString(SIMPLE_ENCODER_X264_LOWCPU));
if (EncoderAvailable("obs_qsv11"))
ui->simpleOutRecEncoder->addItem(
ENCODER_STR("Hardware.QSV.H264"),
--
2.39.2

View File

@ -0,0 +1,346 @@
From 4517d8d8bb4c43af1f5b757773a5f9550bd23d37 Mon Sep 17 00:00:00 2001
From: Neal Gompa <neal@gompa.dev>
Date: Sun, 26 Mar 2023 06:06:31 -0400
Subject: [PATCH 2/3] obs-ffmpeg: Add initial support for the OpenH264 H.264
software codec
This allows users to leverage the OpenH264 codec from Cisco to encode
H.264 video content. It is significantly reduced in capability from
alternatives, but it does the job.
This also provides a framework for adding support for other H.264
software codecs provided through FFmpeg.
---
plugins/obs-ffmpeg/CMakeLists.txt | 1 +
plugins/obs-ffmpeg/cmake/legacy.cmake | 1 +
plugins/obs-ffmpeg/data/locale/en-US.ini | 3 +
plugins/obs-ffmpeg/obs-ffmpeg-h264.c | 260 +++++++++++++++++++++++
plugins/obs-ffmpeg/obs-ffmpeg.c | 2 +
5 files changed, 267 insertions(+)
create mode 100644 plugins/obs-ffmpeg/obs-ffmpeg-h264.c
diff --git a/plugins/obs-ffmpeg/CMakeLists.txt b/plugins/obs-ffmpeg/CMakeLists.txt
index 3eba00932..f97622c22 100644
--- a/plugins/obs-ffmpeg/CMakeLists.txt
+++ b/plugins/obs-ffmpeg/CMakeLists.txt
@@ -34,6 +34,7 @@ target_sources(
obs-ffmpeg-video-encoders.c
obs-ffmpeg-audio-encoders.c
obs-ffmpeg-av1.c
+ obs-ffmpeg-h264.c
obs-ffmpeg-nvenc.c
obs-ffmpeg-output.c
obs-ffmpeg-mux.c
diff --git a/plugins/obs-ffmpeg/cmake/legacy.cmake b/plugins/obs-ffmpeg/cmake/legacy.cmake
index 5540676ea..62f2cc7a1 100644
--- a/plugins/obs-ffmpeg/cmake/legacy.cmake
+++ b/plugins/obs-ffmpeg/cmake/legacy.cmake
@@ -40,6 +40,7 @@ target_sources(
obs-ffmpeg-video-encoders.c
obs-ffmpeg-audio-encoders.c
obs-ffmpeg-av1.c
+ obs-ffmpeg-h264.c
obs-ffmpeg-nvenc.c
obs-ffmpeg-output.c
obs-ffmpeg-mux.c
diff --git a/plugins/obs-ffmpeg/data/locale/en-US.ini b/plugins/obs-ffmpeg/data/locale/en-US.ini
index 55bbe919d..0363ed82b 100644
--- a/plugins/obs-ffmpeg/data/locale/en-US.ini
+++ b/plugins/obs-ffmpeg/data/locale/en-US.ini
@@ -109,4 +109,7 @@ NVENC.CheckDrivers="Try installing the latest <a href=\"https://obsproject.com/g
AV1.8bitUnsupportedHdr="OBS does not support 8-bit output of Rec. 2100."
+H264.UnsupportedVideoFormat="Only video formats using 8-bit color are supported."
+H264.UnsupportedColorSpace="Only the Rec. 709 color space is supported."
+
ReconnectDelayTime="Reconnect Delay"
diff --git a/plugins/obs-ffmpeg/obs-ffmpeg-h264.c b/plugins/obs-ffmpeg/obs-ffmpeg-h264.c
new file mode 100644
index 000000000..179a61ccf
--- /dev/null
+++ b/plugins/obs-ffmpeg/obs-ffmpeg-h264.c
@@ -0,0 +1,260 @@
+/******************************************************************************
+ Copyright (C) 2023 by Neal Gompa <neal@gompa.dev>
+ Partly derived from obs-ffmpeg-av1.c by Hugh Bailey <obs.jim@gmail.com>
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+******************************************************************************/
+
+#include "obs-ffmpeg-video-encoders.h"
+
+#define do_log(level, format, ...) \
+ blog(level, "[H.264 encoder: '%s'] " format, \
+ obs_encoder_get_name(enc->ffve.encoder), ##__VA_ARGS__)
+
+#define error(format, ...) do_log(LOG_ERROR, format, ##__VA_ARGS__)
+#define warn(format, ...) do_log(LOG_WARNING, format, ##__VA_ARGS__)
+#define info(format, ...) do_log(LOG_INFO, format, ##__VA_ARGS__)
+#define debug(format, ...) do_log(LOG_DEBUG, format, ##__VA_ARGS__)
+
+enum h264_encoder_type {
+ H264_ENCODER_TYPE_OH264,
+};
+
+struct h264_encoder {
+ struct ffmpeg_video_encoder ffve;
+ enum h264_encoder_type type;
+
+ DARRAY(uint8_t) header;
+};
+
+static const char *oh264_getname(void *unused)
+{
+ UNUSED_PARAMETER(unused);
+ return "OpenH264";
+}
+
+static void h264_video_info(void *data, struct video_scale_info *info)
+{
+ UNUSED_PARAMETER(data);
+
+ // OpenH264 only supports I420
+ info->format = VIDEO_FORMAT_I420;
+}
+
+static bool h264_update(struct h264_encoder *enc, obs_data_t *settings)
+{
+ const char *profile = obs_data_get_string(settings, "profile");
+ int bitrate = (int)obs_data_get_int(settings, "bitrate");
+ int keyint_sec = 0; // This is not supported by OpenH264
+ const char *rc_mode = "quality"; // We only want to use quality mode
+ int allow_skip_frames = 1; // This is required for quality mode
+
+ video_t *video = obs_encoder_video(enc->ffve.encoder);
+ const struct video_output_info *voi = video_output_get_info(video);
+ struct video_scale_info info;
+
+ info.format = voi->format;
+ info.colorspace = voi->colorspace;
+ info.range = voi->range;
+
+ enc->ffve.context->thread_count = 0;
+
+ h264_video_info(enc, &info);
+
+ av_opt_set(enc->ffve.context->priv_data, "rc_mode", rc_mode, 0);
+ av_opt_set(enc->ffve.context->priv_data, "profile", profile, 0);
+ av_opt_set_int(enc->ffve.context->priv_data, "allow_skip_frames",
+ allow_skip_frames, 0);
+
+ const char *ffmpeg_opts = obs_data_get_string(settings, "ffmpeg_opts");
+ ffmpeg_video_encoder_update(&enc->ffve, bitrate, keyint_sec, voi, &info,
+ ffmpeg_opts);
+ info("settings:\n"
+ "\tencoder: %s\n"
+ "\trc_mode: %s\n"
+ "\tbitrate: %d\n"
+ "\tprofile: %s\n"
+ "\twidth: %d\n"
+ "\theight: %d\n"
+ "\tffmpeg opts: %s\n",
+ enc->ffve.enc_name, rc_mode, bitrate, profile,
+ enc->ffve.context->width, enc->ffve.height, ffmpeg_opts);
+
+ enc->ffve.context->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
+ return ffmpeg_video_encoder_init_codec(&enc->ffve);
+}
+
+static void h264_destroy(void *data)
+{
+ struct h264_encoder *enc = data;
+
+ ffmpeg_video_encoder_free(&enc->ffve);
+ da_free(enc->header);
+ bfree(enc);
+}
+
+static void on_first_packet(void *data, AVPacket *pkt, struct darray *da)
+{
+ struct h264_encoder *enc = data;
+
+ da_copy_array(enc->header, enc->ffve.context->extradata,
+ enc->ffve.context->extradata_size);
+
+ darray_copy_array(1, da, pkt->data, pkt->size);
+}
+
+static void *h264_create_internal(obs_data_t *settings, obs_encoder_t *encoder,
+ const char *enc_lib, const char *enc_name)
+{
+ video_t *video = obs_encoder_video(encoder);
+ const struct video_output_info *voi = video_output_get_info(video);
+
+ switch (voi->format) {
+ // planar 4:2:0 formats
+ case VIDEO_FORMAT_I420: // three-plane
+ case VIDEO_FORMAT_NV12: // two-plane, luma and packed chroma
+ // packed 4:2:2 formats
+ case VIDEO_FORMAT_YVYU:
+ case VIDEO_FORMAT_YUY2: // YUYV
+ case VIDEO_FORMAT_UYVY:
+ // packed uncompressed formats
+ case VIDEO_FORMAT_RGBA:
+ case VIDEO_FORMAT_BGRA:
+ case VIDEO_FORMAT_BGRX:
+ case VIDEO_FORMAT_BGR3:
+ case VIDEO_FORMAT_Y800: // grayscale
+ // planar 4:4:4
+ case VIDEO_FORMAT_I444:
+ // planar 4:2:2
+ case VIDEO_FORMAT_I422:
+ // planar 4:2:0 with alpha
+ case VIDEO_FORMAT_I40A:
+ // planar 4:2:2 with alpha
+ case VIDEO_FORMAT_I42A:
+ // planar 4:4:4 with alpha
+ case VIDEO_FORMAT_YUVA:
+ // packed 4:4:4 with alpha
+ case VIDEO_FORMAT_AYUV:
+ break;
+ default:; // Make the compiler do the right thing
+ const char *const text =
+ obs_module_text("H264.UnsupportedVideoFormat");
+ obs_encoder_set_last_error(encoder, text);
+ blog(LOG_ERROR, "[H.264 encoder] %s", text);
+ return NULL;
+ }
+
+ switch (voi->colorspace) {
+ case VIDEO_CS_DEFAULT:
+ case VIDEO_CS_709:
+ break;
+ default:; // Make the compiler do the right thing
+ const char *const text =
+ obs_module_text("H264.UnsupportedColorSpace");
+ obs_encoder_set_last_error(encoder, text);
+ blog(LOG_ERROR, "[H.264 encoder] %s", text);
+ return NULL;
+ }
+
+ struct h264_encoder *enc = bzalloc(sizeof(*enc));
+
+ if (strcmp(enc_lib, "libopenh264") == 0)
+ enc->type = H264_ENCODER_TYPE_OH264;
+
+ if (!ffmpeg_video_encoder_init(&enc->ffve, enc, encoder, enc_lib, NULL,
+ enc_name, NULL, on_first_packet))
+ goto fail;
+ if (!h264_update(enc, settings))
+ goto fail;
+
+ return enc;
+
+fail:
+ h264_destroy(enc);
+ return NULL;
+}
+
+static void *oh264_create(obs_data_t *settings, obs_encoder_t *encoder)
+{
+ return h264_create_internal(settings, encoder, "libopenh264",
+ "OpenH264");
+}
+
+static bool h264_encode(void *data, struct encoder_frame *frame,
+ struct encoder_packet *packet, bool *received_packet)
+{
+ struct h264_encoder *enc = data;
+ return ffmpeg_video_encode(&enc->ffve, frame, packet, received_packet);
+}
+
+void h264_defaults(obs_data_t *settings)
+{
+ obs_data_set_default_int(settings, "bitrate", 2500);
+ obs_data_set_default_string(settings, "profile", "main");
+}
+
+obs_properties_t *h264_properties(enum h264_encoder_type type)
+{
+ UNUSED_PARAMETER(type); // Only one encoder right now...
+ obs_properties_t *props = obs_properties_create();
+ obs_property_t *p;
+
+ p = obs_properties_add_list(props, "profile",
+ obs_module_text("Profile"),
+ OBS_COMBO_TYPE_LIST,
+ OBS_COMBO_FORMAT_STRING);
+ obs_property_list_add_string(p, "constrained_baseline",
+ "constrained_baseline");
+ obs_property_list_add_string(p, "main", "main");
+ obs_property_list_add_string(p, "high", "high");
+
+ p = obs_properties_add_int(props, "bitrate", obs_module_text("Bitrate"),
+ 50, 300000, 50);
+ obs_property_int_set_suffix(p, " Kbps");
+
+ obs_properties_add_text(props, "ffmpeg_opts",
+ obs_module_text("FFmpegOpts"),
+ OBS_TEXT_DEFAULT);
+
+ return props;
+}
+
+obs_properties_t *oh264_properties(void *unused)
+{
+ UNUSED_PARAMETER(unused);
+ return h264_properties(H264_ENCODER_TYPE_OH264);
+}
+
+static bool h264_extra_data(void *data, uint8_t **extra_data, size_t *size)
+{
+ struct h264_encoder *enc = data;
+
+ *extra_data = enc->header.array;
+ *size = enc->header.num;
+ return true;
+}
+
+struct obs_encoder_info oh264_encoder_info = {
+ .id = "ffmpeg_openh264",
+ .type = OBS_ENCODER_VIDEO,
+ .codec = "h264",
+ .get_name = oh264_getname,
+ .create = oh264_create,
+ .destroy = h264_destroy,
+ .encode = h264_encode,
+ .get_defaults = h264_defaults,
+ .get_properties = oh264_properties,
+ .get_extra_data = h264_extra_data,
+ .get_video_info = h264_video_info,
+};
diff --git a/plugins/obs-ffmpeg/obs-ffmpeg.c b/plugins/obs-ffmpeg/obs-ffmpeg.c
index da0b2c2b4..a01a729c8 100644
--- a/plugins/obs-ffmpeg/obs-ffmpeg.c
+++ b/plugins/obs-ffmpeg/obs-ffmpeg.c
@@ -39,6 +39,7 @@ extern struct obs_encoder_info pcm24_encoder_info;
extern struct obs_encoder_info pcm32_encoder_info;
extern struct obs_encoder_info alac_encoder_info;
extern struct obs_encoder_info flac_encoder_info;
+extern struct obs_encoder_info oh264_encoder_info;
extern struct obs_encoder_info h264_nvenc_encoder_info;
#ifdef ENABLE_HEVC
extern struct obs_encoder_info hevc_nvenc_encoder_info;
@@ -387,6 +388,7 @@ bool obs_module_load(void)
obs_register_output(&ffmpeg_hls_muxer);
obs_register_output(&replay_buffer);
obs_register_encoder(&aac_encoder_info);
+ register_encoder_if_available(&oh264_encoder_info, "libopenh264");
register_encoder_if_available(&svt_av1_encoder_info, "libsvtav1");
register_encoder_if_available(&aom_av1_encoder_info, "libaom-av1");
obs_register_encoder(&opus_encoder_info);
--
2.39.2

View File

@ -0,0 +1,545 @@
From 30f84455969071ff9aa826a44438a0402dd15123 Mon Sep 17 00:00:00 2001
From: Neal Gompa <neal@gompa.dev>
Date: Tue, 28 Mar 2023 05:08:49 -0400
Subject: [PATCH 3/3] UI: Add support for OpenH264 as the worst-case fallback
OpenH264 exists as the codec of last resort, so it is implemented
such that it is only used as the software codec if x264 is not
available.
---
UI/data/locale/en-US.ini | 1 +
UI/window-basic-auto-config-test.cpp | 50 +++++++++++++++++++---------
UI/window-basic-auto-config.cpp | 15 ++++++++-
UI/window-basic-auto-config.hpp | 3 ++
UI/window-basic-main-outputs.cpp | 6 ++--
UI/window-basic-main-profiles.cpp | 34 +++++++++++--------
UI/window-basic-main.cpp | 20 +++++++----
UI/window-basic-main.hpp | 3 +-
UI/window-basic-settings-stream.cpp | 16 ++++++---
UI/window-basic-settings.cpp | 23 ++++++++++---
10 files changed, 123 insertions(+), 48 deletions(-)
diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini
index e44d99660..a5ba5d661 100644
--- a/UI/data/locale/en-US.ini
+++ b/UI/data/locale/en-US.ini
@@ -980,6 +980,7 @@ Basic.Settings.Output.Simple.Warn.Encoder="Warning: Recording with a software en
Basic.Settings.Output.Simple.Warn.Lossless="Warning: Lossless quality generates tremendously large file sizes! Lossless quality can use upward of 7 gigabytes of disk space per minute at high resolutions and framerates. Lossless is not recommended for long recordings unless you have a very large amount of disk space available."
Basic.Settings.Output.Simple.Warn.Lossless.Msg="Are you sure you want to use lossless quality?"
Basic.Settings.Output.Simple.Warn.Lossless.Title="Lossless quality warning!"
+Basic.Settings.Output.Simple.Encoder.Software.OpenH264.H264="Software (OpenH264)"
Basic.Settings.Output.Simple.Encoder.Software.X264.H264="Software (x264)"
Basic.Settings.Output.Simple.Encoder.Hardware.QSV.H264="Hardware (QSV, H.264)"
Basic.Settings.Output.Simple.Encoder.Hardware.QSV.AV1="Hardware (QSV, AV1)"
diff --git a/UI/window-basic-auto-config-test.cpp b/UI/window-basic-auto-config-test.cpp
index 09979c031..c791c8b8b 100644
--- a/UI/window-basic-auto-config-test.cpp
+++ b/UI/window-basic-auto-config-test.cpp
@@ -199,7 +199,8 @@ void AutoConfigTestPage::TestBandwidthThread()
: "rtmp_common";
OBSEncoderAutoRelease vencoder = obs_video_encoder_create(
- "obs_x264", "test_x264", nullptr, nullptr);
+ (wiz->x264Available ? "obs_x264" : "ffmpeg_openh264"),
+ "test_h264", nullptr, nullptr);
OBSEncoderAutoRelease aencoder = obs_audio_encoder_create(
"ffmpeg_aac", "test_aac", nullptr, 0, nullptr);
OBSServiceAutoRelease service = obs_service_create(
@@ -238,10 +239,11 @@ void AutoConfigTestPage::TestBandwidthThread()
obs_data_set_string(service_settings, "key", key.c_str());
obs_data_set_int(vencoder_settings, "bitrate", wiz->startingBitrate);
- obs_data_set_string(vencoder_settings, "rate_control", "CBR");
- obs_data_set_string(vencoder_settings, "preset", "veryfast");
- obs_data_set_int(vencoder_settings, "keyint_sec", 2);
-
+ if (wiz->x264Available) {
+ obs_data_set_string(vencoder_settings, "rate_control", "CBR");
+ obs_data_set_string(vencoder_settings, "preset", "veryfast");
+ obs_data_set_int(vencoder_settings, "keyint_sec", 2);
+ }
obs_data_set_int(aencoder_settings, "bitrate", 32);
OBSBasic *main = reinterpret_cast<OBSBasic *>(App()->GetMainWindow());
@@ -567,7 +569,8 @@ bool AutoConfigTestPage::TestSoftwareEncoding()
/* create obs objects */
OBSEncoderAutoRelease vencoder = obs_video_encoder_create(
- "obs_x264", "test_x264", nullptr, nullptr);
+ (wiz->x264Available ? "obs_x264" : "ffmpeg_openh264"),
+ "test_h264", nullptr, nullptr);
OBSEncoderAutoRelease aencoder = obs_audio_encoder_create(
"ffmpeg_aac", "test_aac", nullptr, 0, nullptr);
OBSOutputAutoRelease output =
@@ -581,17 +584,25 @@ bool AutoConfigTestPage::TestSoftwareEncoding()
obs_data_set_int(aencoder_settings, "bitrate", 32);
if (wiz->type != AutoConfig::Type::Recording) {
- obs_data_set_int(vencoder_settings, "keyint_sec", 2);
+ if (wiz->x264Available) {
+ obs_data_set_int(vencoder_settings, "keyint_sec", 2);
+ obs_data_set_string(vencoder_settings, "rate_control",
+ "CBR");
+ obs_data_set_string(vencoder_settings, "preset",
+ "veryfast");
+ }
obs_data_set_int(vencoder_settings, "bitrate",
wiz->idealBitrate);
- obs_data_set_string(vencoder_settings, "rate_control", "CBR");
obs_data_set_string(vencoder_settings, "profile", "main");
- obs_data_set_string(vencoder_settings, "preset", "veryfast");
} else {
- obs_data_set_int(vencoder_settings, "crf", 20);
- obs_data_set_string(vencoder_settings, "rate_control", "CRF");
+ if (wiz->x264Available) {
+ obs_data_set_int(vencoder_settings, "crf", 20);
+ obs_data_set_string(vencoder_settings, "rate_control",
+ "CRF");
+ obs_data_set_string(vencoder_settings, "preset",
+ "veryfast");
+ }
obs_data_set_string(vencoder_settings, "profile", "high");
- obs_data_set_string(vencoder_settings, "preset", "veryfast");
}
/* -----------------------------------*/
@@ -944,7 +955,10 @@ void AutoConfigTestPage::TestStreamEncoderThread()
else
wiz->streamingEncoder = AutoConfig::Encoder::AMD;
} else {
- wiz->streamingEncoder = AutoConfig::Encoder::x264;
+ if (wiz->x264Available)
+ wiz->streamingEncoder = AutoConfig::Encoder::x264;
+ else
+ wiz->streamingEncoder = AutoConfig::Encoder::OpenH264;
}
if (preferHardware && !softwareTested && wiz->hardwareEncodingAvailable)
@@ -979,7 +993,10 @@ void AutoConfigTestPage::TestRecordingEncoderThread()
else
wiz->recordingEncoder = AutoConfig::Encoder::AMD;
} else {
- wiz->recordingEncoder = AutoConfig::Encoder::x264;
+ if (wiz->x264Available)
+ wiz->streamingEncoder = AutoConfig::Encoder::x264;
+ else
+ wiz->streamingEncoder = AutoConfig::Encoder::OpenH264;
}
if (wiz->recordingEncoder != AutoConfig::Encoder::NVENC) {
@@ -993,6 +1010,7 @@ void AutoConfigTestPage::TestRecordingEncoderThread()
}
#define ENCODER_TEXT(x) "Basic.Settings.Output.Simple.Encoder." x
+#define ENCODER_OPENH264 ENCODER_TEXT("Software.OpenH264.H264")
#define ENCODER_X264 ENCODER_TEXT("Software.X264.H264")
#define ENCODER_NVENC ENCODER_TEXT("Hardware.NVENC.H264")
#define ENCODER_QSV ENCODER_TEXT("Hardware.QSV.H264")
@@ -1032,6 +1050,8 @@ void AutoConfigTestPage::FinalizeResults()
auto encName = [](AutoConfig::Encoder enc) -> QString {
switch (enc) {
+ case AutoConfig::Encoder::OpenH264:
+ return QTStr(ENCODER_OPENH264);
case AutoConfig::Encoder::x264:
return QTStr(ENCODER_X264);
case AutoConfig::Encoder::NVENC:
@@ -1046,7 +1066,7 @@ void AutoConfigTestPage::FinalizeResults()
return QTStr(QUALITY_SAME);
}
- return QTStr(ENCODER_X264);
+ return QTStr(ENCODER_OPENH264);
};
auto newLabel = [this](const char *str) -> QLabel * {
diff --git a/UI/window-basic-auto-config.cpp b/UI/window-basic-auto-config.cpp
index 3e9c36685..eace18067 100644
--- a/UI/window-basic-auto-config.cpp
+++ b/UI/window-basic-auto-config.cpp
@@ -961,6 +961,7 @@ AutoConfig::AutoConfig(QWidget *parent) : QWizard(parent)
streamPage->ui->bitrate->setValue(bitrate);
streamPage->ServiceChanged();
+ TestSoftwareEncoding();
TestHardwareEncoding();
if (!hardwareEncodingAvailable) {
delete streamPage->ui->preferHardware;
@@ -989,6 +990,16 @@ AutoConfig::~AutoConfig()
EnableThreadedMessageBoxes(false);
}
+void AutoConfig::TestSoftwareEncoding()
+{
+ size_t idx = 0;
+ const char *id;
+ while (obs_enum_encoder_types(idx++, &id)) {
+ if (strcmp(id, "obs_x264") == 0)
+ x264Available = true;
+ }
+}
+
void AutoConfig::TestHardwareEncoding()
{
size_t idx = 0;
@@ -1061,8 +1072,10 @@ inline const char *AutoConfig::GetEncoderId(Encoder enc)
return SIMPLE_ENCODER_AMD;
case Encoder::Apple:
return SIMPLE_ENCODER_APPLE_H264;
- default:
+ case Encoder::x264:
return SIMPLE_ENCODER_X264;
+ default:
+ return SIMPLE_ENCODER_OPENH264;
}
};
diff --git a/UI/window-basic-auto-config.hpp b/UI/window-basic-auto-config.hpp
index eb50701ff..e581791dd 100644
--- a/UI/window-basic-auto-config.hpp
+++ b/UI/window-basic-auto-config.hpp
@@ -43,6 +43,7 @@ class AutoConfig : public QWizard {
};
enum class Encoder {
+ OpenH264,
x264,
NVENC,
QSV,
@@ -91,6 +92,7 @@ class AutoConfig : public QWizard {
bool qsvAvailable = false;
bool vceAvailable = false;
bool appleAvailable = false;
+ bool x264Available = false;
int startingBitrate = 2500;
bool customServer = false;
@@ -106,6 +108,7 @@ class AutoConfig : public QWizard {
int specificFPSNum = 0;
int specificFPSDen = 0;
+ void TestSoftwareEncoding();
void TestHardwareEncoding();
bool CanTestServer(const char *server);
diff --git a/UI/window-basic-main-outputs.cpp b/UI/window-basic-main-outputs.cpp
index 737ab966d..a4df630c4 100644
--- a/UI/window-basic-main-outputs.cpp
+++ b/UI/window-basic-main-outputs.cpp
@@ -515,7 +515,9 @@ void SimpleOutput::LoadStreamingPreset_Lossy(const char *encoderId)
/* mistakes have been made to lead us to this. */
const char *get_simple_output_encoder(const char *encoder)
{
- if (strcmp(encoder, SIMPLE_ENCODER_X264) == 0) {
+ if (strcmp(encoder, SIMPLE_ENCODER_OPENH264) == 0) {
+ return "ffmpeg_openh264";
+ } else if (strcmp(encoder, SIMPLE_ENCODER_X264) == 0) {
return "obs_x264";
} else if (strcmp(encoder, SIMPLE_ENCODER_X264_LOWCPU) == 0) {
return "obs_x264";
@@ -549,7 +551,7 @@ const char *get_simple_output_encoder(const char *encoder)
#endif
}
- return "obs_x264";
+ return "ffmpeg_openh264";
}
void SimpleOutput::LoadRecordingPreset()
diff --git a/UI/window-basic-main-profiles.cpp b/UI/window-basic-main-profiles.cpp
index 4941359ea..1f3ffdc1d 100644
--- a/UI/window-basic-main-profiles.cpp
+++ b/UI/window-basic-main-profiles.cpp
@@ -794,7 +794,7 @@ void OBSBasic::ChangeProfile()
Auth::Load();
- CheckForSimpleModeX264Fallback();
+ CheckForSimpleModeH264Fallback();
blog(LOG_INFO, "Switched to profile '%s' (%s)", newName, newDir);
blog(LOG_INFO, "------------------------------------------------");
@@ -815,12 +815,13 @@ void OBSBasic::ChangeProfile()
}
}
-void OBSBasic::CheckForSimpleModeX264Fallback()
+void OBSBasic::CheckForSimpleModeH264Fallback()
{
const char *curStreamEncoder =
config_get_string(basicConfig, "SimpleOutput", "StreamEncoder");
const char *curRecEncoder =
config_get_string(basicConfig, "SimpleOutput", "RecEncoder");
+ bool x264_supported = false;
bool qsv_supported = false;
bool qsv_av1_supported = false;
bool amd_supported = false;
@@ -837,7 +838,9 @@ void OBSBasic::CheckForSimpleModeX264Fallback()
const char *id;
while (obs_enum_encoder_types(idx++, &id)) {
- if (strcmp(id, "amd_amf_h264") == 0)
+ if (strcmp(id, "obs_x264") == 0)
+ x264_supported = true;
+ else if (strcmp(id, "amd_amf_h264") == 0)
amd_supported = true;
else if (strcmp(id, "obs_qsv11") == 0)
qsv_supported = true;
@@ -865,68 +868,73 @@ void OBSBasic::CheckForSimpleModeX264Fallback()
#endif
}
+ // Check to see whether x264 is available
+ const char *fallback_encoder_name = (x264_supported
+ ? SIMPLE_ENCODER_X264
+ : SIMPLE_ENCODER_OPENH264);
+
auto CheckEncoder = [&](const char *&name) {
if (strcmp(name, SIMPLE_ENCODER_QSV) == 0) {
if (!qsv_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
} else if (strcmp(name, SIMPLE_ENCODER_QSV_AV1) == 0) {
if (!qsv_av1_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
} else if (strcmp(name, SIMPLE_ENCODER_NVENC) == 0) {
if (!nve_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
} else if (strcmp(name, SIMPLE_ENCODER_NVENC_AV1) == 0) {
if (!nve_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
#ifdef ENABLE_HEVC
} else if (strcmp(name, SIMPLE_ENCODER_AMD_HEVC) == 0) {
if (!amd_hevc_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
} else if (strcmp(name, SIMPLE_ENCODER_NVENC_HEVC) == 0) {
if (!nve_hevc_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
#endif
} else if (strcmp(name, SIMPLE_ENCODER_AMD) == 0) {
if (!amd_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
} else if (strcmp(name, SIMPLE_ENCODER_AMD_AV1) == 0) {
if (!amd_av1_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
} else if (strcmp(name, SIMPLE_ENCODER_APPLE_H264) == 0) {
if (!apple_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
#ifdef ENABLE_HEVC
} else if (strcmp(name, SIMPLE_ENCODER_APPLE_HEVC) == 0) {
if (!apple_hevc_supported) {
changed = true;
- name = SIMPLE_ENCODER_X264;
+ name = fallback_encoder_name;
return false;
}
#endif
diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp
index 6d9375eb4..c6aae8c7b 100644
--- a/UI/window-basic-main.cpp
+++ b/UI/window-basic-main.cpp
@@ -1379,6 +1379,8 @@ extern void CheckExistingCookieId();
#define DEFAULT_CONTAINER "fragmented_mp4"
#endif
+extern bool EncoderAvailable(const char *encoder);
+
bool OBSBasic::InitBasicConfigDefaults()
{
QList<QScreen *> screens = QGuiApplication::screens();
@@ -1549,7 +1551,10 @@ bool OBSBasic::InitBasicConfigDefaults()
config_set_default_bool(basicConfig, "AdvOut", "UseRescale", false);
config_set_default_uint(basicConfig, "AdvOut", "TrackIndex", 1);
config_set_default_uint(basicConfig, "AdvOut", "VodTrackIndex", 2);
- config_set_default_string(basicConfig, "AdvOut", "Encoder", "obs_x264");
+
+ bool useX264 = EncoderAvailable("obs_x264");
+ config_set_default_string(basicConfig, "AdvOut", "Encoder",
+ (useX264 ? "obs_x264" : "ffmpeg_openh264"));
config_set_default_string(basicConfig, "AdvOut", "RecType", "Standard");
@@ -1672,7 +1677,6 @@ bool OBSBasic::InitBasicConfigDefaults()
return true;
}
-extern bool EncoderAvailable(const char *encoder);
extern bool update_nvenc_presets(ConfigFile &config);
void OBSBasic::InitBasicConfigDefaults2()
@@ -1681,12 +1685,14 @@ void OBSBasic::InitBasicConfigDefaults2()
"Pre23Defaults");
bool useNV = EncoderAvailable("ffmpeg_nvenc") && !oldEncDefaults;
+ bool useX264 = EncoderAvailable("obs_x264");
+ const char *h264_fallback =
+ (useX264 ? SIMPLE_ENCODER_X264 : SIMPLE_ENCODER_OPENH264);
+
config_set_default_string(basicConfig, "SimpleOutput", "StreamEncoder",
- useNV ? SIMPLE_ENCODER_NVENC
- : SIMPLE_ENCODER_X264);
+ useNV ? SIMPLE_ENCODER_NVENC : h264_fallback);
config_set_default_string(basicConfig, "SimpleOutput", "RecEncoder",
- useNV ? SIMPLE_ENCODER_NVENC
- : SIMPLE_ENCODER_X264);
+ useNV ? SIMPLE_ENCODER_NVENC : h264_fallback);
const char *aac_default = "ffmpeg_aac";
if (EncoderAvailable("CoreAudio_AAC"))
@@ -1967,7 +1973,7 @@ void OBSBasic::OBSInit()
InitBasicConfigDefaults2();
- CheckForSimpleModeX264Fallback();
+ CheckForSimpleModeH264Fallback();
blog(LOG_INFO, STARTUP_SEPARATOR);
diff --git a/UI/window-basic-main.hpp b/UI/window-basic-main.hpp
index cbce69832..74c6eb144 100644
--- a/UI/window-basic-main.hpp
+++ b/UI/window-basic-main.hpp
@@ -66,6 +66,7 @@ class OBSBasicVCamConfig;
#define SIMPLE_ENCODER_X264 "x264"
#define SIMPLE_ENCODER_X264_LOWCPU "x264_lowcpu"
+#define SIMPLE_ENCODER_OPENH264 "ffmpeg_openh264"
#define SIMPLE_ENCODER_QSV "qsv"
#define SIMPLE_ENCODER_QSV_AV1 "qsv_av1"
#define SIMPLE_ENCODER_NVENC "nvenc"
@@ -434,7 +435,7 @@ private:
void DeleteProfile(const char *profile_name, const char *profile_dir);
void RefreshProfiles();
void ChangeProfile();
- void CheckForSimpleModeX264Fallback();
+ void CheckForSimpleModeH264Fallback();
void SaveProjectNow();
diff --git a/UI/window-basic-settings-stream.cpp b/UI/window-basic-settings-stream.cpp
index b056938e7..548e5f45f 100644
--- a/UI/window-basic-settings-stream.cpp
+++ b/UI/window-basic-settings-stream.cpp
@@ -1362,7 +1362,9 @@ static QString get_adv_fallback(const QString &enc)
return "com.apple.videotoolbox.videoencoder.ave.avc";
if (enc == "obs_qsv11_av1")
return "obs_qsv11";
- return "obs_x264";
+ if (EncoderAvailable("obs_x264"))
+ return "obs_x264";
+ return "ffmpeg_openh264";
}
static QString get_adv_audio_fallback(const QString &enc)
@@ -1391,7 +1393,9 @@ static QString get_simple_fallback(const QString &enc)
return SIMPLE_ENCODER_APPLE_H264;
if (enc == SIMPLE_ENCODER_QSV_AV1)
return SIMPLE_ENCODER_QSV;
- return SIMPLE_ENCODER_X264;
+ if (EncoderAvailable("obs_x264"))
+ return SIMPLE_ENCODER_X264;
+ return SIMPLE_ENCODER_OPENH264;
}
bool OBSBasicSettings::ServiceSupportsCodecCheck()
@@ -1585,8 +1589,12 @@ void OBSBasicSettings::ResetEncoders(bool streamOnly)
#define ENCODER_STR(str) QTStr("Basic.Settings.Output.Simple.Encoder." str)
- ui->simpleOutStrEncoder->addItem(ENCODER_STR("Software.X264.H264"),
- QString(SIMPLE_ENCODER_X264));
+ ui->simpleOutStrEncoder->addItem(ENCODER_STR("Software.OpenH264.H264"),
+ QString(SIMPLE_ENCODER_OPENH264));
+ if (service_supports_encoder(vcodecs, "obs_x264"))
+ ui->simpleOutStrEncoder->addItem(
+ ENCODER_STR("Software.X264.H264"),
+ QString(SIMPLE_ENCODER_X264));
if (service_supports_encoder(vcodecs, "obs_qsv11"))
ui->simpleOutStrEncoder->addItem(
ENCODER_STR("Hardware.QSV.H264"),
diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp
index 48bb4bac6..51fe280db 100644
--- a/UI/window-basic-settings.cpp
+++ b/UI/window-basic-settings.cpp
@@ -3831,6 +3831,11 @@ void OBSBasicSettings::SaveOutputSettings()
do. This only exists to make sure that the x264 preset doesn't
get overwritten with empty data. */
presetType = "ApplePreset";
+ else if (encoder == SIMPLE_ENCODER_OPENH264)
+ /* The OpenH264 encoder does not have presets like the other encoders
+ do. This only exists to make sure that the x264 preset doesn't
+ get overwritten with empty data. */
+ presetType = "OpenH264Preset";
else
presetType = "Preset";
@@ -5286,11 +5291,16 @@ void OBSBasicSettings::FillSimpleRecordingValues()
ADD_QUALITY("HQ");
ADD_QUALITY("Lossless");
- ui->simpleOutRecEncoder->addItem(ENCODER_STR("Software.X264.H264"),
- QString(SIMPLE_ENCODER_X264));
- ui->simpleOutRecEncoder->addItem(
- ENCODER_STR("SoftwareLowCPU.X264.H264"),
- QString(SIMPLE_ENCODER_X264_LOWCPU));
+ ui->simpleOutRecEncoder->addItem(ENCODER_STR("Software.OpenH264.H264"),
+ QString(SIMPLE_ENCODER_OPENH264));
+ if (EncoderAvailable("obs_x264")) {
+ ui->simpleOutRecEncoder->addItem(
+ ENCODER_STR("Software.X264.H264"),
+ QString(SIMPLE_ENCODER_X264));
+ ui->simpleOutRecEncoder->addItem(
+ ENCODER_STR("SoftwareLowCPU.X264.H264"),
+ QString(SIMPLE_ENCODER_X264_LOWCPU));
+ }
if (EncoderAvailable("obs_qsv11"))
ui->simpleOutRecEncoder->addItem(
ENCODER_STR("Hardware.QSV.H264"),
@@ -5463,6 +5473,9 @@ void OBSBasicSettings::SimpleStreamingEncoderChanged()
defaultPreset = "balanced";
preset = curAMDAV1Preset;
+ } else if (encoder == SIMPLE_ENCODER_OPENH264) {
+ ui->simpleOutPreset->setVisible(false);
+ ui->simpleOutPresetLabel->setVisible(false);
} else {
#define PRESET_STR(val) \
--
2.39.2

31
obs-studio-PR8763.patch Normal file
View File

@ -0,0 +1,31 @@
From 67803fa3106cff4daefbdfd872045ca9cc7f4569 Mon Sep 17 00:00:00 2001
From: derrod <dennis@obsproject.com>
Date: Mon, 17 Apr 2023 03:42:56 +0200
Subject: [PATCH] cmake: Set C11 for CMake < 3.21
---
cmake/Modules/CompilerConfig.cmake | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
diff --git a/cmake/Modules/CompilerConfig.cmake b/cmake/Modules/CompilerConfig.cmake
index 763490008c848..41c56da8b4cee 100644
--- a/cmake/Modules/CompilerConfig.cmake
+++ b/cmake/Modules/CompilerConfig.cmake
@@ -5,8 +5,15 @@ set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
-set(CMAKE_C_STANDARD 17)
-set(CMAKE_C_STANDARD_REQUIRED ON)
+# CMake < 3.21 only goes up to 11, but it's mostly identical to 17 anyway.
+if(${CMAKE_VERSION} VERSION_LESS "3.21.0")
+ set(CMAKE_C_STANDARD 11)
+ set(CMAKE_C_STANDARD_REQUIRED ON)
+else()
+ set(CMAKE_C_STANDARD 17)
+ set(CMAKE_C_STANDARD_REQUIRED ON)
+endif()
+
# TODO/FIXME: Investigate disabling C extensions on Linux/POSIX
if(OS_MACOS OR NOT OS_POSIX)
set(CMAKE_C_EXTENSIONS OFF)

View File

@ -0,0 +1,191 @@
From fc1e6bf09f9c9d1501cd1d46a443501b19080d8d Mon Sep 17 00:00:00 2001
From: Neal Gompa <neal@gompa.dev>
Date: Sat, 15 Apr 2023 22:48:21 -0400
Subject: [PATCH] deps: Add license declaration files
---
deps/blake2/LICENSE.blake2 | 19 +++++++++++
deps/libff/LICENSE.libff | 18 ++++++++++
libobs/graphics/libnsgif/LICENSE.libnsgif | 33 +++++++++++++++++++
libobs/util/simde/LICENSE.simde | 40 +++++++++++++++++++++++
plugins/decklink/LICENSE.decklink-sdk | 30 +++++++++++++++++
5 files changed, 140 insertions(+)
create mode 100644 deps/blake2/LICENSE.blake2
create mode 100644 deps/libff/LICENSE.libff
create mode 100644 libobs/graphics/libnsgif/LICENSE.libnsgif
create mode 100644 libobs/util/simde/LICENSE.simde
create mode 100644 plugins/decklink/LICENSE.decklink-sdk
diff --git a/deps/blake2/LICENSE.blake2 b/deps/blake2/LICENSE.blake2
new file mode 100644
index 000000000..3a8abc787
--- /dev/null
+++ b/deps/blake2/LICENSE.blake2
@@ -0,0 +1,19 @@
+BLAKE2 is licensed to permit usage under the terms of the CC0, the OpenSSL License,
+ or the Apache Public License 2.0 at the user's option.
+
+The license grant is reproduced in full below.
+
+/*
+ BLAKE2 reference source code package - reference C implementations
+
+ Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the
+ terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
+ your option. The terms of these licenses can be found at:
+
+ - CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
+ - OpenSSL license : https://www.openssl.org/source/license.html
+ - Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0
+
+ More information about the BLAKE2 hash function can be found at
+ https://blake2.net.
+*/
diff --git a/deps/libff/LICENSE.libff b/deps/libff/LICENSE.libff
new file mode 100644
index 000000000..b6f51157a
--- /dev/null
+++ b/deps/libff/LICENSE.libff
@@ -0,0 +1,18 @@
+libff is licensed under the ISC license. The license terms are fully
+reproduced below:
+
+/*
+ * Copyright (c) 2015 John R. Bradley <jrb@turrettech.com>
+ *
+ * Permission to use, copy, modify, and distribute this software for any
+ * purpose with or without fee is hereby granted, provided that the above
+ * copyright notice and this permission notice appear in all copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
diff --git a/libobs/graphics/libnsgif/LICENSE.libnsgif b/libobs/graphics/libnsgif/LICENSE.libnsgif
new file mode 100644
index 000000000..9b28c0b45
--- /dev/null
+++ b/libobs/graphics/libnsgif/LICENSE.libnsgif
@@ -0,0 +1,33 @@
+libnsgif is licensed under the MIT license. The licensing statement
+and the full license are reproduced below.
+
+/*
+ * Copyright 2003 James Bursa <bursa@users.sourceforge.net>
+ * Copyright 2004 John Tytgat <John.Tytgat@aaug.net>
+ * Copyright 2004 Richard Wilson <richard.wilson@netsurf-browser.org>
+ * Copyright 2008 Sean Fox <dyntryx@gmail.com>
+ *
+ * This file is part of NetSurf's libnsgif, http://www.netsurf-browser.org/
+ * Licenced under the MIT License,
+ * http://www.opensource.org/licenses/mit-license.php
+ */
+
+The MIT License
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/libobs/util/simde/LICENSE.simde b/libobs/util/simde/LICENSE.simde
new file mode 100644
index 000000000..78d482e75
--- /dev/null
+++ b/libobs/util/simde/LICENSE.simde
@@ -0,0 +1,40 @@
+simde is licensed as a combination of MIT and CC0 code.
+
+License notices for both are reproduced below:
+
+/* SPDX-License-Identifier: MIT
+ *
+ * Permission is hereby granted, free of charge, to any person
+ * obtaining a copy of this software and associated documentation
+ * files (the "Software"), to deal in the Software without
+ * restriction, including without limitation the rights to use, copy,
+ * modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be
+ * included in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ *
+ * Copyright:
+ * 2017-2020 Evan Nemerson <evan@nemerson.com>
+ */
+
+/* Portable Snippets - https://gitub.com/nemequ/portable-snippets
+ * Created by Evan Nemerson <evan@nemerson.com>
+ *
+ * To the extent possible under law, the authors have waived all
+ * copyright and related or neighboring rights to this code. For
+ * details, see the Creative Commons Zero 1.0 Universal license at
+ * https://creativecommons.org/publicdomain/zero/1.0/
+ *
+ * SPDX-License-Identifier: CC0-1.0
+ */
diff --git a/plugins/decklink/LICENSE.decklink-sdk b/plugins/decklink/LICENSE.decklink-sdk
new file mode 100644
index 000000000..d320d805b
--- /dev/null
+++ b/plugins/decklink/LICENSE.decklink-sdk
@@ -0,0 +1,30 @@
+decklink-sdk is licensed under to Boost Software License 1.0 (BSL-1.0).
+
+The license text is reproduced in full below:
+
+/* -LICENSE-START-
+** Copyright (c) 2020 Blackmagic Design
+**
+** Permission is hereby granted, free of charge, to any person or organization
+** obtaining a copy of the software and accompanying documentation covered by
+** this license (the "Software") to use, reproduce, display, distribute,
+** execute, and transmit the Software, and to prepare derivative works of the
+** Software, and to permit third-parties to whom the Software is furnished to
+** do so, all subject to the following:
+**
+** The copyright notices in the Software and this entire statement, including
+** the above license grant, this restriction and the following disclaimer,
+** must be included in all copies of the Software, in whole or in part, and
+** all derivative works of the Software, unless such copies or derivative
+** works are solely in the form of machine-executable object code generated by
+** a source language processor.
+**
+** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+** DEALINGS IN THE SOFTWARE.
+** -LICENSE-END-
+*/
--
2.40.0

View File

@ -0,0 +1,79 @@
From 3a0f7532b9d9b83d90dd5b6c2096e7f9bca88879 Mon Sep 17 00:00:00 2001
From: Neal Gompa <neal@gompa.dev>
Date: Tue, 18 Apr 2023 02:58:37 -0400
Subject: [PATCH] obs-qsv11: Add license declaration file
---
plugins/obs-qsv11/obs-qsv11-LICENSE.txt | 60 +++++++++++++++++++++++++
1 file changed, 60 insertions(+)
create mode 100644 plugins/obs-qsv11/obs-qsv11-LICENSE.txt
diff --git a/plugins/obs-qsv11/obs-qsv11-LICENSE.txt b/plugins/obs-qsv11/obs-qsv11-LICENSE.txt
new file mode 100644
index 000000000..216c02e41
--- /dev/null
+++ b/plugins/obs-qsv11/obs-qsv11-LICENSE.txt
@@ -0,0 +1,60 @@
+The OBS QSV plugin is licensed under either the BSD-3-Clause or GPL-2.0-only licenses.
+
+The license declaration is reproduced in full below:
+
+/*
+
+This file is provided under a dual BSD/GPLv2 license. When using or
+redistributing this file, you may do so under either license.
+
+GPL LICENSE SUMMARY
+
+Copyright(c) Oct. 2015 Intel Corporation.
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of version 2 of the GNU General Public License as
+published by the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+Contact Information:
+
+Seung-Woo Kim, seung-woo.kim@intel.com
+705 5th Ave S #500, Seattle, WA 98104
+
+BSD LICENSE
+
+Copyright(c) <date> Intel Corporation.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+* Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+* Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in
+the documentation and/or other materials provided with the
+distribution.
+
+* Neither the name of Intel Corporation nor the names of its
+contributors may be used to endorse or promote products derived
+from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
--
2.40.0

View File

@ -0,0 +1,107 @@
From 1e2fc3ade587a7a7c24e4238996ca382c4c0f719 Mon Sep 17 00:00:00 2001
From: Neal Gompa <ngompa@fedoraproject.org>
Date: Tue, 27 Dec 2022 09:15:08 -0500
Subject: [PATCH] CMake: Use the system version of QRCodeGenCPP dependency
---
CMakeLists.txt | 9 +++++++--
cmake/legacy.cmake | 12 ++++++++----
src/forms/ConnectInfo.cpp | 2 +-
3 files changed, 16 insertions(+), 7 deletions(-)
diff --git a/plugins/obs-websocket/CMakeLists.txt b/plugins/obs-websocket/CMakeLists.txt
index 871f92b..288cc87 100644
--- a/plugins/obs-websocket/CMakeLists.txt
+++ b/plugins/obs-websocket/CMakeLists.txt
@@ -13,7 +13,7 @@ endif()
# Submodule deps check
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/deps/qr/cpp/QrCode.hpp")
- message(FATAL_ERROR "obs-websocket submodule deps not available.")
+ message(INFO "obs-websocket submodule deps not available.")
endif()
# Find Qt
@@ -22,6 +22,9 @@ find_qt(COMPONENTS Core Widgets Svg Network)
# Find nlohmann JSON
find_package(nlohmann_json 3 REQUIRED)
+# Find qrcodegencpp
+find_package(qrcodegencpp REQUIRED)
+
# Find WebSocket++
find_package(Websocketpp 0.8 REQUIRED)
@@ -157,7 +160,9 @@ target_link_libraries(
Qt::Network
nlohmann_json::nlohmann_json
Websocketpp::Websocketpp
- Asio::Asio)
+ Asio::Asio
+ qrcodegencpp
+ )
set_target_properties_obs(
obs-websocket
diff --git a/plugins/obs-websocket/cmake/legacy.cmake b/plugins/obs-websocket/cmake/legacy.cmake
index ab25ec7..98ca704 100644
--- a/plugins/obs-websocket/cmake/legacy.cmake
+++ b/plugins/obs-websocket/cmake/legacy.cmake
@@ -10,7 +10,7 @@ endif()
# Submodule deps check
if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/deps/qr/cpp/QrCode.hpp)
- obs_status(FATAL_ERROR "obs-websocket submodule deps not available.")
+ obs_status(INFO "obs-websocket submodule deps not available.")
endif()
# Plugin tests flag
@@ -22,6 +22,9 @@ find_qt(COMPONENTS Core Widgets Svg Network)
# Find nlohmann JSON
find_package(nlohmann_json 3 REQUIRED)
+# Find qrcodegencpp
+find_package(qrcodegencpp REQUIRED)
+
# Find WebSocket++
find_package(Websocketpp 0.8 REQUIRED)
@@ -129,8 +132,7 @@ target_sources(
src/utils/Compat.cpp
src/utils/Compat.h
src/utils/Utils.h
- deps/qr/cpp/QrCode.cpp
- deps/qr/cpp/QrCode.hpp)
+ )
target_link_libraries(
obs-websocket
@@ -142,7 +144,9 @@ target_link_libraries(
Qt::Network
nlohmann_json::nlohmann_json
Websocketpp::Websocketpp
- Asio::Asio)
+ Asio::Asio
+ qrcodegencpp
+ )
target_compile_features(obs-websocket PRIVATE cxx_std_17)
diff --git a/plugins/obs-websocket/src/forms/ConnectInfo.cpp b/plugins/obs-websocket/src/forms/ConnectInfo.cpp
index ddb979d..89a04c4 100644
--- a/plugins/obs-websocket/src/forms/ConnectInfo.cpp
+++ b/plugins/obs-websocket/src/forms/ConnectInfo.cpp
@@ -21,9 +21,9 @@ with this program. If not, see <https://www.gnu.org/licenses/>
#include <QPainter>
#include <QUrl>
#include <obs-module.h>
+#include <qrcodegencpp/QrCode.hpp>
#include "ConnectInfo.h"
-#include "../../deps/qr/cpp/QrCode.hpp"
#include "../obs-websocket.h"
#include "../Config.h"
#include "../utils/Platform.h"
--
2.39.2

802
obs-studio.spec Normal file
View File

@ -0,0 +1,802 @@
%ifarch %{power64} s390x
# LuaJIT is not available for POWER and IBM Z
%bcond_with lua_scripting
%else
%bcond_without lua_scripting
%endif
# VLC is not yet in Fedora
%bcond_with vlc
# x264 is not in Fedora
%bcond_with x264
%global obswebsocket_version 5.2.2
#global commit ad859a3f66daac0d30eebcc9b07b0c2004fb6040
#global snapdate 202303261743
#global shortcommit %(c=%{commit}; echo ${c:0:7})
Name: obs-studio
Version: 29.1.0~beta4
Release: 1%{?dist}
Summary: Open Broadcaster Software Studio
# OBS itself is GPL-2.0-or-later, while various plugin dependencies are of various other licenses
# The licenses for those dependencies are captured with the bundled provides statements
License: GPL-2.0-or-later and ISC and MIT and BSD-1-Clause and BSD-2-Clause and BSD-3-Clause and BSL-1.0 and LGPL-2.1-or-later and CC0-1.0 and (CC0-1.0 or OpenSSL or Apache-2.0) and LicenseRef-Fedora-Public-Domain and (BSD-3-Clause or GPL-2.0-only)
URL: https://obsproject.com/
%if 0%{?snapdate}
Source0: https://github.com/obsproject/obs-studio/archive/%{commit}/%{name}-%{commit}.tar.gz
%else
Source0: https://github.com/obsproject/obs-studio/archive/%{version_no_tilde}/%{name}-%{version_no_tilde}.tar.gz
%endif
Source1: https://github.com/obsproject/obs-websocket/archive/%{obswebsocket_version}/obs-websocket-%{obswebsocket_version}.tar.gz
# Backports from upstream
# Proposed upstream
## From: https://github.com/obsproject/obs-studio/pull/8529
Patch0101: 0001-UI-Consistently-reference-the-software-H264-encoder-.patch
Patch0102: 0002-obs-ffmpeg-Add-initial-support-for-the-OpenH264-H.26.patch
Patch0103: 0003-UI-Add-support-for-OpenH264-as-the-worst-case-fallba.patch
## From: https://github.com/obsproject/obs-studio/pull/8763
Patch0104: obs-studio-PR8763.patch
# Downstream Fedora patches
## Use system qrcodegencpp
Patch1001: obs-studio-websocket-use-system-qrcodegencpp.patch
## Add license declarations for bundled deps
Patch9001: obs-studio-deps-Add-license-declaration-files.patch
## Add license declaration for obs-qsv11
Patch9002: obs-studio-obs-qsv11-Add-license-declaration-file.patch
BuildRequires: gcc
BuildRequires: cmake >= 3.16
BuildRequires: ninja-build
BuildRequires: libappstream-glib
BuildRequires: desktop-file-utils
BuildRequires: alsa-lib-devel
BuildRequires: asio-devel
BuildRequires: fdk-aac-free-devel
BuildRequires: ffmpeg-free-devel
BuildRequires: fontconfig-devel
BuildRequires: freetype-devel
BuildRequires: jansson-devel >= 2.5
BuildRequires: json-devel
BuildRequires: libcurl-devel
BuildRequires: libdrm-devel
BuildRequires: libGL-devel
BuildRequires: libglvnd-devel
BuildRequires: librist-devel
BuildRequires: srt-devel
BuildRequires: libuuid-devel
BuildRequires: libv4l-devel
BuildRequires: libva-devel
BuildRequires: libX11-devel
BuildRequires: libxcb-devel
BuildRequires: libXcomposite-devel
BuildRequires: libXinerama-devel
BuildRequires: libxkbcommon-devel
%if %{with lua_scripting}
BuildRequires: luajit-devel
%endif
BuildRequires: mbedtls-devel
BuildRequires: pciutils-devel
BuildRequires: pipewire-devel
BuildRequires: pipewire-jack-audio-connection-kit-devel
BuildRequires: pulseaudio-libs-devel
BuildRequires: python3-devel
BuildRequires: libqrcodegencpp-devel
BuildRequires: qt6-qtbase-devel
BuildRequires: qt6-qtbase-private-devel
BuildRequires: qt6-qtsvg-devel
BuildRequires: qt6-qtwayland-devel
BuildRequires: speexdsp-devel
BuildRequires: swig
BuildRequires: systemd-devel
%if %{with vlc}
BuildRequires: vlc-devel
%endif
BuildRequires: wayland-devel
BuildRequires: websocketpp-devel
%if %{with x264}
BuildRequires: x264-devel
%endif
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
# Ensure that we have the full ffmpeg suite installed
Requires: /usr/bin/ffmpeg
%if %{with x264}
Requires: x264
%endif
# Ensure QtWayland is installed when libwayland-client is installed
Requires: (qt6-qtwayland%{?_isa} if libwayland-client%{?_isa})
# For icon folder heirarchy
Requires: hicolor-icon-theme
# These are modified sources that can't be easily unbundled
## License: MIT and CC0-1.0
## Newer version in Fedora with the same licensing
## Request filed upstream for fixing it: https://github.com/simd-everywhere/simde/issues/999
Provides: bundled(simde) = 0.7.1
## License: BSL-1.0
Provides: bundled(decklink-sdk)
## License: CC0-1.0 or OpenSSL or Apache-2.0
Provides: bundled(blake2)
## License: MIT
Provides: bundled(json11)
## License: MIT
Provides: bundled(libcaption)
## License: ISC
Provides: bundled(libff)
## License: BSD-1-Clause
Provides: bundled(uthash)
## License: BSD-3-Clause
Provides: bundled(rnnoise)
## License: LGPL-2.1-or-later and LicenseRef-Fedora-Public-Domain
Provides: bundled(librtmp)
## License: MIT
Provides: bundled(libnsgif)
## License: MIT
## Windows only dependency
## Support for Linux will also unbundle it
## Cf. https://github.com/obsproject/obs-studio/pull/8327
Provides: bundled(intel-mediasdk)
%description
Open Broadcaster Software is free and open source
software for video recording and live streaming.
%package libs
Summary: Open Broadcaster Software Studio libraries
%{?_qt6:Requires: %{_qt6}%{?_isa} = %{_qt6_version}}
%description libs
Library files for Open Broadcaster Software
%package devel
Summary: Open Broadcaster Software Studio header files
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
%description devel
Header files for Open Broadcaster Software
%prep
%setup -q -n %{name}-%{?snapdate:%{commit}}%{!?snapdate:%{version_no_tilde}}
# Prepare plugins/obs-websocket
tar -xf %{SOURCE1} -C plugins/obs-websocket --strip-components=1
%autopatch -p1
# rpmlint reports E: hardcoded-library-path
# replace OBS_MULTIARCH_SUFFIX by LIB_SUFFIX
sed -e 's|OBS_MULTIARCH_SUFFIX|LIB_SUFFIX|g' -i cmake/Modules/ObsHelpers.cmake
# Kill rpath settings
sed -e '\|set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${OBS_LIBRARY_DESTINATION}")|d' -i cmake/Modules/ObsHelpers_Linux.cmake
# touch the missing submodules
touch plugins/obs-browser/CMakeLists.txt
%if ! %{with x264}
# disable x264 plugin
mv plugins/obs-x264/CMakeLists.txt plugins/obs-x264/CMakeLists.txt.disabled
touch plugins/obs-x264/CMakeLists.txt
%endif
# remove -Werror flag to mitigate FTBFS with ffmpeg 5.1
sed -e 's|-Werror-implicit-function-declaration||g' -i cmake/Modules/CompilerConfig.cmake
sed -e '/-Werror/d' -i cmake/Modules/CompilerConfig.cmake
# Removing unused third-party deps
rm -rf deps/w32-pthreads
rm -rf deps/ipc-util
rm -rf deps/jansson
# Remove unneeded EGL/KHR files
rm -rf deps/glad/include/{EGL,KHR}
sed -e 's|include/EGL/eglplatform.h||g' -i deps/glad/CMakeLists.txt
# Collect license files
mkdir -p .fedora-rpm/licenses/deps
mkdir -p .fedora-rpm/licenses/plugins
cp plugins/obs-filters/rnnoise/COPYING .fedora-rpm/licenses/deps/rnnoise-COPYING
cp plugins/obs-websocket/LICENSE .fedora-rpm/licenses/plugins/obs-websocket-LICENSE
cp plugins/obs-outputs/librtmp/COPYING .fedora-rpm/licenses/deps/librtmp-COPYING
cp deps/json11/LICENSE.txt .fedora-rpm/licenses/deps/json11-LICENSE.txt
cp deps/libcaption/LICENSE.txt .fedora-rpm/licenses/deps/libcaption-LICENSE.txt
cp plugins/obs-qsv11/QSV11-License-Clarification-Email.txt .fedora-rpm/licenses/plugins/QSV11-License-Clarification-Email.txt
cp deps/uthash/uthash/LICENSE .fedora-rpm/licenses/deps/uthash-LICENSE
cp deps/blake2/LICENSE.blake2 .fedora-rpm/licenses/deps/
cp deps/libff/LICENSE.libff .fedora-rpm/licenses/deps/
cp libobs/graphics/libnsgif/LICENSE.libnsgif .fedora-rpm/licenses/deps/
cp libobs/util/simde/LICENSE.simde .fedora-rpm/licenses/deps/
cp plugins/decklink/LICENSE.decklink-sdk .fedora-rpm/licenses/deps
cp plugins/obs-qsv11/obs-qsv11-LICENSE.txt .fedora-rpm/licenses/plugins/
%build
%cmake -DOBS_VERSION_OVERRIDE=%{version_no_tilde} \
-DUNIX_STRUCTURE=1 -GNinja \
-DCMAKE_SKIP_RPATH=1 \
-DBUILD_BROWSER=OFF \
%if ! %{with vlc}
-DENABLE_VLC=OFF \
%endif
-DENABLE_JACK=ON \
-DENABLE_LIBFDK=ON \
-DENABLE_AJA=OFF \
%if ! %{with lua_scripting}
-DDISABLE_LUA=ON \
%endif
-DOpenGL_GL_PREFERENCE=GLVND
%cmake_build
%install
%cmake_install
# Add missing files to enable the build of obs-ndi
install -Dm644 UI/obs-frontend-api/obs-frontend-api.h %{buildroot}%{_includedir}/obs/
install -Dm644 cmake/external/ObsPluginHelpers.cmake %{buildroot}%{_libdir}/cmake/libobs/
# Work around broken libobs.pc file...
# Cf. https://github.com/obsproject/obs-studio/issues/7972
sed -e 's|^Cflags: .*|Cflags: -I${includedir} -DHAVE_OBSCONFIG_H|' -i %{buildroot}%{_libdir}/pkgconfig/libobs.pc
# Delete useless files
find %{buildroot} -name ".keepme" -delete
find %{buildroot} -name ".gitkeep" -delete
%check
desktop-file-validate %{buildroot}/%{_datadir}/applications/com.obsproject.Studio.desktop
appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/*.appdata.xml
%files
%doc README.rst
%license UI/data/license/gplv2.txt
%license COPYING
%{_bindir}/obs
%{_bindir}/obs-ffmpeg-mux
%{_datadir}/metainfo/com.obsproject.Studio.appdata.xml
%{_datadir}/applications/com.obsproject.Studio.desktop
%{_datadir}/icons/hicolor/*/apps/com.obsproject.Studio.*
%{_datadir}/obs/
%files libs
%license COPYING
%license .fedora-rpm/licenses/*
%{_libdir}/obs-plugins/
%{_libdir}/obs-scripting/
# unversioned so files packaged for third-party plugins (cf. rfbz#5999)
%{_libdir}/*.so
%{_libdir}/*.so.*
%files devel
%{_libdir}/cmake/libobs/
%{_libdir}/cmake/obs-frontend-api/
%{_libdir}/pkgconfig/libobs.pc
%{_includedir}/obs/
%changelog
* Tue Apr 18 2023 Neal Gompa <ngompa@fedoraproject.org> - 29.1.0~beta4-1
- Initial build for Fedora
* Tue Apr 18 2023 Neal Gompa <ngompa@fedoraproject.org> - 29.1.0~beta4-0.5
- Capture more licenses
* Sun Apr 16 2023 Neal Gompa <ngompa@fedoraproject.org> - 29.1.0~beta4-0.4
- Backport fix for RHEL 9 builds
* Sun Apr 16 2023 Neal Gompa <ngompa@fedoraproject.org> - 29.1.0~beta4-0.3
- Add license declaration files for bundled deps
* Sun Apr 16 2023 Neal Gompa <ngompa@fedoraproject.org> - 29.1.0~beta4-0.2
- Ensure system EGL headers are used
* Sat Apr 15 2023 Neal Gompa <ngompa@fedoraproject.org> - 29.1.0~beta4-0.1
- Update to 29.1.0~beta4
* Wed Apr 05 2023 Neal Gompa <ngompa@fedoraproject.org> - 29.1.0~beta3-0.1
- Update to 29.1.0~beta3
* Wed Apr 05 2023 Neal Gompa <ngompa@fedoraproject.org> - 29.1.0~beta2-0.1
- Update to 29.1.0~beta2
* Sun Apr 02 2023 Neal Gompa <ngompa@fedoraproject.org> - 29.1.0~beta1-0.2
- Get rid of RPATHs
- Backport upstream fix to fix EPEL 9 build
- Drop old cruft
* Wed Mar 29 2023 Neal Gompa <ngompa@fedoraproject.org> - 29.1.0~beta1-0.1
- Upgrade to v29.1.0~beta1
* Wed Mar 29 2023 Neal Gompa <ngompa@fedoraproject.org> - 29.1.0~git202303261743.ad859a3-0.4
- Refresh patches for OpenH264 support
* Tue Mar 28 2023 Neal Gompa <ngompa@fedoraproject.org> - 29.1.0~git202303261743.ad859a3-0.3
- Refresh patches for OpenH264 support
* Tue Mar 28 2023 Neal Gompa <ngompa@fedoraproject.org> - 29.1.0~git202303261743.ad859a3-0.2
- Refresh patches for OpenH264 support
* Mon Mar 27 2023 Neal Gompa <ngompa@fedoraproject.org> - 29.1.0~git202303261743.ad859a3-0.1
- Update to git snapshot
* Sun Mar 26 2023 Neal Gompa <ngompa@fedoraproject.org> - 29.1.0~git202303260813.94bf325-0.1
- Update to git snapshot
- Add patches for OpenH264 support
* Sat Feb 18 2023 Neal Gompa <ngompa@fedoraproject.org> - 29.0.2-0.1
- Update to 29.0.2
- Drop patch about encoder references to x264
* Sat Jan 07 2023 Neal Gompa <ngompa@fedoraproject.org> - 29.0.0-0.1
- Update to v29.0.0 final
- Add patch for adjusting encoder reference for x264
* Mon Jan 02 2023 Neal Gompa <ngompa@fedoraproject.org> - 29.0.0~beta3-4
- Ensure QtWayland is installed when libwayland-client is installed
* Sun Jan 01 2023 Neal Gompa <ngompa@fedoraproject.org> - 29.0.0~beta3-3
- Make ffmpeg dependency agnostic to packaging
* Wed Dec 28 2022 Neal Gompa <ngompa@fedoraproject.org> - 29.0.0~beta3-2
- Work around broken libobs.pc file
* Tue Dec 27 2022 Neal Gompa <ngompa@fedoraproject.org> - 29.0.0~beta3-1
- Rebase to v29.0.0~beta3
- Enable vst plugin
- Enable websocket plugin
- Disable x264 plugin
* Thu Nov 17 2022 Vitaly Zaitsev <vitaly@easycoding.org> - 28.1.2-2
- Rebuilt due to Qt update.
* Sun Nov 06 2022 Leigh Scott <leigh123linux@gmail.com> - 28.1.2-1
- Update to 28.1.2
* Thu Nov 03 2022 Leigh Scott <leigh123linux@gmail.com> - 28.1.1-1
- Update to 28.1.1
* Tue Nov 01 2022 Leigh Scott <leigh123linux@gmail.com> - 28.1.0-1
- Update to 28.1.0
* Mon Oct 03 2022 Leigh Scott <leigh123linux@gmail.com> - 28.0.3-1
- Update to 28.0.3
* Mon Sep 26 2022 Leigh Scott <leigh123linux@gmail.com> - 28.0.2-1
- Update to 28.0.2
- Enable jack (rfbz#6419)
* Tue Sep 13 2022 Leigh Scott <leigh123linux@gmail.com> - 28.0.1-4
- Use qt6 for rawhide only
* Tue Sep 13 2022 Leigh Scott <leigh123linux@gmail.com> - 28.0.1-3
- Fix wrong svg names
* Tue Sep 13 2022 Leigh Scott <leigh123linux@gmail.com> - 28.0.1-2
- touch the missing sub-modules instead
* Tue Sep 13 2022 Leigh Scott <leigh123linux@gmail.com> - 28.0.1-1
- Update to 28.0.1
- Remove vst sub-module as it's qt5 only
- Add browser and websocket sub-modules so the source compiles
Upstream can fix their own mess!
* Sun Aug 07 2022 RPM Fusion Release Engineering <sergiomb@rpmfusion.org> - 27.2.4-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild and ffmpeg
5.1
* Sat Jul 23 2022 Leigh Scott <leigh123linux@gmail.com> - 27.2.4-4
- Rebuild for new qt5
* Sat Jun 25 2022 Robert-André Mauchin <zebob.m@gmail.com> - 27.2.4-3
- Rebuilt for Python 3.11
* Sun Jun 12 2022 Sérgio Basto <sergio@serjux.com> - 27.2.4-2
- Mass rebuild for x264-0.164
* Mon Apr 11 2022 Leigh Scott <leigh123linux@gmail.com> - 27.2.4-1
- Update to 27.2.4
* Thu Mar 31 2022 Leigh Scott <leigh123linux@gmail.com> - 27.2.1-2
- Rebuild for new qt
* Sat Feb 26 2022 Neal Gompa <ngompa@fedoraproject.org> - 27.2.1-1
- Update to 27.2.1
- Disable Lua scripting for POWER to fix ppc64le build
- Drop legacy Fedora and EL8 stuff
* Mon Feb 14 2022 Neal Gompa <ngompa@fedoraproject.org> - 27.2.0-1
- Update to 27.2.0 final
* Tue Feb 08 2022 Neal Gompa <ngompa@fedoraproject.org> - 27.2.0~rc4-1
- Update to 27.2.0~rc4
* Mon Feb 07 2022 Leigh Scott <leigh123linux@gmail.com> - 27.2.0~rc1-1
- Update to 27.2.0~rc1
* Wed Dec 01 2021 Nicolas Chauvet <kwizart@gmail.com> - 27.1.3-2
- Rebuilt
* Tue Oct 05 2021 Neal Gompa <ngompa@fedoraproject.org> - 27.1.3-1
- Update to 27.1.3
* Tue Sep 28 2021 Neal Gompa <ngompa@fedoraproject.org> - 27.1.1-1
- Bump to 27.1.1 final
* Sat Sep 18 2021 Neal Gompa <ngompa@fedoraproject.org> - 27.1.0~rc3-2
- Backport fix for PipeWire screencasting on F35+
* Sat Sep 18 2021 Neal Gompa <ngompa@fedoraproject.org> - 27.1.0~rc3-1
- Update to 27.1.0~rc3
* Sat Sep 11 2021 Neal Gompa <ngompa@fedoraproject.org> - 27.1.0~rc2-1
- Update to 27.1.0~rc2
* Tue Aug 03 2021 RPM Fusion Release Engineering <leigh123linux@gmail.com> - 27.0.1-4
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
* Sun Jul 11 2021 Sérgio Basto <sergio@serjux.com> - 27.0.1-3
- Mass rebuild for x264-0.163
* Sat Jun 26 2021 Neal Gompa <ngompa13@gmail.com> - 27.0.1-2
- Backport fix for cursor positioning in Wayland screencasting
* Sat Jun 12 2021 Neal Gompa <ngompa13@gmail.com> - 27.0.1-1
- Update to 27.0.1
* Tue Jun 01 2021 Neal Gompa <ngompa13@gmail.com> - 27.0.0-1
- Bump to 27.0.0 final
- Move unversioned so files to -libs for third-party plugins (rfbz#5999)
- Make build for EL8
- Drop legacy EL7 stuff
* Mon May 24 2021 Neal Gompa <ngompa13@gmail.com> - 27.0.0~rc6-1
- Bump to 27.0.0~rc6
* Thu May 20 2021 Neal Gompa <ngompa13@gmail.com> - 27.0.0~rc5-1
- Bump to 27.0.0~rc5
- Drop upstreamed patch for building jack plugin
* Wed May 05 2021 Neal Gompa <ngompa13@gmail.com> - 27.0.0~rc3-2
- Fix detecting pipewire-libjack so jack plugin is built
* Wed May 05 2021 Neal Gompa <ngompa13@gmail.com> - 27.0.0~rc3-1
- Bump to 27.0.0~rc3
* Thu Apr 22 2021 Leigh Scott <leigh123linux@gmail.com> - 27.0.0~rc2-2
- Rebuild for libftl issue (rfbz5978)
* Sat Apr 17 2021 Neal Gompa <ngompa13@gmail.com> - 27.0.0~rc2-1
- Bump to 27.0.0~rc2
* Wed Feb 10 2021 Nicolas Chauvet <kwizart@gmail.com> - 26.1.2-3
- Add obs-vst plugins
- Build for all arches (armv7hl, aarch64, ppc64le)
- Re-order build dependencies
* Wed Feb 03 2021 RPM Fusion Release Engineering <leigh123linux@gmail.com> - 26.1.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Jan 20 2021 Martin Gansser <martinkg@fedoraproject.org> - 26.1.2-1
- Update to 26.1.2
* Tue Jan 19 2021 Martin Gansser <martinkg@fedoraproject.org> - 26.1.1-1
- Update to 26.1.1
* Fri Jan 1 2021 Leigh Scott <leigh123linux@gmail.com> - 26.1.0-2
- Rebuilt for new ffmpeg snapshot
* Sat Dec 26 2020 Momcilo Medic <fedorauser@fedoraproject.org> - 26.1.0-1
- Updated to 26.1.0
* Fri Nov 27 2020 Sérgio Basto <sergio@serjux.com> - 26.0.2-3
- Mass rebuild for x264-0.161
* Wed Oct 14 2020 Momcilo Medic <fedorauser@fedoraproject.org> - 26.0.2-2
- Bumped release for setting developer toolset version
* Wed Oct 14 2020 Momcilo Medic <fedorauser@fedoraproject.org> - 26.0.2-1
- Removed doxygen bits as upstream removed it
- Updated to 26.0.2
* Tue Aug 18 2020 RPM Fusion Release Engineering <leigh123linux@gmail.com> - 25.0.8-5
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Thu Aug 06 2020 Leigh Scott <leigh123linux@gmail.com> - 25.0.8-4
- Improve compatibility with new CMake macro
* Tue Jul 07 2020 Sérgio Basto <sergio@serjux.com> - 25.0.8-3
- Mass rebuild for x264
* Sat May 30 2020 Leigh Scott <leigh123linux@gmail.com> - 25.0.8-2
- Rebuild for python-3.9
* Tue Apr 28 2020 Leigh Scott <leigh123linux@googlemail.com> - 25.0.8-1
- Updated to 25.0.8
* Thu Apr 16 2020 Leigh Scott <leigh123linux@gmail.com> - 25.0.6-1
- Updated to 25.0.6
* Mon Apr 06 2020 Momcilo Medic <fedorauser@fedoraproject.org> - 25.0.4-1
- Updated to 25.0.4
* Tue Mar 31 2020 Momcilo Medic <fedorauser@fedoraproject.org> - 25.0.3-1
- Updated to 25.0.3
* Fri Mar 20 2020 Martin Gansser <martinkg@fedoraproject.org> - 25.0.1-1
- Update to 25.0.1
* Sat Feb 22 2020 RPM Fusion Release Engineering <leigh123linux@googlemail.com> - 24.0.6-2
- Rebuild for ffmpeg-4.3 git
* Fri Feb 21 2020 Martin Gansser <martinkg@fedoraproject.org> - 24.0.6-1
- Update to 24.0.6
* Wed Feb 05 2020 RPM Fusion Release Engineering <leigh123linux@gmail.com> - 24.0.5-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Sun Dec 22 2019 Leigh Scott <leigh123linux@googlemail.com> - 24.0.5-1
- Updated to 24.0.5
* Tue Dec 17 2019 Leigh Scott <leigh123linux@gmail.com> - 24.0.3-3
- Mass rebuild for x264
* Sun Oct 13 2019 Momcilo Medic <fedorauser@fedoraproject.org> - 24.0.3-2
- Switched BR gcc-objc to gcc to unify SPEC file across builds
* Sat Oct 12 2019 Momcilo Medic <fedorauser@fedoraproject.org> - 24.0.3-1
- Updated to 24.0.3
* Sun Sep 22 2019 Momcilo Medic <fedorauser@fedoraproject.org> - 24.0.1-1
- Updated to 24.0.1
* Sat Aug 24 2019 Leigh Scott <leigh123linux@gmail.com> - 23.2.1-3
- Rebuild for python-3.8
* Wed Aug 07 2019 Leigh Scott <leigh123linux@gmail.com> - 23.2.1-2
- Rebuild for new ffmpeg version
* Tue Jun 18 2019 Momcilo Medic <fedorauser@fedoraproject.org> - 23.2.1-1
- Updated to 23.2.1
* Mon Apr 08 2019 Momcilo Medic <fedorauser@fedoraproject.org> - 23.1.0-1
- Updated to 23.1.0
* Sun Apr 07 2019 Martin Gansser <martinkg@fedoraproject.org> - 23.0.2-4
- Add obs-frontend-api.h to devel subpkg, to enable build of obs-ndi
- Add ObsPluginHelpers.cmake to devel subpkg, to enable build of obs-ndi
* Mon Mar 18 2019 Xavier Bachelot <xavier@bachelot.org> - 23.0.2-3
- Fix BR: on speex/speexdsp for EL7.
- Fix BR: on python for EL7.
* Tue Mar 12 2019 Sérgio Basto <sergio@serjux.com> - 23.0.2-2
- Mass rebuild for x264
* Sun Mar 10 2019 Momcilo Medic <fedorauser@fedoraproject.org> - 23.0.2-1
- Updated to 23.0.2
* Mon Mar 04 2019 RPM Fusion Release Engineering <leigh123linux@gmail.com> - 23.0.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Mon Feb 25 2019 Momcilo Medic <fedorauser@fedoraproject.org> - 23.0.0-1
- Updated to 23.0.0
* Wed Jan 9 2019 Momcilo Medic <fedorauser@fedoraproject.org> - 22.0.3-3
- Fixed missing dependencies
- Enabled scripting support
* Thu Oct 04 2018 Sérgio Basto <sergio@serjux.com> - 22.0.3-2
- Mass rebuild for x264 and/or x265
* Fri Sep 7 2018 Momcilo Medic <fedorauser@fedoraproject.org> - 22.0.3-1
- Updated to 22.0.3
* Wed Aug 22 2018 Momcilo Medic <fedorauser@fedoraproject.org> - 22.0.1-1
- Updated to 22.0.1
* Fri Jul 27 2018 RPM Fusion Release Engineering <leigh123linux@gmail.com> - 21.1.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Tue Jul 10 2018 Miro Hrončok <mhroncok@redhat.com> - 21.1.2-2
- Rebuilt for Python 3.7
* Wed May 16 2018 Leigh Scott <leigh123linux@googlemail.com> - 21.1.2-1
- Update to 21.1.2
- Fix requires
* Sat Mar 31 2018 Leigh Scott <leigh123linux@googlemail.com> - 21.1.1-1
- Update to 21.1.1
* Mon Mar 19 2018 Leigh Scott <leigh123linux@googlemail.com> - 21.1.0-1
- Update to 21.1.0
* Fri Mar 09 2018 Martin Gansser <martinkg@fedoraproject.org> - 21.0.3-1
- Update to 21.0.3
- Add BR python3-devel
- Add bytecompile with Python 3 %%global __python %%{__python3}A
* Thu Mar 08 2018 RPM Fusion Release Engineering <leigh123linux@googlemail.com> - 21.0.2-4
- Rebuilt for new ffmpeg snapshot
* Thu Mar 01 2018 RPM Fusion Release Engineering <leigh123linux@googlemail.com> - 21.0.2-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
* Thu Feb 08 2018 Leigh Scott <leigh123linux@googlemail.com> - 21.0.2-2
- Fix scriptlets
- Use ninja to build
* Wed Feb 07 2018 Momcilo Medic <fedorauser@fedoraproject.org> - 21.0.2-1
- Updated to 21.0.2
* Thu Jan 18 2018 Leigh Scott <leigh123linux@googlemail.com> - 20.1.3-3
- Rebuilt for ffmpeg-3.5 git
* Sun Dec 31 2017 Sérgio Basto <sergio@serjux.com> - 20.1.3-2
- Mass rebuild for x264 and x265
* Fri Dec 08 2017 Leigh Scott <leigh123linux@googlemail.com> - 20.1.3-1
- Updated to 20.1.3
* Tue Oct 17 2017 Martin Gansser <martinkg@fedoraproject.org> - 20.0.1-1
- Updated to 20.0.1
* Thu Aug 10 2017 Momcilo Medic <fedorauser@fedoraproject.org> - 20.0.0-1
- Updated to 20.0.0
* Sat Jul 08 2017 Martin Gansser <martinkg@fedoraproject.org> - 19.0.3-1
- Updated to 19.0.3
* Mon May 22 2017 Momcilo Medic <fedorauser@fedoraproject.org> - 19.0.2-1
- Updated to 19.0.2
* Wed May 17 2017 Leigh Scott <leigh123linux@googlemail.com> - 18.0.2-2
- Rebuild for ffmpeg update
* Sat May 6 2017 Momcilo Medic <fedorauser@fedoraproject.org> - 18.0.2-1
- Updated to 18.0.2
* Sat Apr 29 2017 Leigh Scott <leigh123linux@googlemail.com> - 18.0.1-3
- Rebuild for ffmpeg update
* Mon Mar 20 2017 RPM Fusion Release Engineering <kwizart@rpmfusion.org> - 18.0.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
* Wed Mar 8 2017 Momcilo Medic <fedorauser@fedoraproject.org> - 18.0.1-1
- Updated to 18.0.1
* Wed Mar 1 2017 Momcilo Medic <fedorauser@fedoraproject.org> - 18.0.0-1
- Updated to 18.0.0
* Mon Jan 30 2017 Momcilo Medic <fedorauser@fedoraproject.org> - 17.0.2-2
- Reintroduced obs-ffmpeg-mux.patch
- Fixes #4436
* Wed Jan 18 2017 Momcilo Medic <fedorauser@fedoraproject.org> - 17.0.2-1
- Updated to 17.0.2
* Tue Jan 03 2017 Momcilo Medic <fedorauser@fedoraproject.org> - 17.0.0-1
- Upstream fixed arch-dependent-file-in-usr-share
- Removed obs-ffmpeg-mux.patch
- Updated to 17.0.0
* Sun Nov 27 2016 Momcilo Medic <fedorauser@fedoraproject.org> - 0.16.6-1
- Updated to 0.16.6
* Tue Nov 08 2016 Momcilo Medic <fedorauser@fedoraproject.org> - 0.16.5-1
- Updated to 0.16.5
* Tue Oct 18 2016 Momcilo Medic <fedorauser@fedoraproject.org> - 0.16.2-2.20161018git4505d5a
- Updated to git to resolve unversioned shared object
- Identified speexdsp-devel as a dependency
* Sat Oct 01 2016 Martin Gansser <martinkg@fedoraproject.org> - 0.16.2-1
- Updated to 0.16.2
- Build doxygen html documentation
- Added BR doxygen
* Fri Aug 26 2016 Leigh Scott <leigh123linux@googlemail.com> - 0.15.4-3
- Actually define FFMPEG_MUX_FIXED (fixes 'command not found' when trying to record)
* Sat Aug 13 2016 Leigh Scott <leigh123linux@googlemail.com> - 0.15.4-2
- Disable build for ARM (Arm gcc has no xmmintrin.h file)
* Fri Aug 12 2016 Leigh Scott <leigh123linux@googlemail.com> - 0.15.4-1
- Fix release tag (0.x release is for git releases)
* Mon Aug 08 2016 Momcilo Medic <fedorauser@fedoraproject.org> - 0.15.4-0.1
- Updated to 0.15.4
* Fri Aug 05 2016 Momcilo Medic <fedorauser@fedoraproject.org> - 0.15.2-0.5
- Added alsa-devel as BR for ALSA plugin.
- Added vlc-devel as BR for VLC plugin.
- Added systemd-devel as BR for Udev V4L.
* Wed Aug 03 2016 Leigh Scott <leigh123linux@googlemail.com> - 0.15.2-0.4
- Fix source tag (spectool now downloads in n-v format)
- Remove surplus ldconfig from postun (no public .so files in main package)
- Update scriptlets to meet guidelines (need full path)
* Wed Jul 20 2016 Momcilo Medic <fedorauser@fedoraproject.org> - 0.15.2-0.3
- Added license file gplv2.txt
* Mon Jul 18 2016 Martin Gansser <martinkg@fedoraproject.org> - 0.15.2-0.2
- Fixed arch-dependent-file-in-usr-share
- Added obs-ffmpeg-mux.patch
- Added libs subpkg
- Call ldconfig in post(un) scripts for the shared library
* Sat Jul 16 2016 Momcilo Medic <fedorauser@fedoraproject.org> - 0.15.2-0.1
- Updated to 0.15.2
* Sun Jul 10 2016 Momcilo Medic <fedorauser@fedoraproject.org> - 0.15.1-0.1
- Updated to 0.15.1
* Sat Jul 09 2016 Momcilo Medic <fedorauser@fedoraproject.org> - 0.15.0-0.1
- Updated to 0.15.0
* Mon May 16 2016 Momcilo Medic <fedorauser@fedoraproject.org> - 0.14.2-0.1
- Updated to 0.14.2
* Mon Apr 25 2016 Momcilo Medic <fedorauser@fedoraproject.org> - 0.14.1-0.1
- Updated to 0.14.1
* Sun Apr 24 2016 Momcilo Medic <fedorauser@fedoraproject.org> - 0.14.0-0.1
- Updated to 0.14.0
* Tue Mar 22 2016 Momcilo Medic <fedorauser@fedoraproject.org> - 0.13.4-0.1
- Updated to 0.13.4
* Sun Mar 20 2016 Momcilo Medic <fedorauser@fedoraproject.org> - 0.13.3-0.1
- Updated to 0.13.3
* Tue Feb 23 2016 Momcilo Medic <fedorauser@fedoraproject.org> - 0.13.2-0.1
- Updated to 0.13.2
* Sat Feb 06 2016 Momcilo Medic <fedorauser@fedoraproject.org> - 0.13.1-0.1
- Updated to 0.13.1
* Sun Dec 20 2015 Martin Gansser <martinkg@fedoraproject.org> - 0.12.4-0.2
- replace OBS_MULTIARCH_SUFFIX by LIB_SUFFIX
* Sat Dec 12 2015 Momcilo Medic <fedorauser@fedoraproject.org> - 0.12.4-0.1
- Updated to 0.12.4
* Sat Dec 05 2015 Momcilo Medic <fedorauser@fedoraproject.org> - 0.12.3-0.1
- Updated to 0.12.3
* Sat Nov 21 2015 Momcilo Medic <fedorauser@fedoraproject.org> - 0.12.2-0.1
- Updated to 0.12.2
* Thu Nov 19 2015 Momcilo Medic <fedorauser@fedoraproject.org> - 0.12.1-0.1
- Updated to 0.12.1
* Thu Sep 24 2015 Momcilo Medic <fedorauser@fedoraproject.org> - 0.12.0-0.1
- Updated to 0.12.0
* Mon Aug 17 2015 Momcilo Medic <fedorauser@fedoraproject.org> - 0.11.4-0.1
- Added OBS_VERSION_OVERRIDE to correct version in compilation
- Updated to 0.11.4
* Sat Aug 08 2015 Momcilo Medic <fedorauser@fedoraproject.org> - 0.11.3-0.1
- Updated to 0.11.3
* Thu Jul 30 2015 Momcilo Medic <fedorauser@fedoraproject.org> - 0.11.2-0.1
- Updated to 0.11.2
* Fri Jul 10 2015 Momcilo Medic <fedorauser@fedoraproject.org> - 0.11.1-0.1
- Updated to 0.11.1
* Wed May 27 2015 Momcilo Medic <fedorauser@fedoraproject.org> - 0.10.1-0.1
- Initial .spec file

2
sources Normal file
View File

@ -0,0 +1,2 @@
SHA512 (obs-studio-29.1.0-beta4.tar.gz) = fff4d1039884aab96f66e4dd4c0e51c95e62d7700f765645dc5c196af1039ddca1f793a99aab811cbcf3eefadcdc140c544547e0177bee4792a06c8ea5ac0a5b
SHA512 (obs-websocket-5.2.2.tar.gz) = 7678e247b8cc4d9cbe650a7b45a63b47a0752ba8e08e3b02bc7bdff42ec7d122eff9bad9139edb0f268379e495bae5e8f05dd177c6f935c7b47c02858727cb28