diff options
author | Craig Andrews <candrews@gentoo.org> | 2018-11-05 17:31:07 -0500 |
---|---|---|
committer | Craig Andrews <candrews@gentoo.org> | 2018-11-05 20:21:12 -0500 |
commit | 7a68ee9a58da8eeb0b000636b7aaf036b56f1788 (patch) | |
tree | b22f82055e4663e40d6f481454a259ab73ce9dd5 /media-video/webcamoid | |
parent | media-video/ffmpeg: 4.0.3 version bump (diff) | |
download | gentoo-7a68ee9a58da8eeb0b000636b7aaf036b56f1788.tar.gz gentoo-7a68ee9a58da8eeb0b000636b7aaf036b56f1788.tar.bz2 gentoo-7a68ee9a58da8eeb0b000636b7aaf036b56f1788.zip |
media-video/webcamoid: Compatibility with ffmpeg 4
Closes: https://bugs.gentoo.org/665558
Package-Manager: Portage-2.3.51, Repoman-2.3.12
Signed-off-by: Craig Andrews <candrews@gentoo.org>
Diffstat (limited to 'media-video/webcamoid')
-rw-r--r-- | media-video/webcamoid/files/webcamoid-8.1.0-ffmpeg-4.patch | 169 | ||||
-rw-r--r-- | media-video/webcamoid/webcamoid-8.1.0.ebuild | 4 |
2 files changed, 172 insertions, 1 deletions
diff --git a/media-video/webcamoid/files/webcamoid-8.1.0-ffmpeg-4.patch b/media-video/webcamoid/files/webcamoid-8.1.0-ffmpeg-4.patch new file mode 100644 index 000000000000..005d45255d32 --- /dev/null +++ b/media-video/webcamoid/files/webcamoid-8.1.0-ffmpeg-4.patch @@ -0,0 +1,169 @@ +Description: Patch to build with FFmpeg 4.0 + https://github.com/webcamoid/webcamoid/pull/119/ + commits/52fbf8376085aded2d87397be58cda6e209d3bb7 +Author: https://github.com/webcamoid/webcamoid/commits?author=jbeich +Reviewed-By: Herbert Parentes Fortes Neto <hpfn@debian.org> +Last-Update: 2018-07-21 +Index: webcamoid/libAvKys/Plugins/MultiSink/src/ffmpeg/src/abstractstream.cpp +=================================================================== +--- webcamoid.orig/libAvKys/Plugins/MultiSink/src/ffmpeg/src/abstractstream.cpp ++++ webcamoid/libAvKys/Plugins/MultiSink/src/ffmpeg/src/abstractstream.cpp +@@ -62,7 +62,7 @@ AbstractStream::AbstractStream(const AVF + + // Some formats want stream headers to be separate. + if (formatContext->oformat->flags & AVFMT_GLOBALHEADER) +- this->m_codecContext->flags |= CODEC_FLAG_GLOBAL_HEADER; ++ this->m_codecContext->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; + + this->m_codecContext->strict_std_compliance = CODEC_COMPLIANCE; + +Index: webcamoid/libAvKys/Plugins/MultiSink/src/ffmpeg/src/abstractstream.h +=================================================================== +--- webcamoid.orig/libAvKys/Plugins/MultiSink/src/ffmpeg/src/abstractstream.h ++++ webcamoid/libAvKys/Plugins/MultiSink/src/ffmpeg/src/abstractstream.h +@@ -29,6 +29,15 @@ extern "C" + { + #include <libavformat/avformat.h> + #include <libavcodec/avcodec.h> ++ #ifndef AV_CODEC_CAP_EXPERIMENTAL ++ #define AV_CODEC_CAP_EXPERIMENTAL CODEC_CAP_EXPERIMENTAL ++ #endif ++ #ifndef AV_CODEC_CAP_VARIABLE_FRAME_SIZE ++ #define AV_CODEC_CAP_VARIABLE_FRAME_SIZE CODEC_CAP_VARIABLE_FRAME_SIZE ++ #endif ++ #ifndef AV_CODEC_FLAG_GLOBAL_HEADER ++ #define AV_CODEC_FLAG_GLOBAL_HEADER CODEC_FLAG_GLOBAL_HEADER ++ #endif + } + + #define CODEC_COMPLIANCE FF_COMPLIANCE_VERY_STRICT +Index: webcamoid/libAvKys/Plugins/MultiSink/src/ffmpeg/src/audiostream.cpp +=================================================================== +--- webcamoid.orig/libAvKys/Plugins/MultiSink/src/ffmpeg/src/audiostream.cpp ++++ webcamoid/libAvKys/Plugins/MultiSink/src/ffmpeg/src/audiostream.cpp +@@ -267,7 +267,7 @@ void AudioStream::convertPacket(const Ak + this->deleteFrame(&this->m_frame); + this->m_frame = oFrame; + +- if (codecContext->codec->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE ++ if (codecContext->codec->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE + || oFrame->nb_samples >= codecContext->frame_size) { + this->m_frameReady.wakeAll(); + } +@@ -280,7 +280,7 @@ int AudioStream::encodeData(AVFrame *fra + auto codecContext = this->codecContext(); + + if (!frame +- && codecContext->codec->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE) ++ && codecContext->codec->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE) + return AVERROR_EOF; + + if (frame) { +@@ -366,7 +366,7 @@ AVFrame *AudioStream::dequeueFrame() + this->m_frameMutex.lock(); + + if (!this->m_frame +- || (!(codecContext->codec->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE) ++ || (!(codecContext->codec->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE) + && this->m_frame->nb_samples < codecContext->frame_size)) { + if (!this->m_frameReady.wait(&this->m_frameMutex, THREAD_WAIT_LIMIT)) { + this->m_frameMutex.unlock(); +@@ -377,7 +377,7 @@ AVFrame *AudioStream::dequeueFrame() + + AVFrame *oFrame = nullptr; + +- if (codecContext->codec->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE ++ if (codecContext->codec->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE + || this->m_frame->nb_samples == codecContext->frame_size) { + oFrame = this->m_frame; + this->m_frame = nullptr; +Index: webcamoid/libAvKys/Plugins/MultiSink/src/ffmpeg/src/videostream.cpp +=================================================================== +--- webcamoid.orig/libAvKys/Plugins/MultiSink/src/ffmpeg/src/videostream.cpp ++++ webcamoid/libAvKys/Plugins/MultiSink/src/ffmpeg/src/videostream.cpp +@@ -273,8 +273,10 @@ int VideoStream::encodeData(AVFrame *fra + { + auto formatContext = this->formatContext(); + ++#ifdef AVFMT_RAWPICTURE + if (!frame && formatContext->oformat->flags & AVFMT_RAWPICTURE) + return AVERROR_EOF; ++#endif + + auto codecContext = this->codecContext(); + +@@ -300,6 +302,7 @@ int VideoStream::encodeData(AVFrame *fra + + auto stream = this->stream(); + ++#ifdef AVFMT_RAWPICTURE + if (formatContext->oformat->flags & AVFMT_RAWPICTURE) { + // Raw video case - directly store the picture in the packet + AVPacket pkt; +@@ -315,6 +318,7 @@ int VideoStream::encodeData(AVFrame *fra + + return 0; + } ++#endif + + // encode the image + #ifdef HAVE_SENDRECV +Index: webcamoid/libAvKys/Plugins/MultiSrc/src/ffmpeg/src/abstractstream.cpp +=================================================================== +--- webcamoid.orig/libAvKys/Plugins/MultiSrc/src/ffmpeg/src/abstractstream.cpp ++++ webcamoid/libAvKys/Plugins/MultiSrc/src/ffmpeg/src/abstractstream.cpp +@@ -96,8 +96,10 @@ AbstractStream::AbstractStream(const AVF + this->m_codecContext->idct_algo = FF_IDCT_AUTO; + this->m_codecContext->error_concealment = FF_EC_GUESS_MVS | FF_EC_DEBLOCK; + ++#ifdef CODEC_FLAG_EMU_EDGE + if (this->m_codec->capabilities & CODEC_CAP_DR1) + this->m_codecContext->flags |= CODEC_FLAG_EMU_EDGE; ++#endif + + av_dict_set(&this->m_codecOptions, "refcounted_frames", "0", 0); + } +Index: webcamoid/libAvKys/Plugins/VideoCapture/src/ffmpeg/src/convertvideoffmpeg.cpp +=================================================================== +--- webcamoid.orig/libAvKys/Plugins/VideoCapture/src/ffmpeg/src/convertvideoffmpeg.cpp ++++ webcamoid/libAvKys/Plugins/VideoCapture/src/ffmpeg/src/convertvideoffmpeg.cpp +@@ -19,6 +19,10 @@ + + #include <QMetaEnum> + ++#ifndef AV_CODEC_FLAG_TRUNCATED ++#define AV_CODEC_FLAG_TRUNCATED CODEC_FLAG_TRUNCATED ++#endif ++ + #include "convertvideoffmpeg.h" + + #define THREAD_WAIT_LIMIT 500 +@@ -219,11 +223,13 @@ bool ConvertVideoFFmpeg::init(const AkCa + if (!this->m_codecContext) + return false; + +- if (codec->capabilities & CODEC_CAP_TRUNCATED) +- this->m_codecContext->flags |= CODEC_FLAG_TRUNCATED; ++ if (codec->capabilities & AV_CODEC_CAP_TRUNCATED) ++ this->m_codecContext->flags |= AV_CODEC_FLAG_TRUNCATED; + ++#ifdef CODEC_FLAG_EMU_EDGE + if (codec->capabilities & CODEC_CAP_DR1) + this->m_codecContext->flags |= CODEC_FLAG_EMU_EDGE; ++#endif + + this->m_codecContext->pix_fmt = rawToFF->value(fourcc, AV_PIX_FMT_NONE); + this->m_codecContext->width = caps.property("width").toInt(); +Index: webcamoid/libAvKys/Plugins/MultiSink/src/ffmpeg/src/mediawriterffmpeg.cpp +=================================================================== +--- webcamoid.orig/libAvKys/Plugins/MultiSink/src/ffmpeg/src/mediawriterffmpeg.cpp ++++ webcamoid/libAvKys/Plugins/MultiSink/src/ffmpeg/src/mediawriterffmpeg.cpp +@@ -251,7 +251,7 @@ class MediaWriterFFmpegGlobal + AVCodec *codec = nullptr; + + while ((codec = av_codec_next(codec))) { +- if (codec->capabilities & CODEC_CAP_EXPERIMENTAL ++ if (codec->capabilities & AV_CODEC_CAP_EXPERIMENTAL + && CODEC_COMPLIANCE > FF_COMPLIANCE_EXPERIMENTAL) + continue; + diff --git a/media-video/webcamoid/webcamoid-8.1.0.ebuild b/media-video/webcamoid/webcamoid-8.1.0.ebuild index 50eb5018b024..0069489ecf2d 100644 --- a/media-video/webcamoid/webcamoid-8.1.0.ebuild +++ b/media-video/webcamoid/webcamoid-8.1.0.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2017 Gentoo Foundation +# Copyright 1999-2018 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=6 @@ -50,6 +50,8 @@ DEPEND="${RDEPEND} virtual/pkgconfig " +PATCHES=( "${FILESDIR}/${P}-ffmpeg-4.patch" ) + src_prepare() { local tsdir="${S}/StandAlone/share/ts" local mylrelease="$(qt5_get_bindir)"/lrelease |