summaryrefslogtreecommitdiffstats
path: root/academic/openboard
diff options
context:
space:
mode:
author Willy Sudiarto Raharjo <willysr@slackbuilds.org>2023-12-10 12:19:30 +0700
committer Willy Sudiarto Raharjo <willysr@slackbuilds.org>2023-12-13 01:48:16 +0700
commitc70580ede6f42f77c7be382f5b0a592f44d2782e (patch)
tree36dbbb822d4063340f9a628ba9bb7bac6501bb7a /academic/openboard
parentdb45f4481a790112e7ae677ea2992244855331a4 (diff)
downloadslackbuilds-c70580ede6f42f77c7be382f5b0a592f44d2782e.tar.gz
slackbuilds-c70580ede6f42f77c7be382f5b0a592f44d2782e.tar.xz
academic/openboard: Updated for version 1.7.0.
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'academic/openboard')
-rw-r--r--academic/openboard/31755fe30cf.patch505
-rw-r--r--academic/openboard/README3
-rw-r--r--academic/openboard/openboard.SlackBuild17
-rw-r--r--academic/openboard/openboard.info6
-rw-r--r--academic/openboard/quazip.patch19
-rw-r--r--academic/openboard/run-in-a-window.patch154
6 files changed, 19 insertions, 685 deletions
diff --git a/academic/openboard/31755fe30cf.patch b/academic/openboard/31755fe30cf.patch
deleted file mode 100644
index 948fe30d06..0000000000
--- a/academic/openboard/31755fe30cf.patch
+++ /dev/null
@@ -1,505 +0,0 @@
-From c5f8d4b5b7d43c99ddcd2b9bcbe4ec4b7beddad9 Mon Sep 17 00:00:00 2001
-From: letsfindaway <me@letsfindaway.de>
-Date: Wed, 18 May 2022 12:13:46 +0200
-Subject: [PATCH 1/2] fix: make UBFFmpegVideoEncoder compatible with ffmpeg-5
-
-- keep separate reference to AVCodecContext
-- copy parameters to AVCodecParameters
-- use new API in writeFrame
-- use AVChannelLayout
----
- src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp | 182 ++++++++++++++------
- src/podcast/ffmpeg/UBFFmpegVideoEncoder.h | 2 +
- 2 files changed, 134 insertions(+), 50 deletions(-)
-
-diff --git a/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp b/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp
-index 0e4829c49..4fd84d740 100644
---- a/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp
-+++ b/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp
-@@ -45,20 +45,20 @@
- AVFormatContext *s = avformat_alloc_context();
- int ret = 0;
-
-- *avctx = NULL;
-+ *avctx = nullptr;
- if (!s)
- goto nomem;
-
- if (!oformat) {
- if (format) {
-- oformat = av_guess_format(format, NULL, NULL);
-+ oformat = av_guess_format(format, nullptr, nullptr);
- if (!oformat) {
- av_log(s, AV_LOG_ERROR, "Requested output format '%s' is not a suitable output format\n", format);
- ret = AVERROR(EINVAL);
- goto error;
- }
- } else {
-- oformat = av_guess_format(NULL, filename, NULL);
-+ oformat = av_guess_format(nullptr, filename, nullptr);
- if (!oformat) {
- ret = AVERROR(EINVAL);
- av_log(s, AV_LOG_ERROR, "Unable to find a suitable output format for '%s'\n",
-@@ -78,7 +78,7 @@
- av_opt_set_defaults(s->priv_data);
- }
- } else
-- s->priv_data = NULL;
-+ s->priv_data = nullptr;
-
- if (filename)
- av_strlcpy(s->filename, filename, sizeof(s->filename));
-@@ -168,15 +168,17 @@ QString avErrorToQString(int errnum)
- /**
- * @brief Write a given frame to the audio stream or, if a null frame is passed, flush the stream.
- *
-- * @param frame An AVFrame to be written to the stream, or NULL to flush the stream
-+ * @param frame An AVFrame to be written to the stream, or nullptr to flush the stream
- * @param packet A (reusable) packet, used to temporarily store frame data
- * @param stream The stream to write to
- * @param outputFormatContext The output format context
- */
--void writeFrame(AVFrame *frame, AVPacket *packet, AVStream *stream, AVFormatContext *outputFormatContext)
-+void writeFrame(AVFrame *frame, AVPacket *packet, AVStream *stream, AVCodecContext* c, AVFormatContext *outputFormatContext)
- {
-- int gotOutput, ret;
-+ int ret;
-
-+#if LIBAVFORMAT_VERSION_MAJOR < 58
-+ int gotOutput;
- av_init_packet(packet);
-
- do {
-@@ -200,11 +202,34 @@ void writeFrame(AVFrame *frame, AVPacket *packet, AVStream *stream, AVFormatCont
- }
-
- } while (gotOutput && !frame);
-+#else
-+ // send the frame to the encoder
-+ ret = avcodec_send_frame(c, frame);
-+
-+ while (ret >= 0) {
-+ ret = avcodec_receive_packet(c, packet);
-+ if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
-+ break;
-+ else if (ret < 0) {
-+ qWarning() << "Couldn't encode audio frame: " << avErrorToQString(ret);
-+ }
-+
-+ /* rescale output packet timestamp values from codec to stream timebase */
-+ av_packet_rescale_ts(packet, c->time_base, stream->time_base);
-+ packet->stream_index = stream->index;
-+
-+ /* Write the compressed frame to the media file. */
-+ ret = av_interleaved_write_frame(outputFormatContext, packet);
-+ /* pkt is now blank (av_interleaved_write_frame() takes ownership of
-+ * its contents and resets pkt), so that no unreferencing is necessary.
-+ * This would be different if one used av_write_frame(). */
-+ }
-+#endif
- }
-
--void flushStream(AVPacket *packet, AVStream *stream, AVFormatContext *outputFormatContext)
-+void flushStream(AVPacket *packet, AVStream *stream, AVCodecContext* c, AVFormatContext *outputFormatContext)
- {
-- writeFrame(NULL, packet, stream, outputFormatContext);
-+ writeFrame(nullptr, packet, stream, c, outputFormatContext);
- }
-
- //-------------------------------------------------------------------------
-@@ -213,12 +238,12 @@ void flushStream(AVPacket *packet, AVStream *stream, AVFormatContext *outputForm
-
- UBFFmpegVideoEncoder::UBFFmpegVideoEncoder(QObject* parent)
- : UBAbstractVideoEncoder(parent)
-- , mOutputFormatContext(NULL)
-- , mSwsContext(NULL)
-+ , mOutputFormatContext(nullptr)
-+ , mSwsContext(nullptr)
- , mShouldRecordAudio(true)
-- , mAudioInput(NULL)
-- , mSwrContext(NULL)
-- , mAudioOutBuffer(NULL)
-+ , mAudioInput(nullptr)
-+ , mSwrContext(nullptr)
-+ , mAudioOutBuffer(nullptr)
- , mAudioSampleRate(44100)
- , mAudioFrameCount(0)
- {
-@@ -288,16 +313,18 @@ bool UBFFmpegVideoEncoder::stop()
-
- bool UBFFmpegVideoEncoder::init()
- {
-+#if LIBAVFORMAT_VERSION_MAJOR < 58
- av_register_all();
- avcodec_register_all();
-+#endif
-
-- AVDictionary * options = NULL;
-+ AVDictionary * options = nullptr;
- int ret;
-
- // Output format and context
- // --------------------------------------
-- if (avformat_alloc_output_context2(&mOutputFormatContext, NULL,
-- "mp4", NULL) < 0)
-+ if (avformat_alloc_output_context2(&mOutputFormatContext, nullptr,
-+ "mp4", nullptr) < 0)
- {
- setLastErrorMessage("Couldn't allocate video format context");
- return false;
-@@ -308,16 +335,25 @@ bool UBFFmpegVideoEncoder::init()
-
- // Video codec and context
- // -------------------------------------
-- mVideoStream = avformat_new_stream(mOutputFormatContext, 0);
-+ mVideoStream = avformat_new_stream(mOutputFormatContext, nullptr);
-+ if (!mVideoStream) {
-+ setLastErrorMessage("Could not allocate stream");
-+ return false;
-+ }
-
-- AVCodec * videoCodec = avcodec_find_encoder(mOutputFormatContext->oformat->video_codec);
-+ auto videoCodec = avcodec_find_encoder(mOutputFormatContext->oformat->video_codec);
- if (!videoCodec) {
- setLastErrorMessage("Video codec not found");
- return false;
- }
-
- AVCodecContext* c = avcodec_alloc_context3(videoCodec);
-+ if (!c) {
-+ setLastErrorMessage("Could not allocate encoding context");
-+ return false;
-+ }
-
-+ c->codec_id = mOutputFormatContext->oformat->video_codec;
- c->bit_rate = videoBitsPerSecond();
- c->width = videoSize().width();
- c->height = videoSize().height();
-@@ -329,6 +365,8 @@ bool UBFFmpegVideoEncoder::init()
- if (mOutputFormatContext->oformat->flags & AVFMT_GLOBALHEADER)
- c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
-
-+ mVideoStream->time_base = c->time_base;
-+
- /*
- * Supported pixel formats for h264 are:
- * AV_PIX_FMT_YUV420P
-@@ -347,13 +385,20 @@ bool UBFFmpegVideoEncoder::init()
- return false;
- }
-
-- mVideoStream->codec = c;
-+ mVideoCodecContext = c;
-+
-+ // copy the stream parameters to the muxer
-+ ret = avcodec_parameters_from_context(mVideoStream->codecpar, c);
-+ if (ret < 0) {
-+ setLastErrorMessage("Could not copy the stream parameters");
-+ return false;
-+ }
-
- // Source images are RGB32, and should be converted to YUV for h264 video
- mSwsContext = sws_getCachedContext(mSwsContext,
- c->width, c->height, AV_PIX_FMT_RGB32,
- c->width, c->height, c->pix_fmt,
-- SWS_BICUBIC, 0, 0, 0);
-+ SWS_BICUBIC, nullptr, nullptr, nullptr);
-
- // Audio codec and context
- // -------------------------------------
-@@ -381,7 +426,7 @@ bool UBFFmpegVideoEncoder::init()
-
- // Codec
-
-- AVCodec * audioCodec = avcodec_find_encoder(mOutputFormatContext->oformat->audio_codec);
-+ auto audioCodec = avcodec_find_encoder(mOutputFormatContext->oformat->audio_codec);
-
- if (!audioCodec) {
- setLastErrorMessage("Audio codec not found");
-@@ -389,15 +434,29 @@ bool UBFFmpegVideoEncoder::init()
- }
-
- mAudioStream = avformat_new_stream(mOutputFormatContext, audioCodec);
-+ if (!mAudioStream) {
-+ setLastErrorMessage("Could not allocate stream");
-+ return false;
-+ }
-+
- mAudioStream->id = mOutputFormatContext->nb_streams-1;
-
-- c = mAudioStream->codec;
-+ c = avcodec_alloc_context3(audioCodec);
-+ if (!c) {
-+ setLastErrorMessage("Could not allocate encoding context");
-+ return false;
-+ }
-
- c->bit_rate = 96000;
- c->sample_fmt = audioCodec->sample_fmts ? audioCodec->sample_fmts[0] : AV_SAMPLE_FMT_FLTP;// FLTP by default for AAC
- c->sample_rate = mAudioSampleRate;
-+
-+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 25, 100)
- c->channel_layout = AV_CH_LAYOUT_STEREO;
- c->channels = av_get_channel_layout_nb_channels(c->channel_layout);
-+#else
-+ av_channel_layout_copy(&c->ch_layout, &(AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO);
-+#endif
-
- //deprecated on ffmpeg 4
- c->strict_std_compliance = -2;// Enable use of experimental codec
-@@ -412,13 +471,22 @@ bool UBFFmpegVideoEncoder::init()
- if (mOutputFormatContext->oformat->flags & AVFMT_GLOBALHEADER)
- c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER;
-
-- ret = avcodec_open2(c, audioCodec, NULL);
-+ ret = avcodec_open2(c, audioCodec, nullptr);
-
- if (ret < 0) {
- setLastErrorMessage(QString("Couldn't open audio codec: ") + avErrorToQString(ret));
- return false;
- }
-
-+ mAudioCodecContext = c;
-+
-+ // copy the stream parameters to the muxer
-+ ret = avcodec_parameters_from_context(mAudioStream->codecpar, c);
-+ if (ret < 0) {
-+ setLastErrorMessage("Could not copy the stream parameters");
-+ return false;
-+ }
-+
- // The input (raw sound from the microphone) may not match the codec's sampling rate,
- // sample format or number of channels; we use libswresample to convert and resample it
- mSwrContext = swr_alloc();
-@@ -427,15 +495,23 @@ bool UBFFmpegVideoEncoder::init()
- return false;
- }
-
-- av_opt_set_int(mSwrContext, "in_channel_count", inChannelCount, 0);
-- av_opt_set_int(mSwrContext, "in_channel_layout", av_get_default_channel_layout(inChannelCount), 0);
- av_opt_set_int(mSwrContext, "in_sample_rate", inSampleRate, 0);
- av_opt_set_sample_fmt(mSwrContext, "in_sample_fmt", (AVSampleFormat)mAudioInput->sampleFormat(), 0);
-- av_opt_set_int(mSwrContext, "out_channel_count", c->channels, 0);
-- av_opt_set_int(mSwrContext, "out_channel_layout", c->channel_layout, 0);
- av_opt_set_int(mSwrContext, "out_sample_rate", c->sample_rate, 0);
- av_opt_set_sample_fmt(mSwrContext, "out_sample_fmt", c->sample_fmt, 0);
-
-+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 25, 100)
-+ av_opt_set_int(mSwrContext, "in_channel_count", inChannelCount, 0);
-+ av_opt_set_int(mSwrContext, "in_channel_layout", av_get_default_channel_layout(inChannelCount), 0);
-+ av_opt_set_int(mSwrContext, "out_channel_count", c->channels, 0);
-+ av_opt_set_int(mSwrContext, "out_channel_layout", c->channel_layout, 0);
-+#else
-+ AVChannelLayout inChannelLayout;
-+ av_channel_layout_default(&inChannelLayout, inChannelCount);
-+ av_opt_set_chlayout (mSwrContext, "in_chlayout", &inChannelLayout, 0);
-+ av_opt_set_chlayout (mSwrContext, "out_chlayout", &c->ch_layout, 0);
-+#endif
-+
- ret = swr_init(mSwrContext);
- if (ret < 0) {
- setLastErrorMessage(QString("Couldn't initialize the resampling context: ") + avErrorToQString(ret));
-@@ -456,7 +532,7 @@ bool UBFFmpegVideoEncoder::init()
- }
-
- // Write stream header
-- ret = avformat_write_header(mOutputFormatContext, NULL);
-+ ret = avformat_write_header(mOutputFormatContext, nullptr);
-
- if (ret < 0) {
- setLastErrorMessage(QString("Couldn't write header to file: ") + avErrorToQString(ret));
-@@ -506,9 +582,9 @@ AVFrame* UBFFmpegVideoEncoder::convertImageFrame(ImageFrame frame)
- {
- AVFrame* avFrame = av_frame_alloc();
-
-- avFrame->format = mVideoStream->codec->pix_fmt;
-- avFrame->width = mVideoStream->codec->width;
-- avFrame->height = mVideoStream->codec->height;
-+ avFrame->format = mVideoCodecContext->pix_fmt;
-+ avFrame->width = mVideoCodecContext->width;
-+ avFrame->height = mVideoCodecContext->height;
- avFrame->pts = mVideoTimebase * frame.timestamp / 1000;
-
- const uchar * rgbImage = frame.image.bits();
-@@ -516,18 +592,18 @@ AVFrame* UBFFmpegVideoEncoder::convertImageFrame(ImageFrame frame)
- const int in_linesize[1] = { frame.image.bytesPerLine() };
-
- // Allocate the output image
-- if (av_image_alloc(avFrame->data, avFrame->linesize, mVideoStream->codec->width,
-- mVideoStream->codec->height, mVideoStream->codec->pix_fmt, 32) < 0)
-+ if (av_image_alloc(avFrame->data, avFrame->linesize, mVideoCodecContext->width,
-+ mVideoCodecContext->height, mVideoCodecContext->pix_fmt, 32) < 0)
- {
- qWarning() << "Couldn't allocate image";
-- return NULL;
-+ return nullptr;
- }
-
- sws_scale(mSwsContext,
- (const uint8_t* const*)&rgbImage,
- in_linesize,
- 0,
-- mVideoStream->codec->height,
-+ mVideoCodecContext->height,
- avFrame->data,
- avFrame->linesize);
-
-@@ -548,7 +624,7 @@ void UBFFmpegVideoEncoder::onAudioAvailable(QByteArray data)
- void UBFFmpegVideoEncoder::processAudio(QByteArray &data)
- {
- int ret;
-- AVCodecContext* codecContext = mAudioStream->codec;
-+ AVCodecContext* codecContext = mAudioCodecContext;
-
- const char * inSamples = data.constData();
-
-@@ -559,7 +635,7 @@ void UBFFmpegVideoEncoder::processAudio(QByteArray &data)
- int outSamplesCount = swr_get_out_samples(mSwrContext, inSamplesCount);
-
- // Allocate output samples
-- uint8_t ** outSamples = NULL;
-+ uint8_t ** outSamples = nullptr;
- int outSamplesLineSize;
-
- ret = av_samples_alloc_array_and_samples(&outSamples, &outSamplesLineSize,
-@@ -597,13 +673,19 @@ void UBFFmpegVideoEncoder::processAudio(QByteArray &data)
-
- AVFrame * avFrame = av_frame_alloc();
- avFrame->nb_samples = codecContext->frame_size;
-+
-+#if LIBAVUTIL_VERSION_INT < AV_VERSION_INT(57, 25, 100)
- avFrame->channel_layout = codecContext->channel_layout;
-+#else
-+ av_channel_layout_copy(&avFrame->ch_layout, &codecContext->ch_layout);
-+#endif
-+
- avFrame->format = codecContext->sample_fmt;
- avFrame->sample_rate = codecContext->sample_rate;
- avFrame->pts = mAudioFrameCount;
-
- #if LIBAVFORMAT_VERSION_MICRO < 100
-- int buffer_size = av_samples_get_buffer_size(NULL, codecContext->channels, codecContext->frame_size, codecContext->sample_fmt, 0);
-+ int buffer_size = av_samples_get_buffer_size(nullptr, codecContext->channels, codecContext->frame_size, codecContext->sample_fmt, 0);
- audio_samples_buffer = (uint8_t*)av_malloc(buffer_size);
- if (!audio_samples_buffer) {
- qWarning() << "Couldn't allocate samples for audio frame: " << avErrorToQString(ret);
-@@ -645,19 +727,19 @@ void UBFFmpegVideoEncoder::finishEncoding()
- {
- qDebug() << "VideoEncoder::finishEncoding called";
-
-- flushStream(mVideoWorker->mVideoPacket, mVideoStream, mOutputFormatContext);
-+ flushStream(mVideoWorker->mVideoPacket, mVideoStream, mVideoCodecContext, mOutputFormatContext);
-
- if (mShouldRecordAudio)
-- flushStream(mVideoWorker->mAudioPacket, mAudioStream, mOutputFormatContext);
-+ flushStream(mVideoWorker->mAudioPacket, mAudioStream, mAudioCodecContext, mOutputFormatContext);
-
- av_write_trailer(mOutputFormatContext);
- avio_close(mOutputFormatContext->pb);
-
-- avcodec_close(mVideoStream->codec);
-+ avcodec_close(mVideoCodecContext);
- sws_freeContext(mSwsContext);
-
- if (mShouldRecordAudio) {
-- avcodec_close(mAudioStream->codec);
-+ avcodec_close(mAudioCodecContext);
- swr_free(&mSwrContext);
- }
-
-@@ -676,17 +758,17 @@ UBFFmpegVideoEncoderWorker::UBFFmpegVideoEncoderWorker(UBFFmpegVideoEncoder* con
- {
- mStopRequested = false;
- mIsRunning = false;
-- mVideoPacket = new AVPacket();
-- mAudioPacket = new AVPacket();
-+ mVideoPacket = av_packet_alloc();
-+ mAudioPacket = av_packet_alloc();
- }
-
- UBFFmpegVideoEncoderWorker::~UBFFmpegVideoEncoderWorker()
- {
- if (mVideoPacket)
-- delete mVideoPacket;
-+ av_packet_free(&mVideoPacket);
-
- if (mAudioPacket)
-- delete mAudioPacket;
-+ av_packet_free(&mAudioPacket);
- }
-
- void UBFFmpegVideoEncoderWorker::stopEncoding()
-@@ -743,7 +825,7 @@ void UBFFmpegVideoEncoderWorker::runEncoding()
- void UBFFmpegVideoEncoderWorker::writeLatestVideoFrame()
- {
- AVFrame* frame = mImageQueue.dequeue();
-- writeFrame(frame, mVideoPacket, mController->mVideoStream, mController->mOutputFormatContext);
-+ writeFrame(frame, mVideoPacket, mController->mVideoStream, mController->mVideoCodecContext, mController->mOutputFormatContext);
- av_freep(&frame->data[0]);
- av_frame_free(&frame);
- }
-@@ -751,14 +833,14 @@ void UBFFmpegVideoEncoderWorker::writeLatestVideoFrame()
- void UBFFmpegVideoEncoderWorker::writeLatestAudioFrame()
- {
- AVFrame *frame = mAudioQueue.dequeue();
-- writeFrame(frame, mAudioPacket, mController->mAudioStream, mController->mOutputFormatContext);
-+ writeFrame(frame, mAudioPacket, mController->mAudioStream, mController->mAudioCodecContext, mController->mOutputFormatContext);
- av_frame_free(&frame);
-
- #if LIBAVFORMAT_VERSION_MICRO < 100
- if (audio_samples_buffer) {
- av_free(audio_samples_buffer);
- av_freep(&frame->data[0]);
-- audio_samples_buffer = NULL;
-+ audio_samples_buffer = nullptr;
- }
- #endif
- }
-diff --git a/src/podcast/ffmpeg/UBFFmpegVideoEncoder.h b/src/podcast/ffmpeg/UBFFmpegVideoEncoder.h
-index 1e8a12cfa..14b735064 100644
---- a/src/podcast/ffmpeg/UBFFmpegVideoEncoder.h
-+++ b/src/podcast/ffmpeg/UBFFmpegVideoEncoder.h
-@@ -123,6 +123,7 @@ private slots:
-
- // Video
- // ------------------------------------------
-+ AVCodecContext* mVideoCodecContext;
- QQueue<ImageFrame> mPendingFrames;
- struct SwsContext * mSwsContext;
-
-@@ -133,6 +134,7 @@ private slots:
- bool mShouldRecordAudio;
-
- UBMicrophoneInput * mAudioInput;
-+ AVCodecContext* mAudioCodecContext;
- struct SwrContext * mSwrContext;
- /// Queue for audio that has been rescaled/converted but not encoded yet
- AVAudioFifo *mAudioOutBuffer;
-
-From 347af2a56804100c589766ff20768914d8a04903 Mon Sep 17 00:00:00 2001
-From: letsfindaway <me@letsfindaway.de>
-Date: Thu, 15 Sep 2022 11:55:17 +0200
-Subject: [PATCH 2/2] fix: avoid taking address of initializer list
-
-- FFmpeg example code was used for UBFFmpegVideoEncoder.cpp
-- channel layout was initialized by taking address of an initializer
-- at least for some compilers this fails, as it is an rvalue
-- using an explicit variable avoids this
----
- src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp b/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp
-index 4fd84d740..805ff77e1 100644
---- a/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp
-+++ b/src/podcast/ffmpeg/UBFFmpegVideoEncoder.cpp
-@@ -455,7 +455,8 @@ bool UBFFmpegVideoEncoder::init()
- c->channel_layout = AV_CH_LAYOUT_STEREO;
- c->channels = av_get_channel_layout_nb_channels(c->channel_layout);
- #else
-- av_channel_layout_copy(&c->ch_layout, &(AVChannelLayout)AV_CHANNEL_LAYOUT_STEREO);
-+ AVChannelLayout layout = AV_CHANNEL_LAYOUT_STEREO;
-+ av_channel_layout_copy(&c->ch_layout, &layout);
- #endif
-
- //deprecated on ffmpeg 4
diff --git a/academic/openboard/README b/academic/openboard/README
index 22095c5feb..75711418bc 100644
--- a/academic/openboard/README
+++ b/academic/openboard/README
@@ -2,3 +2,6 @@ OpenBoard is an open source cross-platform teaching software for
interactive whiteboard designed primarily for use in schools and
universities. It can be used both with interactive whiteboards or
in a dual-screen setup with a pen-tablet display and a beamer.
+
+NOTE: Support for Qt6 is available upstream but not yet tested
+by maintainer.
diff --git a/academic/openboard/openboard.SlackBuild b/academic/openboard/openboard.SlackBuild
index 20c00e7ef3..d244896916 100644
--- a/academic/openboard/openboard.SlackBuild
+++ b/academic/openboard/openboard.SlackBuild
@@ -2,7 +2,7 @@
# Slackware build script for openboard
-# Copyright 2021-2022 Willy Sudiarto Raharjo <willysr@slackbuilds.org>
+# Copyright 2021-2023 Willy Sudiarto Raharjo <willysr@slackbuilds.org>
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
@@ -26,9 +26,9 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=openboard
SRCNAM=OpenBoard
-VERSION=${VERSION:-1.6.4}
+VERSION=${VERSION:-1.7.0}
SRCVER=$(echo $VERSION | tr _ -)
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-1}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -50,16 +50,12 @@ OUTPUT=${OUTPUT:-/tmp}
if [ "$ARCH" = "i586" ]; then
SLKCFLAGS="-O2 -march=i586 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "i686" ]; then
SLKCFLAGS="-O2 -march=i686 -mtune=i686"
- LIBDIRSUFFIX=""
elif [ "$ARCH" = "x86_64" ]; then
SLKCFLAGS="-O2"
- LIBDIRSUFFIX="64"
else
SLKCFLAGS="-O2"
- LIBDIRSUFFIX=""
fi
set -e
@@ -87,12 +83,6 @@ sed -i "s|lquazip5|lquazip1-qt5|g" OpenBoard.pro
QUAZIPVER=`pkg-config --modversion quazip1-qt5`
sed -i "s|QuaZip-Qt5-1.1|QuaZip-Qt5-$QUAZIPVER|g" OpenBoard.pro plugins/cffadaptor/UBCFFAdaptor.pro
-# Patch to run in a window
-patch -p1 < $CWD/run-in-a-window.patch
-
-# Patch for newer ffmpeg
-patch -p1 < $CWD/31755fe30cf.patch
-
qmake-qt5 OpenBoard.pro -spec linux-g++
make
@@ -109,6 +99,7 @@ install -D -m 644 $CWD/openboard.desktop $PKG/usr/share/applications/openboard.d
cd $PKG/usr/bin
ln -s /opt/openboard/OpenBoard $PKG/usr/bin/openboard
)
+strip --strip-unneeded /$PKG/opt/openboard/OpenBoard
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
diff --git a/academic/openboard/openboard.info b/academic/openboard/openboard.info
index 68ce0ffad5..20a8614784 100644
--- a/academic/openboard/openboard.info
+++ b/academic/openboard/openboard.info
@@ -1,8 +1,8 @@
PRGNAM="openboard"
-VERSION="1.6.4"
+VERSION="1.7.0"
HOMEPAGE="https://github.com/OpenBoard-org/OpenBoard/"
-DOWNLOAD="https://github.com/OpenBoard-org/OpenBoard/archive/v1.6.4/OpenBoard-1.6.4.tar.gz"
-MD5SUM="6b173b95ac8282a7738445ebc2d5f483"
+DOWNLOAD="https://github.com/OpenBoard-org/OpenBoard/archive/v1.7.0/OpenBoard-1.7.0.tar.gz"
+MD5SUM="8e4b9780efffbd1adca5582fa161fd7e"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="libpaper libass x264 libfdk-aac"
diff --git a/academic/openboard/quazip.patch b/academic/openboard/quazip.patch
index 782fbff72a..6a5cb79865 100644
--- a/academic/openboard/quazip.patch
+++ b/academic/openboard/quazip.patch
@@ -28,15 +28,14 @@
- resources/resources.qrc
\ No newline at end of file
+ resources/resources.qrc
---- OpenBoard-1.6.0a3/OpenBoard.pro.orig 2020-07-20 08:23:09.859918480 +0700
-+++ OpenBoard-1.6.0a3/OpenBoard.pro 2020-07-20 08:23:17.762002419 +0700
-@@ -434,7 +434,7 @@
- #LIBS += -lprofiler
- LIBS += -lX11
- LIBS += -lquazip5
-- INCLUDEPATH += "/usr/include/quazip5"
-+ INCLUDEPATH += "/usr/include/QuaZip-Qt5-1.1/quazip"
+--- OpenBoard-1.7.0/OpenBoard.pro.orig 2023-12-10 12:06:17.808153181 +0700
++++ OpenBoard-1.7.0/OpenBoard.pro 2023-12-10 12:10:09.448432404 +0700
+@@ -470,7 +470,7 @@
+ INCLUDEPATH += "/usr/include/quazip6"
+ } else {
+ LIBS += -lquazip5
+- INCLUDEPATH += "/usr/include/quazip5"
++ INCLUDEPATH += "/usr/include/QuaZip-Qt5-1.1/quazip"
+ }
LIBS += -lpoppler
- INCLUDEPATH += "/usr/include/poppler"
-
diff --git a/academic/openboard/run-in-a-window.patch b/academic/openboard/run-in-a-window.patch
deleted file mode 100644
index 84c9cca3eb..0000000000
--- a/academic/openboard/run-in-a-window.patch
+++ /dev/null
@@ -1,154 +0,0 @@
-Patch for OpenBoard v. 1.6.0a3 by Roberto Puzzanghera roberto.puzzanghera at sagredo.eu
-based on this patch http://webdiis.unizar.es/~spd/openboard/index.html.en
-
-OpenBoard runs in fullscreen mode. This seems to prevent the possibility to be recognized
-by Google meet as an application to share. This patch gets OpenBoard to optionally run in
-a window and solves the issue.
-
-With this patch OB runs in fullscreen mode by default. To run it in a window simply
-adjust this option to true in the config file:
-
-RunInWindow=true
-
-On linux the location of the config file is /opt/openboard/etc/OpenBoard.config. A user
-can override this file acting in local config file ~/.local/share/OpenBoard/OpenBoardUser.config
-
-=============================================================================================
-
-diff -ruN OpenBoard-1.6.0a3-original/OpenBoard.pro OpenBoard-1.6.0a3/OpenBoard.pro
---- OpenBoard-1.6.0a3-original/OpenBoard.pro 2020-05-22 18:40:49.000000000 +0200
-+++ OpenBoard-1.6.0a3/OpenBoard.pro 2020-10-24 10:58:50.421254271 +0200
-@@ -442,6 +442,10 @@
- QMAKE_CFLAGS += -fopenmp
- QMAKE_CXXFLAGS += -fopenmp
- QMAKE_LFLAGS += -fopenmp
-+# RunInWindow patch
-+ # Necessary for CentOS/RHEL and won't harm in other distributions
-+ INCLUDEPATH += /usr/include/ffmpeg
-+# end patch
- UB_LIBRARY.path = $$DESTDIR
- UB_I18N.path = $$DESTDIR/i18n
- UB_ETC.path = $$DESTDIR
-diff -ruN OpenBoard-1.6.0a3-original/resources/etc/OpenBoard.config OpenBoard-1.6.0a3/resources/etc/OpenBoard.config
---- OpenBoard-1.6.0a3-original/resources/etc/OpenBoard.config 2020-05-22 18:40:49.000000000 +0200
-+++ OpenBoard-1.6.0a3/resources/etc/OpenBoard.config 2020-10-24 10:59:50.005263852 +0200
-@@ -14,6 +14,7 @@
- PageCacheSize=20
- PreferredLanguage=fr_CH
- ProductWebAddress=http://www.openboard.ch
-+RunInWindow=false
- SoftwareUpdateURL=http://www.openboard.ch/update.json
- StartMode=
- SwapControlAndDisplayScreens=false
-diff -ruN OpenBoard-1.6.0a3-original/src/core/UBApplication.cpp OpenBoard-1.6.0a3/src/core/UBApplication.cpp
---- OpenBoard-1.6.0a3-original/src/core/UBApplication.cpp 2020-05-22 18:40:49.000000000 +0200
-+++ OpenBoard-1.6.0a3/src/core/UBApplication.cpp 2020-10-24 11:03:09.881941449 +0200
-@@ -277,8 +277,21 @@
- gs->setAttribute(QWebSettings::JavascriptCanAccessClipboard, true);
- gs->setAttribute(QWebSettings::DnsPrefetchEnabled, true);
-
-+ /* RunInWindow patch */
-+ if (UBSettings::settings()->appRunInWindow->get().toBool()) {
-+ mainWindow = new UBMainWindow(0,
-+ Qt::Window |
-+ Qt::WindowCloseButtonHint |
-+ Qt::WindowMinimizeButtonHint |
-+ Qt::WindowMaximizeButtonHint |
-+ Qt::WindowShadeButtonHint
-+ ); // deleted by application destructor
-+ } else {
-+ mainWindow = new UBMainWindow(0, Qt::FramelessWindowHint); // deleted by application destructor
-+ }
-+ /* mainWindow = new UBMainWindow(0, Qt::FramelessWindowHint); // deleted by application destructor */
-+ /* end patch */
-
-- mainWindow = new UBMainWindow(0, Qt::FramelessWindowHint); // deleted by application destructor
- mainWindow->setAttribute(Qt::WA_NativeWindow, true);
-
- mainWindow->actionCopy->setShortcuts(QKeySequence::Copy);
-diff -ruN OpenBoard-1.6.0a3-original/src/core/UBSettings.cpp OpenBoard-1.6.0a3/src/core/UBSettings.cpp
---- OpenBoard-1.6.0a3-original/src/core/UBSettings.cpp 2020-05-22 18:40:49.000000000 +0200
-+++ OpenBoard-1.6.0a3/src/core/UBSettings.cpp 2020-10-24 11:02:43.074387051 +0200
-@@ -265,6 +265,9 @@
- appLookForOpenSankoreInstall = new UBSetting(this, "App", "LookForOpenSankoreInstall", true);
-
- appStartMode = new UBSetting(this, "App", "StartMode", "");
-+ /* RunInWindow patch */
-+ appRunInWindow = new UBSetting(this, "App", "RunInWindow", false);
-+ /* end patch */
-
- featureSliderPosition = new UBSetting(this, "Board", "FeatureSliderPosition", 40);
-
-diff -ruN OpenBoard-1.6.0a3-original/src/core/UBSettings.h OpenBoard-1.6.0a3/src/core/UBSettings.h
---- OpenBoard-1.6.0a3-original/src/core/UBSettings.h 2020-05-22 18:40:49.000000000 +0200
-+++ OpenBoard-1.6.0a3/src/core/UBSettings.h 2020-10-24 11:06:13.206894166 +0200
-@@ -260,7 +260,9 @@
- UBSetting* appHideSwapDisplayScreens;
- UBSetting* appToolBarOrientationVertical;
- UBSetting* appPreferredLanguage;
--
-+ /* RunInWindow patch */
-+ UBSetting* appRunInWindow;
-+ /* end patch */
- UBSetting* appIsInSoftwareUpdateProcess;
-
- UBSetting* appLastSessionDocumentUUID;
-diff -ruN OpenBoard-1.6.0a3-original/src/frameworks/UBPlatformUtils_linux.cpp OpenBoard-1.6.0a3/src/frameworks/UBPlatformUtils_linux.cpp
---- OpenBoard-1.6.0a3-original/src/frameworks/UBPlatformUtils_linux.cpp 2020-05-22 18:40:49.000000000 +0200
-+++ OpenBoard-1.6.0a3/src/frameworks/UBPlatformUtils_linux.cpp 2020-10-24 11:00:43.708371185 +0200
-@@ -36,7 +36,9 @@
- #include <X11/keysym.h>
-
- #include "frameworks/UBFileSystemUtils.h"
--
-+/* RunInWindow patch */
-+#include "core/UBSettings.h"
-+/* end patch */
-
- void UBPlatformUtils::init()
- {
-@@ -439,7 +441,14 @@
-
- void UBPlatformUtils::showFullScreen(QWidget *pWidget)
- {
-- pWidget->showFullScreen();
-+ /* RunInWindow patch */
-+ /* pWidget->showFullScreen(); */
-+ if (UBSettings::settings()->appRunInWindow->get().toBool()) {
-+ pWidget->showNormal();
-+ } else {
-+ pWidget->showFullScreen();
-+ }
-+ /* end patch */
- }
-
- void UBPlatformUtils::showOSK(bool show)
-diff -ruN OpenBoard-1.6.0a3-original/src/frameworks/UBPlatformUtils_win.cpp OpenBoard-1.6.0a3/src/frameworks/UBPlatformUtils_win.cpp
---- OpenBoard-1.6.0a3-original/src/frameworks/UBPlatformUtils_win.cpp 2020-05-22 18:40:49.000000000 +0200
-+++ OpenBoard-1.6.0a3/src/frameworks/UBPlatformUtils_win.cpp 2020-10-24 11:01:26.170665369 +0200
-@@ -36,6 +36,9 @@
-
- #include "frameworks/UBFileSystemUtils.h"
- #include "core/memcheck.h"
-+/* RunInWindow patch */
-+#include "core/UBSettings.h"
-+/* end patch */
-
- void UBPlatformUtils::init()
- {
-@@ -436,7 +439,14 @@
-
- void UBPlatformUtils::showFullScreen(QWidget *pWidget)
- {
-- pWidget->showFullScreen();
-+ /* RunInWindow patch */
-+ /* pWidget->showFullScreen(); */
-+ if (UBSettings::settings()->appRunInWindow->get().toBool()) {
-+ pWidget->showNormal();
-+ } else {
-+ pWidget->showFullScreen();
-+ }
-+ /* end patch */
- }
-
- void UBPlatformUtils::showOSK(bool show)