Index: multimedia/Makefile =================================================================== --- multimedia/Makefile +++ multimedia/Makefile @@ -443,6 +443,7 @@ SUBDIR += vtkmpeg2encode SUBDIR += w_scan SUBDIR += webcamd + SUBDIR += webcamoid SUBDIR += webvfx-qt5 SUBDIR += win32-codecs SUBDIR += winff Index: multimedia/webcamoid/Makefile =================================================================== --- /dev/null +++ multimedia/webcamoid/Makefile @@ -0,0 +1,30 @@ +# $FreeBSD$ + +PORTNAME= webcamoid +DISTVERSION= 8.1.0 +CATEGORIES= multimedia + +MAINTAINER= yuri@FreeBSD.org +COMMENT= Full featured webcam suite + +LICENSE= GPLv3 +LICENSE_FILE= ${WRKSRC}/COPYING + +LIB_DEPENDS= libasound.so:audio/alsa-lib \ + libavcodec.so:multimedia/ffmpeg \ + libjack.so:audio/jack \ + libpulse.so:audio/pulseaudio \ + libv4l2.so:multimedia/libv4l + +USES= pkgconfig qmake +USE_GITHUB= yes +USE_GNOME= glib20 +USE_GSTREAMER1= yes +USE_GL= gl +USE_QT5= concurrent core gui multimedia network opengl qml quick svg widgets buildtools_build + +MAKE_ENV= NOOSS=1 # NOOSS is because the OSS module attempts to use kevent on OSS devices, which is broken in the base +QMAKE_ARGS= INSTALLQMLDIR=${QT_QMLDIR} # a better patch is rejected by the upstream: https://github.com/webcamoid/webcamoid/pull/103 +QMAKE_ARGS+= MANDIR=${PREFIX}/man + +.include Index: multimedia/webcamoid/distinfo =================================================================== --- /dev/null +++ multimedia/webcamoid/distinfo @@ -0,0 +1,3 @@ +TIMESTAMP = 1512092375 +SHA256 (webcamoid-webcamoid-8.1.0_GH0.tar.gz) = 2e51731c36a86a4b3e323c11000a04b7ce06b5d228519676f4070e44e2a62947 +SIZE (webcamoid-webcamoid-8.1.0_GH0.tar.gz) = 10062681 Index: multimedia/webcamoid/files/patch-libAvKys_Plugins_MultiSrc_src_multisrcelement.cpp =================================================================== --- /dev/null +++ multimedia/webcamoid/files/patch-libAvKys_Plugins_MultiSrc_src_multisrcelement.cpp @@ -0,0 +1,21 @@ +--- libAvKys/Plugins/MultiSrc/src/multisrcelement.cpp.orig 2017-10-09 06:45:30 UTC ++++ libAvKys/Plugins/MultiSrc/src/multisrcelement.cpp +@@ -201,9 +201,15 @@ void MultiSrcElement::codecLibUpdated(co + auto state = this->state(); + this->setState(AkElement::ElementStateNull); + +- auto media = this->m_mediaSource->media(); +- auto loop = this->m_mediaSource->loop(); +- auto showLog = this->m_mediaSource->showLog(); ++ // crashes with these lines: https://github.com/webcamoid/webcamoid/issues/100 ++ // auto media = this->m_mediaSource->media(); ++ // auto loop = this->m_mediaSource->loop(); ++ // auto showLog = this->m_mediaSource->showLog(); ++ ++ // workaround for the crash ++ QString media; ++ bool loop = true; ++ bool showLog = true; + + this->m_mutexLib.lock(); + Index: multimedia/webcamoid/files/patch-libAvKys_Plugins_VideoCapture_src_v4l2sys_src_capturev4l2.cpp =================================================================== --- /dev/null +++ multimedia/webcamoid/files/patch-libAvKys_Plugins_VideoCapture_src_v4l2sys_src_capturev4l2.cpp @@ -0,0 +1,53 @@ +--- libAvKys/Plugins/VideoCapture/src/v4l2sys/src/capturev4l2.cpp.orig 2017-10-09 06:45:30 UTC ++++ libAvKys/Plugins/VideoCapture/src/v4l2sys/src/capturev4l2.cpp +@@ -60,12 +60,15 @@ inline IoMethodMap initIoMethodMap() + + Q_GLOBAL_STATIC_WITH_ARGS(IoMethodMap, ioMethodToStr, (initIoMethodMap())) + ++#define FREEBSD_BUG224011_VIDEO0 ++ + CaptureV4L2::CaptureV4L2(QObject *parent): + Capture(parent) + { + this->m_id = -1; + this->m_ioMethod = IoMethodUnknown; + this->m_nBuffers = 32; ++#if !defined(FREEBSD_BUG224011_VIDEO0) + this->m_fsWatcher = new QFileSystemWatcher({"/dev"}, this); + + QObject::connect(this->m_fsWatcher, +@@ -76,13 +79,15 @@ CaptureV4L2::CaptureV4L2(QObject *parent + &QFileSystemWatcher::fileChanged, + this, + &CaptureV4L2::onFileChanged); +- ++#endif + this->updateDevices(); + } + + CaptureV4L2::~CaptureV4L2() + { ++#if !defined(FREEBSD_BUG224011_VIDEO0) + delete this->m_fsWatcher; ++#endif + } + + QStringList CaptureV4L2::webcams() const +@@ -1176,13 +1181,16 @@ void CaptureV4L2::updateDevices() + this->m_cameraControls = cameraControls; + + if (this->m_devices != devices) { ++#if !defined(FREEBSD_BUG224011_VIDEO0) + if (!this->m_devices.isEmpty()) + this->m_fsWatcher->removePaths(this->m_devices); +- ++#endif + this->m_devices = devices; + ++#if !defined(FREEBSD_BUG224011_VIDEO0) + if (!this->m_devices.isEmpty()) + this->m_fsWatcher->addPaths(this->m_devices); ++#endif + + emit this->webcamsChanged(this->m_devices); + } Index: multimedia/webcamoid/pkg-descr =================================================================== --- /dev/null +++ multimedia/webcamoid/pkg-descr @@ -0,0 +1,17 @@ +Webcamoid is a full featured and multiplatform webcam suite. + +Features: +* Cross-platform (GNU/Linux, Mac, Windows) +* Take pictures and record videos with the webcam. +* Manages multiple webcams. +* Written in C++ and Qt. +* Custom controls for each webcam. +* Add funny effects to the webcam. +* +60 effects available. +* Translated to many languages. +* Use custom network and local files as capture devices. +* Capture from desktop. +* Many recording formats. +* Virtual webcam support for feeding other programs. + +WWW: https://webcamoid.github.io Index: multimedia/webcamoid/pkg-plist =================================================================== --- /dev/null +++ multimedia/webcamoid/pkg-plist @@ -0,0 +1,98 @@ +bin/webcamoid +lib/avkys/libACapsConvert.so +lib/avkys/libAging.so +lib/avkys/libAudioDevice.so +lib/avkys/libAudioGen.so +lib/avkys/libBin.so +lib/avkys/libBlur.so +lib/avkys/libCartoon.so +lib/avkys/libChangeHSL.so +lib/avkys/libCharify.so +lib/avkys/libCinema.so +lib/avkys/libColorFilter.so +lib/avkys/libColorReplace.so +lib/avkys/libColorTap.so +lib/avkys/libColorTransform.so +lib/avkys/libConvolve.so +lib/avkys/libDelayGrab.so +lib/avkys/libDenoise.so +lib/avkys/libDesktopCapture.so +lib/avkys/libDice.so +lib/avkys/libDistort.so +lib/avkys/libDizzy.so +lib/avkys/libEdge.so +lib/avkys/libEmboss.so +lib/avkys/libEqualize.so +lib/avkys/libFaceDetect.so +lib/avkys/libFalseColor.so +lib/avkys/libFire.so +lib/avkys/libFrameOverlap.so +lib/avkys/libGrayScale.so +lib/avkys/libHalftone.so +lib/avkys/libHypnotic.so +lib/avkys/libImplode.so +lib/avkys/libInvert.so +lib/avkys/libLife.so +lib/avkys/libMatrix.so +lib/avkys/libMatrixTransform.so +lib/avkys/libMultiSink.so +lib/avkys/libMultiSrc.so +lib/avkys/libMultiplex.so +lib/avkys/libNervous.so +lib/avkys/libNormalize.so +lib/avkys/libOilPaint.so +lib/avkys/libPhotocopy.so +lib/avkys/libPixelate.so +lib/avkys/libPrimariesColors.so +lib/avkys/libProbe.so +lib/avkys/libQuark.so +lib/avkys/libRadioactive.so +lib/avkys/libRipple.so +lib/avkys/libScanLines.so +lib/avkys/libScroll.so +lib/avkys/libShagadelic.so +lib/avkys/libSwirl.so +lib/avkys/libTemperature.so +lib/avkys/libVideoCapture.so +lib/avkys/libVignette.so +lib/avkys/libVirtualCamera.so +lib/avkys/libWarhol.so +lib/avkys/libWarp.so +lib/avkys/libWave.so +lib/avkys/submodules/ACapsConvert/libffmpegav.so +lib/avkys/submodules/ACapsConvert/libffmpegsw.so +lib/avkys/submodules/AudioDevice/libalsa.so +lib/avkys/submodules/AudioDevice/libjack.so +lib/avkys/submodules/AudioDevice/liboss.so +lib/avkys/submodules/AudioDevice/libpulseaudio.so +lib/avkys/submodules/AudioDevice/libqtaudio.so +lib/avkys/submodules/DesktopCapture/libqtscreen.so +lib/avkys/submodules/MultiSink/libffmpeg.so +lib/avkys/submodules/MultiSink/libgstreamer.so +lib/avkys/submodules/MultiSrc/libffmpeg.so +lib/avkys/submodules/MultiSrc/libgstreamer.so +lib/avkys/submodules/VideoCapture/libffmpeg.so +lib/avkys/submodules/VideoCapture/libgstreamer.so +lib/avkys/submodules/VideoCapture/libv4l2sys.so +lib/avkys/submodules/VideoCapture/libv4lutils.so +lib/avkys/submodules/VirtualCamera/libffmpeg.so +lib/avkys/submodules/VirtualCamera/libgstreamer.so +lib/avkys/submodules/VirtualCamera/libv4l2sys.so +lib/avkys/submodules/VirtualCamera/libv4lutils.so +lib/libavkys.so +lib/libavkys.so.8 +lib/libavkys.so.8.1 +lib/libavkys.so.8.1.0 +%%QT_QMLDIR%%/AkQml/libAkQml.so +%%QT_QMLDIR%%/AkQml/qmldir +man/man1/webcamoid.1.gz +share/applications/webcamoid.desktop +share/icons/hicolor/128x128/apps/webcamoid.png +share/icons/hicolor/16x16/apps/webcamoid.png +share/icons/hicolor/22x22/apps/webcamoid.png +share/icons/hicolor/256x256/apps/webcamoid.png +share/icons/hicolor/32x32/apps/webcamoid.png +share/icons/hicolor/48x48/apps/webcamoid.png +share/icons/hicolor/64x64/apps/webcamoid.png +share/icons/hicolor/8x8/apps/webcamoid.png +share/icons/hicolor/scalable/apps/webcamoid.svg